5 ms·
1) It's impossible for people who know Lisp to design a language that isn't Lisp(y). 2) You can't be a serious language designer without knowing Lisp, well. Ju
by alextgordon 16y ago
1) It's impossible for people who know Lisp to design a language that isn't Lisp(y). 2) You can't be a serious language designer without knowing Lisp, well.
Judging by the number of great languages that are not at all lispy, at least one of these is false.
- mahmud 16y agoConcrete instances please! :-) I specifically said "amateur school of successful language design". "Great" is subjective, but nearly all ground-breaking languages invented after Lisp are all Lisp-like (don't look at syntax.) Industrial, imperative languages are nearly always "designed" on a whim. They're all incremental improvements over Algol, and they're probably what you're talking about if you're of the great majority of the programmers. As of late, they're more Lispy than you can imagine. Except for a specific school of Lex & Yacc languages out of New Jersey, the great majority of professionally designed languages (i.e. by people with an appreciation for formal language design and semantics) have been Lispy and functional; characterized by clean minimal core, well specified semantics, even proven, and self-hosted implementation. Just to throw the discussion a bone and offer some perspective; I consider ActionScript 3 "Lispy", but not AWK or C++.
- silentbicycle 16y agoHow about K? It's a functional, "clean minimal core" APL with ragged arrays and lambdas. Lisp-influenced, but much less Lispy than one would expect if it's "impossible for people who know Lisp to design a language that isn't Lisp(y)". "I much preferred implementing and coding in LISP (sic), but once I was dealing with big data sets and then having to do fairly simple calculations, APL just seemed to have the better vocabulary." - Arthur Whitney (http://cacm.acm.org/opinion/interviews/26246-a-conversation-with-arthur-whitney/fulltext http://cacm.acm.org/opinion/interviews/26246-a-conversation-...)
- mahmud 16y agoYou just supported my arguments, silentbicycle; it's "much less Lispy" but not "orthogonal to Lisp". Small, expression based, self-hosting, declarative, has a core-data structure it uses to represent most of its input .. APL, Forth, and Smalltalk might not be proper functional programming languages, but they're of the same "spirit". Now compare this to something horribly broken, like Basic ..
- silentbicycle 16y agoI suspected as much. "Lispiness" is a fuzzy concept, though - Lua is Lispier than Python, but is Tcl more or less Lispy than SML? Etc. K is probably the least Lispy language I can think of with that pedigree. Joy may be another exception, but it's mainly an experimental / research language.
- mahmud 16y agoTcl shouldn't be compared to SML; ML is a triumph of human achievement. See Alice: http://www.ps.uni-saarland.de/alice/ http://www.ps.uni-saarland.de/alice/ Some Lisps are more Lisp than others; compare Dylan to Emacs Lisp. Dylan has that refined taste, that well-thought out essence, even if it's an infix, algolish language in apperance. While elisp is an orthodox Lisp, in every sense, and is unpalatable because of its true-to-form "Lispiness". There are languages that are semantically consistent, and that's probably what I meant by "Lispy". Then there are languages which are nothing but compiler hacks; you can tell whoever dreamed them up "grew" this hairball by tweaking a parser until it did something he wanted.
- silentbicycle 16y agoYeah, I don't like Tcl either. :)
- mahmud 16y agoAlso, take a look at the Lua 5 compiler. That fucker does matrices on par with Fortran, with just 500k worth of compiler + runtime! I particularly loved their hack for sparse matrices; they're implemented as hash-tables where the indices are zero-based integers, so only the indices that are initialized are created. Meaning, you can have an array with a few indices without having to create all the empty cells in between. I benchmarked it and it's far more than adequate. Makes graph algorithms breezy. Lua is very much an acceptable Scheme.
- alextgordon 16y agoConcrete examples? C and Python are prime counterexamples. Neither are particularly "lispy" (although nearly all languages in existence have been influenced a little bit by Lisp). And yet they are wildly successful and tremendously well-designed. So either Guido and Dennis Ritchie didn't know lisp and therefore aren't serious language designers (by your second assertion), or they did know lisp and failed to make a lispy language (which would contradict your first assertion). If Guido and Dennis aren't serious language designers, then I'm not sure who are. Except for a specific school of Lex & Yacc languages out of New Jersey, the great majority of professionally designed languages (i.e. by people with an appreciation for formal language design and semantics) have been Lispy and functional; characterized by clean minimal core, well specified semantics, even proven, and self-hosted implementation. I wouldn't read too much into this. There are many more jobs for language designers in academia than there are anywhere else. So it stands to reason that most professionally-designed languages will be of the academic sort (if we can agree that a professional is someone who gets paid for their work). That doesn't imply that those languages are any better than "amateur" languages, only that there's more of them.
- mahmud 16y agoI really don't think we judge PLs the same way. To me C is the definition of broken, it doesn't even have proper aggregate data-types, much less a type system. Python is a work in progress, though it improves between versions. Last time I used it, back in 1999, it was a bad calculator.
- silentbicycle 16y agoNowadays, Python is more like a decent calculator with a navy. :)