The Economics of Programming Languages (2005)(welton.it)
welton.it
The Economics of Programming Languages (2005)
https://www.welton.it/articles/programming_language_economics.html
25 comments
I think that #1 leads directly to #2 and #3. If you have the funding, you can pay people to work full-time on creating the library and the documentation. Without the funding, those things come very slowly.
And it's not just Rust and Go. Java was an earlier example.
And it's not just Rust and Go. Java was an earlier example.
While Java was obviously well funded, its early focus was definitely on marketing and making lots of new features even though the existing features were very buggy..
It was very weird fighting against the buggy standard library while hearing the marketing BS at the same time.
It was very weird fighting against the buggy standard library while hearing the marketing BS at the same time.
You gave me a serious case of deja vu when I read your post. But then I realized you posted the same thing 10 days ago and I must have just read it then and I had completely forgotten. That was a really weird experience.
I added the bit about building a community as an addition to my original comment :-)
I saw a keynote by Bill Dally when he was promoting the then-new CUDA framework/language. His message was that if you want a new language to be adopted it needs to do something (something reasonably important) 10x better than the competition. Even 2x better is not enough to motivate the disruption of changing languages.
The Julia programming language is an interesting example of a language addressing a niche. It originally focused on scientific computing - the ease of a scripting language (like Python) and the speed of a C or C++ program.
More recently, Julia promotes itself as a general-purpose language suitable for non-scientific domains too. However, the association with scientifc computing remains strong. It's too early to say if that perception among developers will change over time.
More recently, Julia promotes itself as a general-purpose language suitable for non-scientific domains too. However, the association with scientifc computing remains strong. It's too early to say if that perception among developers will change over time.
Julia is one of those products that is not only 10x better in one dimension, but is also at least marginally better in most other dimensions compared to Matlab. I think they have a bright future.
Julia is lucky because they are targeting not just a niche but a userbase that has been amassed already. Really what they're doing is directly taking on Matlab it seems, where Matlab users have gotten frustrated with how stale and expensive the language is. Julia has the fortunate task of convincing unsatisfied people who are paying a shit ton of money for an inferior product to try a superior product for free.
Julia is lucky because they are targeting not just a niche but a userbase that has been amassed already. Really what they're doing is directly taking on Matlab it seems, where Matlab users have gotten frustrated with how stale and expensive the language is. Julia has the fortunate task of convincing unsatisfied people who are paying a shit ton of money for an inferior product to try a superior product for free.
> More recently, Julia promotes itself as a general-purpose language suitable for non-scientific domains too.
Julia looks cool, but I do mostly web development, and I don't see how I would benefit from it.
Julia looks cool, but I do mostly web development, and I don't see how I would benefit from it.
Even this doesn't really capture how much better it has to be, because there are so many dimensions to a PL. You have to not only be 10x better than the competition in some dimension, but you also have to be competitive in all other dimensions.
Let's say your language X is 10x faster than language P. Or it compiles 10x faster. Or you can write programs 10x faster. That's not enough. You also need:
- a complete compiler and debugger toolchain
- a complete language server implementation, and language modes for all popular IDEs
- a package manager with a large package ecosystem
- a community with live chat support and a Stack Overflow presence
- robust documentation with copious examples, tutorials, guides, and technical info. These days even a multi-hundred page book with professional editing available for free is expected.
- you have to be responsive to bugs and provide patches promptly
- your language is expected to have undergone a full independent security audit, and to be up-to-date on the latest security issues
- you have to manage the community and deal with petty interpersonal conflicts or else word gets out that your language has a "toxic community"
- support for all major operating systems and hardware architectures
- support for the web through wasm, so you need experts at that as well as x86 and ARM platforms now.
- And on top of all that, your project needs to be completely open source, with a free and open license that permits royalty free, patent free, commercial use. Oh, and your users both corporate and personal expect your work to be completely free as in beer. They won't pay anything for it. Not even a dollar. And if you ask them to pay something they don't weigh the value of your product versus the competition, they balk immediately and don't even consider it. It's been a non-starter to ask for money for a PL for decades.
So even if your language is 10x better in some way, it's not going to be 10x better in all ways. In fact, it needs to be at least as competitive as other languages in the above (and many other) dimensions to gain traction outside of enthusiasts. This is why it's so hard to gain traction in the PL field, and why most of the top new languages to emerge over the last decade or so (Rust, Go, Swift) came from patrons with deep pockets. The only exception I can think of is Zig, and even that's in a minor league compared to the ones listed.
Let's say your language X is 10x faster than language P. Or it compiles 10x faster. Or you can write programs 10x faster. That's not enough. You also need:
- a complete compiler and debugger toolchain
- a complete language server implementation, and language modes for all popular IDEs
- a package manager with a large package ecosystem
- a community with live chat support and a Stack Overflow presence
- robust documentation with copious examples, tutorials, guides, and technical info. These days even a multi-hundred page book with professional editing available for free is expected.
- you have to be responsive to bugs and provide patches promptly
- your language is expected to have undergone a full independent security audit, and to be up-to-date on the latest security issues
- you have to manage the community and deal with petty interpersonal conflicts or else word gets out that your language has a "toxic community"
- support for all major operating systems and hardware architectures
- support for the web through wasm, so you need experts at that as well as x86 and ARM platforms now.
- And on top of all that, your project needs to be completely open source, with a free and open license that permits royalty free, patent free, commercial use. Oh, and your users both corporate and personal expect your work to be completely free as in beer. They won't pay anything for it. Not even a dollar. And if you ask them to pay something they don't weigh the value of your product versus the competition, they balk immediately and don't even consider it. It's been a non-starter to ask for money for a PL for decades.
So even if your language is 10x better in some way, it's not going to be 10x better in all ways. In fact, it needs to be at least as competitive as other languages in the above (and many other) dimensions to gain traction outside of enthusiasts. This is why it's so hard to gain traction in the PL field, and why most of the top new languages to emerge over the last decade or so (Rust, Go, Swift) came from patrons with deep pockets. The only exception I can think of is Zig, and even that's in a minor league compared to the ones listed.
And that should be a single visible something that has 10x improvement. 1.1^25 exceeds 10, but a new language (or really anything) that is 10% better in 25 different aspects probably wouldn't make the cut.
The 10X rule of thumb holds in many areas where you have to overcome existing sunk cost, large market inertia, or a network effect.
I’d say it also holds for operating systems, network protocols, core tooling, etc.
The thing improved 10X might vary though, and for any niche there may be more than one thing that can be improved. Linux for instance displaced Windows NT by being both cheaper (technically free) and radically more flexible.
I’d say it also holds for operating systems, network protocols, core tooling, etc.
The thing improved 10X might vary though, and for any niche there may be more than one thing that can be improved. Linux for instance displaced Windows NT by being both cheaper (technically free) and radically more flexible.
I wonder if this metric would be expressed as 12x better if we'd had 6 fingers.
Not that it matters, just idle mindless rumination.
Not that it matters, just idle mindless rumination.
It would probably still be written "10x", just in base-twelve!
With the help from IBM, Dell and Oracle's money.
And even it now sees competition from other POSIX platforms for IoT, with more business friendly licensing.
It isn't going away, but now there is more free beer alternatives for UNIX folks that don't want GPL kernels.
And even it now sees competition from other POSIX platforms for IoT, with more business friendly licensing.
It isn't going away, but now there is more free beer alternatives for UNIX folks that don't want GPL kernels.
I think the ideas hold up pretty well there even if I wrote that a while back. The same economic factors are still in play.
I wonder how many languages that got significant traction did not follow the pattern of being successful in a niche, then riding on the coattails of that niche booming.
Any language that had an institutional patron would be a good candidate for this category of language. e.g. I don't think we would say Go targeted a niche and then got big by that. Go was promoted heavily by Google, and that's why people took interest.
Docker and Kubernetes basically.
Many forget the fact that the distributed operating system of the cloud has been written in Go. As much as I love C, I know its limitations and I hope it will be replaced by Zig some day, or by a simple language akin to the philosophy of Niklaus Wirth, Robin Milner, Rob Pike, Ken Thompson and Leslie Lamport. Even Java and TypeScript are getting too big for my taste and they have been my main languages for the past 3 years.
Ironically Kubernetes started as Java and was re-written in Go, as some Go enthusiastic devs joined the team and pushed for a rewrite.
How successful Kubernetes would have been if the rewrite had not taken place belongs to what-if guessing.
How successful Kubernetes would have been if the rewrite had not taken place belongs to what-if guessing.
Indeed, that's fair, I'm not sure if Java would have been the right choice in the case of cloud infrastructure. I mean, at the application level I would always pick Java over Go for something like a distributed analytics engine, streaming or just swarms of microservices. Our new smart traffic simulation system is written in Java with the client in TypeScript. But the infrastructure it's all Terraform and Go utilities. It's a rewrite of an old system which was in C++ with Lua embedded. Maybe today GraalVM with native image fixed some of the issues, plus Valhalla will make it even better but that's still a long way to go.
Progamming languages have network effects too.
Correct! Is it not fair to say that Python was at least initially popularized by the perception (right or wrong) that its syntax made it easier to learn? From there it rapidly spread (network effects) within the community of educators and learners and then outwards into the education adjacent field of scientific computing.
I see perception and network effects having at least initially a stronger factor in Python’s popularity than any particular technical advantage.
I see perception and network effects having at least initially a stronger factor in Python’s popularity than any particular technical advantage.
Back in 2000, there was Zope, and Python was slowly being eyed as a saner alternative to Perl.
That is where it got its first wave of users.
That is where it got its first wave of users.
1. Funding or sponsorship for the language
Would Rust or Go have enjoyed their popularity without the support of Mozilla and Google? One of the reasons developers are drawn to those languages is their association with Mozilla and Google. (Although Rust is independent of Mozilla, its long association with Mozilla is what initially drew developer interest.)
Without a generous benefactor, open source languages have to scrape funding together piecemeal from different sources - just look at Nim and Crystal.
2. A "Batteries included" standard library
Or at least a sufficiently rich library that lets developers create a wide range of applications. This is tied to point 1 above: developers are needed to help fill out the standard library - feasible with funding, slow to achieve without.
3. Documentation, examples and tutorials
Developers underestimate how important this is for people new to the language. While some developers will patiently work through a problem with incomplete documentation or guides, many more will simply give up in frustration and abandon the language.
Once again, it comes down to funding. Rust and Go have had (or still have) dedicated staff writing documentation for the language. This is a luxury that other languages like Nim or Crystal cannot fund or afford.
4. Building a community
Zig is some time away from a 1.0 release but already has a VP of community, and Crystal are planning to hire a Community Manager. This is an acknowledgement of the importance of growing the developer community in each language - a dedicated person helps promote and evangelise the language.
A programming language can survive without meeting any of the factors above. But can it thrive or gain traction?