3 ms·
Language can't be small, if it's universal enough. Otherwise you end up with trade-offs for its size, which limit scenarios where that language can be used. So
by shmerl 7y ago
Language can't be small, if it's universal enough. Otherwise you end up with trade-offs for its size, which limit scenarios where that language can be used.
So there is no "perfect" language. All languages have some trade-offs. If you want small - you pay for it.
- chewxy 7y ago> Language can't be small, if it's universal enough t, u := x | λx.t | (t u) Small language (three production rules), definitely universal. Of course the semantics is a lot more complicated than most people expect. But it IS syntactically very simple
- shmerl 7y agoTheoretical cases that are unusable in practice aren't interesting in the above context. We are talking about practical languages. It's not about Turing completeness.
- chewxy 7y agos := a | (s s) common lisp syntax. Even simpler, but that shifts much of abstraction capabilities to the operational semantics.
- Someone 7y agoI agree that every language has its trade-offs, but you can move lots of stuff into the standard library of the language. Taken to the extreme, the result can be an extremely small language. If your language is expressive enough, the result can also look like it is a much larger language. For example, Forths implement if/else, for/do, while/do, repeat/until, switch/case in terms of some stack manipulation and ‘jump’. Similarly, Common Lisp builds its control structures, object oriented programming support, etc, out of a few primitives.