4 ms·
I think it's a matter of ontology. The category "ML" is pretty fragmented, but the categories "Haskell," "F#," and "OCaml" are all pretty non-fragmented. Ditto
by lmkg 15y ago
I think it's a matter of ontology. The category "ML" is pretty fragmented, but the categories "Haskell," "F#," and "OCaml" are all pretty non-fragmented. Ditto for "Lisp" vs Clojure, Scheme, Common Lisp[1].
I don't think Ruby should be compared to ML. I think Ruby should be comared to OCaml. ML, if it gets compared against anything, should be compared against the category that includes Python, Ruby, Perl, and JavaScript. This category is about as fragmented as Lisp.
The problem with this new category is it doesn't have a simple, clear definition. Lisp is pretty much defined by S-expressions, and MLs by their type systems. This new family might be defined by their common approach to object systems (i.e. objects as dicts), although that's really more representative than fundamental.
[1] I'm under the vague impression that Common Lisp and SML are somewhat more fragmented than other members. I wonder if this correlates to their being the "Common"/"Standard" dialects.
- masklinn 15y ago> Ditto for "Lisp" vs Clojure, Scheme, Common Lisp[1]. Clojure is not fragmented, but both Scheme and Common Lisp are extremely fragmented. Scheme is probably one of the most fragmented language there is, there are literally dozens of implementations of it with various levels of compatibility[0], and it's actually gotten worse lately as many (if not most) implementations refused to migrate to R6RS and remained on R5RS instead. There are even implementations (e.g. DrRacket, formerly DrScheme) which forked/opted out the whole language. [0] http://en.wikipedia.org/wiki/Category:Scheme_implementations http://en.wikipedia.org/wiki/Category:Scheme_implementations
- ams6110 15y agoFrom the main Scheme article on Wikipedia: "Scheme follows a minimalist design philosophy specifying a small standard core with powerful tools for language extension. Its compactness and elegance have made it popular with educators, language designers, programmers, implementors, and hobbyists." Scheme is widely (mostly?) used as a teaching and research language in Comp. Sci. schools. This sort of environment encourages experimentation with the language itself, whereas Python and Ruby are more oriented towards practitioners who are more interested in using the language as-is, not experimenting with it.
- ScottBurson 15y agoI don't know that I'd agree that Common Lisp is "extremely" fragmented. It's true that there are probably more implementations than we really need, but they do serve different niches. Anyway, while "extremely fragmented" might have been a fair characterization a few years ago, there has been enough work done lately on portability of libraries -- much of it driven by Zach Bean's Quicklisp -- that switching implementations is often straightforward now. CL is defined by a standard which most of the implementations work pretty hard to adhere to. Of course, most of them have their own extensions, but a lot of these (particularly in the important areas of multithreading and foreign function calling) are now abstracted by portable libraries. This is a very different situation from the Scheme world.
- groovy2shoes 15y agoRacket didn't opt out of R6RS. Racket has multiple language modes, one of which is actually R6RS Scheme. It also has a "legacy mode" for R5RS, along with modes for a handful of other languages such as Datalog, ALGOL 60, and some teaching languages.
- masklinn 15y ago> Racket didn't opt out of R6RS. That definitely isn't what I wrote.
- groovy2shoes 15y agoSorry, not sure what else to make of this: > There are even implementations (e.g. DrRacket, formerly DrScheme) which forked/opted out the whole language.
- klez 15y agoThey opted out from scheme as a whole. This is reflected by the name change. http://www.racket-lang.org/new-name.html http://www.racket-lang.org/new-name.html
- groovy2shoes 15y agoI'm familiar with the name change, but they didn't opt out of Scheme at all. Racket still supports both R5RS and R6RS. And before someone starts going on about the "default language" not being Scheme anymore, Racket doesn't have a default language. You have to specify one. Many of the things that have been added to Racket beyond the Scheme standard also have analogs in other Scheme systems.
- zem 15y ago"scripting languages" was the commonest blanket term. then it fell out of favour and people usually refer to "dynamic languages" now, which is a lot broader a term and doesn't really single out just that family.
- deleted 15y ago[deleted]
- deleted 15y ago[deleted]