3 ms·
>Wirth's quest for one true small language led to an array of languages that only show that no, you can't have too simple of a language, or you will end up with
by zetalyrae 5y ago
>Wirth's quest for one true small language led to an array of languages that only show that no, you can't have too simple of a language, or you will end up with a system that is too complex because of the language. The ones I remember from a very long discussion a decade or so ago:
>- the meaningless distinctions between functions and procedures
>- the very many iterations on loop constructs (in some of his languages there are three loop constructs with different rules. For example, you can break early from only one of them)
Arguably the problem here is Wirth didn't go far enough. You can design a simpler version of, say, Modula-3 by unifying statements and expression as in ML, and replacing the multiple iteration constructs with recursion, and guaranteeing tail recursion.
- masklinn 5y ago> Arguably the problem here is Wirth didn't go far enough. The quest for langage simplicity in service of nothing is not actually useful. There’s an entire class of esoteric langages called turing tarpits, and their entire MO is to be so simple they’re theoretically universal while being practically unusable. Brainfuck is probably the most famous but by no means the best / worst.
- zetalyrae 5y agoSimplicity buys you a lot of things: 1) Ease of learning, which allows the community to grow. 2) Ease of implementation, which in turn allows you to have multiple implementations conforming to the same standard, which makes the language ecosystem more robust by removing implementation-specific bugs. 3) Ease of formal specification. Obviously Brainfuck and other turing tarpits are esolangs and not meant for industrial use. There is however a golden mean that unites simplicity and pragmatism.
- mro_name 5y ago...and what simplicity won't buy you, nothing else will.
- masklinn 5y ago> Obviously Brainfuck and other turing tarpits are esolangs and not meant for industrial use. You’re contradicting yourself here. Turing tarpits are literally the end point of the quest for simplicity, and are indeed easy to learn, easy to implement, and easy to formally specify.
- vidarh 5y agoOne of the key requirements of Wirth in terms of language construction was chasing languages that were not just simple but that 1. could be implemented simply (e.g. if a feature would significantly complicate the compiler, chances are he'd reject it), 2. where the implementation of a language construct was relatively unambiguously a near-optimal way of implementing that construct (e.g. he'd strip out things that might well be good if he did not feel he knew of a clearly superior way of implementing a feature at the language level), and 3. could be read in a very straight-forward way. You can make lots of changes that makes for smaller and simpler languages, but Wirth was chasing a very specific set of goals that did not seek to minimise the syntax for the sake of minimising the syntax alone, but to seek a balance between language simplicity, compiler simplicity and a rigidity that forces (his idea of) readability. His languages makes a lot more sense when evaluated in terms of those goals. Personally I admire his vision and execution a whole lot even though I prefer to use a language (Ruby) that is an utter mess evaluated by Wirth's criteria.
- pjmlp 5y agoJust a remark that Wirth had nothing to do with Modula-3. The language has grown out of Mesa/Cedar, Modula-2+, when some of XEROX people went into Olivetti Research Center. At most Wirth might have given permission for the use of Modula name.