5 ms·
The Algol, Smalltalk, Pascal, and early Scheme languages were prized for being small and beautiful. Those languages are also not very popular at all today. Per
by lacker 7y ago
The Algol, Smalltalk, Pascal, and early Scheme languages were prized for being small and beautiful.
Those languages are also not very popular at all today. Perhaps "small and beautiful" are not the right metrics to optimize programming languages for.
In many ways, keeping the core JavaScript language small has led to the JavaScript ecosystem being too large and sprawling. For example, look at module importing, something which is a fairly normal part of most programming languages. It still works in a completely different way in Node.js and in browsers. I think if there had been a standard way to handle JavaScript imports years ago, the practical experience of working in JavaScript would be simpler today.
- cat199 7y ago> Those languages are also not very popular at all today. But yet, C (arguably 'current algol') and Python (arguably 'current scheme') are.. yes: python is verry loosely like scheme, this is meant in the sense of a 'dynamic loosely typed language you can interact with in a repl'
- darkpuma 7y ago> "dynamic loosely typed" Both Python and Scheme are dynamic but strongly typed.
- cat199 7y agoi'm going to disagree here. yes, they have strong core types, but there is nothing preventing you calling some function with completely invalid arguments.. even within the 'interpreted fp' world, there are better examples (e.g. ML family)
- dodobirdlord 7y agoI think you may be missing some terminology here. Strong typing is about whether entities have definite types and resist type coercion. Ad-hoc typing in dynamic languages can make this hard to see, but it's still there. What would prevent you from calling a function with invalid arguments would be static typing, which Python and Scheme do not have.
- astrobe_ 7y agoLua is a far better counter-example as a successful small and (conceptually) beautiful language.
- cat199 7y agoyes, probably so. was going for 'popularity' here
- em-bee 7y agothe significant difference between python and scheme here is that python is not small. but then, scheme is heading in the same direction if you look at the latest standards development
- klez 7y agoDepends on what you mean by "latest". R6RS is arguably huge. That's why they decided to split R7RS in two, a small core which is done and a huge version which, ironically, is still in the making.
- pjmlp 7y agoR7RS is still in the making, not because it is bigger, rather due to politics that many don't agree with it ever happening. The small core exists, because that was the only subset their were willing to agree on.
- em-bee 7y agoright, it may not happen, but at least some people want to add stuff to scheme that will make it larger, to eventually reach the point where it no longer can be called a small language. i don't know if/when that point will be reached. my comment was hinting at the potential for scheme to become larger.
- F-0X 7y agoI quite strongly disagree. My favourite languages, Scheme, C, Go, share precisely the "small and focused" philosophy, and its a big reason why I like them so much. Your point about javascript is not very strong either, I imagine the real reason is its origins as a browser-embedded language meant that the same style of imports in Node.js were not feasible. Even if this is not true, I would then shift the blame to the implementor of Node. Scheme in particular deserves so much more attention, it is so capable and it is a joy to write.
- pjmlp 7y agoC appears small. I doubt even veteran C developers know by heart its 200 UB documented use cases on ISO C, or the specificalities of any C compiler other than the one they daily use, and which features of it are actually part of ISO C. Unless they happen to do ISO work all day long.
- mhuffman 7y ago> Those languages are also not very popular at all today. Perhaps "small and beautiful" are not the right metrics to optimize programming languages for. Perhaps popularity isn't.
- Smithalicious 7y agoI think that popularity is probably indicative of other qualities of a language, and at the very least, I think being popular is a good feature in itself (in terms of getting support, libraries, documentation etc)
- pjmlp 7y agoPlatforms are products that sell languages, not the other way around. So being popular just means having the luck to be on a platform that is doing well. Usually most programming languages fade way when that platform stops being relevant, as history has proven a couple of times.
- microtherion 7y agoPascal also cheated on size, by omitting some facilities that were almost indispensable for practical programs, leading pretty much all implementations do add them in incompatible ways.
- pjmlp 7y agoThe first version yes, ISO Extended Pascal fixed that, however by then everyone was mostly focused on being compatible with Turbo Pascal.
- braythwayt 7y agoProgramming languages can be categorized in a number of ways: imperative, applicative, logic-based, problem-oriented, etc. But they all seem to be either an “agglutination of features” or a “crystallization of style.” COBOL, PL/1, Ada, etc., belong to the first kind; LISP, APL– and Smalltalk–are the second kind. It is probably not an accident that the agglutinative languages all seem to have been instigated by committees, and the crystallization languages by a single person. Alan Kay's "The Early History of Smalltalk:" http://gagne.homedns.org/~tgagne/contrib/EarlyHistoryST.html http://gagne.homedns.org/~tgagne/contrib/EarlyHistoryST.html