Wolfgang Schuster (2023-03-23 18:28:28) Permalink
I'd say Elm should be noted as here well. Both as a small language and as one that, like Lua, has been willing to make breaking changes by removing features. It doesn't include macro system, so unlike a Lisp dialect it won't be able to grow in that way either. It's still quite young compared to e.g. Python but similarly aged languages, such as Rust, have only grown in size.

Oscar Nierstrasz (2023-03-23 19:25:57) Permalink
If you are talking about syntax, Smalltalk has stayed pretty stable since Smalltalk-80. I can name only a very few extensions, namely traits, slots and dynamic arrays, and only the last of these required a change to the syntax of the language.

Edward (2023-03-23 20:37:12) Permalink
One of my biggest complaints with almost every language ever invented is that they don't mark the language level expected in each file, so that when a breaking change happens you can forward convert the file, and also so you can know what version of the compiler to run against. Languages can last decades, and natural evolution will mean that some code will stop compiling. It is often a trial-and-error process to get some C fragment to compile, because the code assumes some set of compiler flags, external to the source files, that are required to build it properly.

That is why in my Beads language i require the language version code on the first line of each file so that you can 1) detect the language without using the file suffix, and 2) know what version of the language was needed.

Language version marking should be included in every language, because code can last a very long time.

gasche (2023-03-24 08:37:34) Permalink
Two comments:

In particular:

John Doty (2023-03-24 16:22:25) Permalink

I know a lot less about languages like C# and the like, but I wouldn't be surprised if they've gone, or are going, through something similar.

C# has always been a fairly maximalist language, and has never in its history been shy about adding features. This is not to disparage the people behind it: Anders Hejlsberg (e.g.) is an exceptional language designer! But language size was never a priority.

amk (2023-03-25 17:35:16) Permalink
Note that Python 1.6 and 2.0 were developed simultaneously and released one month apart (September 2000 and October 2000). 1.6 was really a "legal obligation" release that included the Unicode support and a licensing change; 2.0 used a different license. See the 2.0 release notes at https://docs.python.org/3/whatsnew/2.0.html#what-about-python-1-6 ; I co-wrote them.

Tor Hagemann (2023-03-25 19:06:47) Permalink
As someone who enjoyed this post, I also enjoyed:


Karlie Hoppner (2023-03-25 20:07:28) Permalink
The more I use Rust, the more I'm asking myself, "Why do we even need other programming languages?"

Rust simply does it all. I've used it to write low-level OS kernel and driver code. I've used it to write middleware. I've used it to write math-intensive graphics applications. I've used it to write text processing software. I've used it to write high-performance network servers. I've even used it as a scripting language for a simulator.

I haven't reached for other programming languages in years. These days, the only tool in my toolbox is Rust.