Where are programming languages created? A zoomable map(pldb.io)
pldb.io
Where are programming languages created? A zoomable map
https://pldb.io/blog/whereInnovation.html
71 comments
At the same time it misses Russia's Kotlin.
While Kotlin is a Russian island the Kotlin programming language was created by JetBrains which is a Czech company founded by Russians with headquarters in Prague. You will find Kotlin on the map in the Prague circle.
They shut down their St. Petersburg office and their Russian entity after the war started. At this point many of their people are outside Russia; all over Eastern Europe mostly. Lots of their Russian employees emigrated.
Notably, Roman Elizarov who was leading the Kotlin team and who is based in St. Petersburg actually left Jetbrains. It's not clear why; at the time he cited personal reasons. But reading between the lines, it could be because he was not able or willing to leave Russia.
Notably, Roman Elizarov who was leading the Kotlin team and who is based in St. Petersburg actually left Jetbrains. It's not clear why; at the time he cited personal reasons. But reading between the lines, it could be because he was not able or willing to leave Russia.
The Czech office is a flag of convenience. Until the full-scale invasion all development of this Russian named product founded by Russians was happening in Russian Federation. But formally you have a point.
And Yandex is a Netherlands company, right. Russians have a reasonable tradition to register things outside of “their” country.
As far as companies with a Russian origin go JetBrains and Yandex are at complete odds with each other. JetBrains condemned the Russian invasion of Ukraine and suspended sales and R&D there shortly after the war broke out then left the country entirely as soon as they relocated the employees. Whereas Yandex stayed and as a result their home page today is chock-full of Russian propaganda. JetBrains may have originated in Russia but they have nothing to do with that country anymore so counting them in with Yandex is wrong.
Yandex has no way out of Russia. Most of its businesses are russian-targeted and going “full outside” makes zero sense for them, because to continue they’d have to bow before authorities anyway. As a media company, to condemn the war for them meant being instantly raided and re-owned, which sure isn’t far from truth, just was less dramatic.
Agreed that exiting the country was much easier for JetBrains who are more internationally focused. But my belief is that Yandex leadership made a strategic mistake in not spinning off their core businesses to Europe. They had a chance at establishing themselves as an EU-first search engine, mail provider and cloud that can compete at the equal footing with Google. Yet they blew it and now they are FSB owned in everything but name.
That would be cool indeed!
[deleted]
Way back in USSR days, there used to be this language called Nairi or something like that
Seems weird to attribute Haskell to Microsoft. Simon Peyton Jones joined MSR Cambridge in '98 (about a decade after the name "Haskell" was chosen), Erik Meijer joined Microsoft in 2000, and nobody else linked from the Wikipedia page for Haskell has obvious affiliations with Microsoft.
As far as I can tell, Haskell was an academic collaboration mostly between Jones (UCL briefly, mostly University of Glasgow), Wadler (University of Edinburgh), and Hudak (Yale).
As far as I can tell, Haskell was an academic collaboration mostly between Jones (UCL briefly, mostly University of Glasgow), Wadler (University of Edinburgh), and Hudak (Yale).
Pull requests to update this welcome: https://github.com/breck7/pldb/blob/main/concepts/haskell.sc...
As with so many things, this is basically a map of GDP / area.
In this case there's another layer on top of that where # of programming languages scales faster after a certain wealth threshold.
For instance, the city of Toronto has a GDP equivalent to a couple of specific countries (and larger than most countries), but created more programming languages than the equivalent countries.
In this case there's another layer on top of that where # of programming languages scales faster after a certain wealth threshold.
For instance, the city of Toronto has a GDP equivalent to a couple of specific countries (and larger than most countries), but created more programming languages than the equivalent countries.
It makes sense that most software innovation has so far happened in the USA, Europe and Japan, but I wonder what this map might look like by the end of the century...
I think there is likely also bias in the data (what was considered significant) and inaccuracies in locations (many things assigned to Google’s head office).
In the US at least, programming languages were either developed by large corporations (Sun Microsystems, Apple, Google, Bell Labs, IBM) or research institutions (MIT) or Government (Ada, COBOL).
Ada was designed at Honeywell-Bull in France.
“Ada was originally designed by a team led by French computer scientist Jean Ichbiah of Honeywell under contract to the United States Department of Defense (DoD) from 1977 to 1983.”
This thread was about individuals making languages on their own and my point in this thread is most popular programming languages didn’t gain ground or mature until paid for and sponsored by an org or company.
DoD paid for it and can take credit for developing it.
This thread was about individuals making languages on their own and my point in this thread is most popular programming languages didn’t gain ground or mature until paid for and sponsored by an org or company.
DoD paid for it and can take credit for developing it.
> but I wonder what this map might look like by the end of the century...
Why would it suddenly change?
Why would it suddenly change?
Well for one, the world demography is deeply changing with population aging everywhere but a significant lag between countries which are already greying (Japan, Europe), countries which rely heavily on immigration to keep the median age stable (the USA) and countries which are just beginning to age but have large population (India, China, Brazil).
Old people don't innovate? Sounds like an ageist stereotype.
Questions about whole population groups like these are best understood not through stereotypes or anti-stereotypes but through statistics.
I found this study [0] that examines the relationship between age and things like winning the Nobel prize or coming up with a "great invention".
Looks like there's a peak in the late 30s and that peak is slowly creeping up as the population ages.
But it might also be that you need a population of 20-year-olds to actually adopt the new inventions.
[0] https://www.kellogg.northwestern.edu/faculty/jones-ben/htm/a...
I found this study [0] that examines the relationship between age and things like winning the Nobel prize or coming up with a "great invention".
Looks like there's a peak in the late 30s and that peak is slowly creeping up as the population ages.
But it might also be that you need a population of 20-year-olds to actually adopt the new inventions.
[0] https://www.kellogg.northwestern.edu/faculty/jones-ben/htm/a...
Retired people don't innovate, simply because they don't work.
Most old people don’t work and a significant portion of them can’t. If you really think an aging population doesn’t have an impact on a country overall output, I have a bridge to sell you.
In the CSV file, I see that the Google software is attributed to Mountain View, even when the actual teams were not in Mountain View.
(I found the visualization hard to use, at least on mobile, so I used the CSV file)
(I found the visualization hard to use, at least on mobile, so I used the CSV file)
Elixir is probably the most prominent language that originated in Brazil (at Plataformatec in São Paulo) but the data CSV lists an address in Texas.
I would have thought that would be Lua, not Elixir?
Thanks! Updated: https://github.com/breck7/pldb/commit/75bfe910f8b3723389964b...
Ah, let's not forget Lua =)
Everyone knows the best pl are created in Denmark.
As a Dane I'm curious which ones you're thinking of. The ones which are typically associated with Denmark are C++ and PHP and neither were developed in Denmark and I think it would be fair to call PHP more Canadian than Danish. Ruby on Rails is another but Ruby was developed by Matz.
I'm not sure BETA or FCL are really in the "Best" category. :p
I'm not sure BETA or FCL are really in the "Best" category. :p
C# was developed by a Dane, but it wasn’t developed in Denmark. The creator of PHP was born in Greenland, but again the language was developed elsewhere.
C# wasn't created by just Anders Hejlsberg. There wouldn't be a C# without Scott Wiltamuth or a Peter Golde (and a lot others). Though I guess you could argue that there wouldn't be a "modern" C# without Mads Torgersen who is also Danish.
That being said. "GP" jokingly said languages which were considered "best". I'm not sure what C# is supposed to be "best" at? It's not Java and it's certainly not LISP.
That being said. "GP" jokingly said languages which were considered "best". I'm not sure what C# is supposed to be "best" at? It's not Java and it's certainly not LISP.
IMHO C# is a very good, pragmatic language. It is not unique and groundbreaking like say Lisp, but it has a very well balanced set of features which makes is both productive and maintainable. It doesn’t have the level of boilerplate which make Java tedious, but its strong static type system makes it (IMHO) more maintainable than say Python for larger projects.
I think C# is a perfectly fine language, but as you say it's not really groundbreaking or unique. It's probably not even my top-five choice for general purpose language in 2024 but it's obviously gotten (is still getting) "the job done". If we're to praise Anders Hejlsberg's work I would personally pick Typescript above C#. Just look at how influential Typescript has been for global development in the previous decade.
I disagree with C# not being groundbreaking or unique, at least to some extent. Yes, a big part of the language could be considered "vanilla object oriented", but that's not really a bad thing. These are some things that C# pioneered:
* Expression Trees and LINQ (still a pretty unique feature)
* async/await/yield syntax, adopted later by many others
* get/set property methods
* null coalescing (??) syntax
* extension methods and partial classes
Even if C# was not the originator of some of these, it definitely played a key role in popularizing them and offered a good reference syntax and semantics that others could draw inspiration from.
C# also has great synergy with the F# language which is so unique and innovative that it might seem 'alien' at times. :-) I think some of the C# features appeared in some form in F# first (citation needed :-).
* Expression Trees and LINQ (still a pretty unique feature)
* async/await/yield syntax, adopted later by many others
* get/set property methods
* null coalescing (??) syntax
* extension methods and partial classes
Even if C# was not the originator of some of these, it definitely played a key role in popularizing them and offered a good reference syntax and semantics that others could draw inspiration from.
C# also has great synergy with the F# language which is so unique and innovative that it might seem 'alien' at times. :-) I think some of the C# features appeared in some form in F# first (citation needed :-).
- Stuff like LINQ and Expression Trees are to be found in Lisps, Smalltalk and ML derived languages
- Kind of true on this one, although Active Objects, and various flavours of co-routines predate its use in Midori, which eventually lead to async/await design
- Already present in Eiffel and Delphi
- Eiffel among possible others
- Special case of languages that allow for generalised call operators, and Delphi and C++ Builder did partial before
F# currently is so relevant that apparently has zero content to show up on .NET 9 release notes.
- Kind of true on this one, although Active Objects, and various flavours of co-routines predate its use in Midori, which eventually lead to async/await design
- Already present in Eiffel and Delphi
- Eiffel among possible others
- Special case of languages that allow for generalised call operators, and Delphi and C++ Builder did partial before
F# currently is so relevant that apparently has zero content to show up on .NET 9 release notes.
Currently posted .NET 9 articles talk mostly about platform-wide features and improvements, pretty much all of which equally benefit F#. Probably even more so when it comes to performance - I expect devirtualization and escape analysis improvements to impact F# to a greater extent than C#.
Language-specific articles are usually posted closer to the release date. Example: https://devblogs.microsoft.com/dotnet/announcing-fsharp-8/
Language-specific articles are usually posted closer to the release date. Example: https://devblogs.microsoft.com/dotnet/announcing-fsharp-8/
Except that they haven't been shy about C# 13.
https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/cs...
The efforts on F# are a tragedy, instead of providing proper content, forward to blog posts that we all know eventually disappear from Microsoft blog history.
https://learn.microsoft.com/en-us/dotnet/fsharp/whats-new/fs...
https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/cs...
The efforts on F# are a tragedy, instead of providing proper content, forward to blog posts that we all know eventually disappear from Microsoft blog history.
https://learn.microsoft.com/en-us/dotnet/fsharp/whats-new/fs...
That's just how F# team does things. There's no "single direction and decision" behind this - much less people work on F#, it's a much more community-driven language.
Personally, I see nothing wrong with it, because what matters most is how practical the language is when applied to solving a particular task, how well it integrates with the rest of the ecosystem, etc. On this front, I think F# does better than Scala or Clojure, or even Kotlin.
What it does need, I think, is better marketing around data science and machine learning domains - F# is a language which very well fits into this use case, and already has small but nice set of libraries like Diffsharp, and is being used by research labs in pharma sector (albeit on top of Fable, which I'm not a fan of).
You also need to remember that many C# features stabilize very late into release cycle. On one hand, posting about development early and actively brings more feedback, which is good, but it also may give a wrong impression, especially if a casual reader misses "this is early/experimental" disclaimers.
Personally, I see nothing wrong with it, because what matters most is how practical the language is when applied to solving a particular task, how well it integrates with the rest of the ecosystem, etc. On this front, I think F# does better than Scala or Clojure, or even Kotlin.
What it does need, I think, is better marketing around data science and machine learning domains - F# is a language which very well fits into this use case, and already has small but nice set of libraries like Diffsharp, and is being used by research labs in pharma sector (albeit on top of Fable, which I'm not a fan of).
You also need to remember that many C# features stabilize very late into release cycle. On one hand, posting about development early and actively brings more feedback, which is good, but it also may give a wrong impression, especially if a casual reader misses "this is early/experimental" disclaimers.
Scala, Clojure, and Kotlin are much more taken care of than F# will ever be.
In tooling, books, conferences, critical applications used in large scale across the industry.
Meanwhile Microsoft keeps behaving as if it was a management mistake to have added it to VS 2010.
In tooling, books, conferences, critical applications used in large scale across the industry.
Meanwhile Microsoft keeps behaving as if it was a management mistake to have added it to VS 2010.
I don’t think C# has introduced any never-seen-before features. Usually they have been tried out in an experimental language before.
I belive Linq was prototyped in Haskell or at least based on experiments in Haskell.
I belive Linq was prototyped in Haskell or at least based on experiments in Haskell.
What is your top 5?
I’d say the most important languages are Fortran, Algol, Lisp, and ML. All other general-purpose languages are just different combinations of features from these.
But best depend on the task at hand.
But best depend on the task at hand.
Didn't know I was in a museum ;D
Smalltalk or Simula
General purpose languages in 2024? Something on the JVM (I prefer Clojure), Rust, JavaScript (typically through Typescript), Erlang and Go.
If you had asked me a decade ago I would've said C# in place of the JVM, C/C++ in place of Rust and Python in place of Go. I think it would be perfectly reasonable to put C#, Python or even PHP on your top 5. I don't because I think they've been "outpaced" in usefulness by the JVM and Go. I know Go is a controversial opinion as Go is in many ways inferior to both C# and Python. The reason I place it higher is because I really dig some of the philosophies it comes with. I much prefer to work on code with explicit error handling and no cyclical package imports. This along with the focus on simplicity and how much you can do with just the standard library makes it very easy to write understandable (no magic) and maintainable code. It's one of the few languages where I can open a code file and immediately know what's going on almost regardless of who wrote it.
With that said, Clojure is my personal top language and I really hope I'll get time to pick up the "JavaScript" side of it so I can do all my Typescript work within Clojure. Haskell is too rigid for me and both it and Common Lisp doesn't come with the ability to tap into the JVM (which can be both a blessing and a curse). To be fair Lisp has Clasp which is much more powerful for some uses. I don't think you can ever really avoid C/C++ (Rust for safety) or Erlang in certain parts of our industry and I'm not sure they'll get real competition. Maybe if Zig manages to pick up a cult following like Rust has? The reason the JVM and it's languages rank so highly for me is in part because of its popularity. This may not be a good metric but I personally think real world application is a key factor for general purpose languages. Coupled with it's massive leap forward with it's recent updates it is simply a great platform in 2024.
https://github.com/clasp-developers/clasp
If you had asked me a decade ago I would've said C# in place of the JVM, C/C++ in place of Rust and Python in place of Go. I think it would be perfectly reasonable to put C#, Python or even PHP on your top 5. I don't because I think they've been "outpaced" in usefulness by the JVM and Go. I know Go is a controversial opinion as Go is in many ways inferior to both C# and Python. The reason I place it higher is because I really dig some of the philosophies it comes with. I much prefer to work on code with explicit error handling and no cyclical package imports. This along with the focus on simplicity and how much you can do with just the standard library makes it very easy to write understandable (no magic) and maintainable code. It's one of the few languages where I can open a code file and immediately know what's going on almost regardless of who wrote it.
With that said, Clojure is my personal top language and I really hope I'll get time to pick up the "JavaScript" side of it so I can do all my Typescript work within Clojure. Haskell is too rigid for me and both it and Common Lisp doesn't come with the ability to tap into the JVM (which can be both a blessing and a curse). To be fair Lisp has Clasp which is much more powerful for some uses. I don't think you can ever really avoid C/C++ (Rust for safety) or Erlang in certain parts of our industry and I'm not sure they'll get real competition. Maybe if Zig manages to pick up a cult following like Rust has? The reason the JVM and it's languages rank so highly for me is in part because of its popularity. This may not be a good metric but I personally think real world application is a key factor for general purpose languages. Coupled with it's massive leap forward with it's recent updates it is simply a great platform in 2024.
https://github.com/clasp-developers/clasp
> Common Lisp doesn't come with the ability to tap into the JVM
ABCL -> https://abcl.org
The Java interface for LispWorks : https://www.lispworks.com/documentation/lw80/lw/lw-java-ug.h...
ABCL -> https://abcl.org
The Java interface for LispWorks : https://www.lispworks.com/documentation/lw80/lw/lw-java-ug.h...
I never understood HNs fascination with BEAM family. I feel like very few people people here actively use it for anything even remotely intensive - it simply has too much of a runtime bloat, as slow as Ruby in low concurrency tasks, and Erlang is often too unwieldy.
Go aside, it's as if everyone hates getting things done in a delightful way, which is why I find this top 5 leaning a bit too much towards the quadrant of PL elitism and historical status quo adherence at the same time. Not to mention the drawbacks of JVM, which is by all means a stagnating ecosystem, despite the work to catch up with the rest, it might be a little too late.
Go aside, it's as if everyone hates getting things done in a delightful way, which is why I find this top 5 leaning a bit too much towards the quadrant of PL elitism and historical status quo adherence at the same time. Not to mention the drawbacks of JVM, which is by all means a stagnating ecosystem, despite the work to catch up with the rest, it might be a little too late.
And your most reasonable language is missing! (Futhark)
It may be a bit shallow, but as a Dane, I take some pride in the number of languages created by my countrymen, considering our modest population.
*Many have migrated to the US on their way, but still…
*Many have migrated to the US on their way, but still…
Many Danes migrated to the UK a thousand years ago and now their descendants, who migrated to the US 200 hundred years ago, are also making great contributions in programming language theory. Lots to be proud of
Finland is surprisingly sparse. I've always had the impression that it usually seems to be rather over-represented in other fields of computing.
Could be many reason I guess (after all, there's only 5.5 million Finns around), but the map is a bit pointless IMHO because it only counts university and research lab projects. Most recent languages I'm aware of (and which are actually useful in the real world) had been started by individuals in their spare time.
> but the map is a bit pointless IMHO because it only counts university and research lab projects
No, it doesn't. There's JetBrains, Eclipse foundation, Corel, etc.
No, it doesn't. There's JetBrains, Eclipse foundation, Corel, etc.
Which most recent (and how recent) were started by individuals in their spare time?
Perl is one that comes to mind and it’s old.
Perl is one that comes to mind and it’s old.
Rust, Zig, Odin, Nim are probably the most popular. It's also not surprising IMHO, most software is created to scratch a particular itch of an individual. Also specifically for programming languages, LLVM made it possible for individuals to build their own pet language with relatively little effort
but still get competitive performance and target platform coverage.
Rust though didn’t gain traction until Mozilla adopted it. I guess we could say individuals always created programming languages but majority are sponsored and paid by orgs/companies.
Before LLVM it was much harder for individuals to build competitive programming languages though (edited my original post with that afterthought, apologies)
That is a true and its a good point. Maybe we will see a bunch of new languages because of that.
It lists languages designed by commercial companies too.
The main reason it avoids showing languages created by individuals is that it can be hard to narrow down their location. Also, it would count as doxing.
The main reason it avoids showing languages created by individuals is that it can be hard to narrow down their location. Also, it would count as doxing.
Genexus is placed on Argentina, but the company is from Uruguay.
"A not very zoomable map"
[deleted]
Seemed like the definition of "programming language" was quite odd (given the title of the submission to HN is "Where are programming languages created?"), but then I noticed the actual title of the page is "Where does software innovation happen?" and is not restricted to programming languages.