HACKER Q&A
📣 open-source-ux

Programming language design – does the size of the language matter?


I have always liked the philosophy of Niklaus Wirth, known best for creating Pascal, Modula-2 and Oberon, that programming languages should be small but powerful. However, it seems to me that few language designers consider the size of the language an important quality when they create a language. It seems many programmers don't see it as a problem either.

Generally, the trend seems to be for programming languages to grow in size. I don't mean the size of the standard library, but the actual features and syntax of the language. A lot of languages may have started out as relatively small but with every iteration of the language, the syntax and features grow. Of course, small languages can also include complexity too.

So does the size of the language matter? Does it follow (in general) that the larger the language, the greater the risk of complexity of the language?

And in case you are interested, here are some thoughts from Wirth on the subject [1]:

> "In order to do a good experience [learning a language], you have to have a clean language with a good structure concentrating on the essential concepts and not being snowed in. That is my primary objection to the commercial languages – they’re simply too huge, and they’re so huge that nobody can understand them in their entirety...I think the industry thinks it’s a big asset to have a complex thing that increases their reputation of being sophisticated"

[1] https://amturing.acm.org/pdf/WirthTuringTranscript.pdf


  👤 rusini Accepted Answer ✓
IMHO, the language size DOES matter and IS related to the language complexity and especially the syntax complexity. However, I believe many designers ARE aware of complexity issues and many languages turn into a mess only with time. BTW, I have designed a PL with a syntax, which is specifically designed to be not-prone to this syntax complexity problem as the language evolves.

There's also general philosophical advice that one should use the LEAST powerful tool for a task among all viable options. Many, especially newbie, developers just don't get it.

So, in general Wirth is right. But he is also known for oversimplifying his "50-page" language reports, and according to my experience, 50 pages is not sufficient to specify precisely even a small (but useful) PL. One such well-known lack of precision is nominal vs structural type equivalence in Pascal.