> is the programming language something that even matters?
It absolutely does. I think one of the major reasons that all these massive software companies grind to a halt with innovation is because of bad software architecture and a bad choice of programming language contributes to that. Also underlying systems built in non-performant languages hobble the company for years.
It's complete delusion that a company will rewrite systems as they gain product market fit.
I have a strong list of requirements but there is no perfect language today. For general software any language I start a project with today must have
1. Fast iteration / compilation times
2. null safety
3. Some form of algebraic data types (and by implication a static type system)
4. Garbage collection (unless the domain specifically requires the performance benefits gained from forgoing a garbage collector).
5. A robust standard library and package ecosystem.
All of the above contribute to two very important things:
1. The ability to iterate quickly.
2. The ability to describe state in such a way that invalid states become impossible to represent due to the type checker.
Nice to have productivity boosters:
1. Actual value types
2. Pattern matching.
3. A good class system with traits or interfaces.
There isn't a perfect language that meets these requirements so there will always be tradeoffs with language choice.
> I think one of the major reasons that all these massive software companies grind to a halt with innovation is because of bad software architecture and a bad choice of programming language contributes to that.
I see social structures having far more influence on architecture than any underlying technical details so I feel your thesis is built on false premise
> I see social structures having far more influence [...]
I don't know. If that were true, then we as a society would just architect our C/C++ based projects such that we don't bump into memory safety issues. Instead we see something like 70% of security issues coming from memory unsafety across the board.
The premise seems legit when thinking about it in terms of the issues with C.
It absolutely does. I think one of the major reasons that all these massive software companies grind to a halt with innovation is because of bad software architecture and a bad choice of programming language contributes to that. Also underlying systems built in non-performant languages hobble the company for years. It's complete delusion that a company will rewrite systems as they gain product market fit.
I have a strong list of requirements but there is no perfect language today. For general software any language I start a project with today must have
1. Fast iteration / compilation times
2. null safety
3. Some form of algebraic data types (and by implication a static type system)
4. Garbage collection (unless the domain specifically requires the performance benefits gained from forgoing a garbage collector).
5. A robust standard library and package ecosystem.
All of the above contribute to two very important things:
1. The ability to iterate quickly.
2. The ability to describe state in such a way that invalid states become impossible to represent due to the type checker.
Nice to have productivity boosters:
1. Actual value types
2. Pattern matching.
3. A good class system with traits or interfaces.
There isn't a perfect language that meets these requirements so there will always be tradeoffs with language choice.