3 ms·
> > there is a very real sense in which programming languages haven’t really progressed since the early 80s. > 1980 is the debut of Smalltalk. 1972, actually!
by eadmund 4y ago
> > there is a very real sense in which programming languages haven’t really progressed since the early 80s.
> 1980 is the debut of Smalltalk.
1972, actually!
> Standardisation of CommonLisp happened sometimes in the mid 1980s.
Finished in the mid 90s. But Lisp was around well before the 80s, and CL was in a lot of ways a standardisation of the practices developed in the 70s & 80s.
> 80s. The 1990s is the "Interpreters Renaissance", when Python and Ruby (and other less elegant siblings) came out
I don’t really count that as progress. Python is just an unacceptable Lisp (1958), and Ruby is by analogy an unacceptable Smalltalk (1972).
> … the JVM and the proto-beginnings of the CLR.
The JVM is just refinement of ideas dating back to UCSD Pascal (1977), and the CLR is just an embraced and extended JVM.
> The 1980s and 1990s was an era of massive interest in Partial Evaluation, the revolutionary idea with consequences such as deriving a compiler out of an interpreter automatically.
Emanuelson & Haraldsson wrote about partial evaluation in Lisp in their 1980 paper On compiling embedded languages in LISP.
> Haskell? 1990, and only popular beginning in the late 2000s\early 2010s. LLVM? early 2000s. SML? OCaml? F#? Scala? Erlang? Rust? Clojure? Perl and its legacy in Raku? Julia? Mathematica?
Haskell was strongly influenced by Miranda (1985), and of course based on Hadley-Milner (1969/1978), albeit with improvements. I’ll grant you that Wadler & Blott’s typeclass proposal date to the late 80s. What about LLVM is fundamental progress rather than refinement of existing work? Standard ML dates back to the early 80s: 1983. ML itself dates to the early 70s. OCaml is OO ML, a marriage of a language from the early 80s and a concept from the early 60s (Simula dates back to 1962). F# is another member of the ML (1973) family. ‘Something old, but this time on a new VM!’ isn’t really progress, is it? Scala is OO (60s) plus functional programming (50s). Erlang appeared in 1986, so I will grant that it’s just outside of my ‘early 80s’ comment. But did it progress as a language or as a runtime? Granted the boundaries are fuzzy. I’m not familiar with the scholarship which influenced Rust — it may genuinely have a few ideas which don’t date back to the late 70s/early 80s. I imagine someone here can educate me! Clojure is ‘not-really-Lisp, but on the JVM’; is that really progress as opposed to refinement? Not that refinement is unimportant! Perl’s origin in 1988 is past the early 80s, but … is there really much original there? Especially in its early versions it was basically a better awk (1977). I am not familiar with Raku, but it doesn’t really look original, but more like a polishing of Perl. Julia’s big thing is multiple dispatch, right? That dates back to the early 70s, so it can’t really be counted as an innovation in a language from a decade ago. Finally, Mathematica dates to the late 80s, so definitely outside the window I gave, but isn’t there a substantial overlap between its functionality on one hand and Lisp/Macsyma on the other?
Edit: reformatted to not make this a huge string of paragraphs. Instead, it’s a wall of text. Dunno if that is an improvement. Do let me know …
- infinite8s 4y agoThe Smalltalk of 1972 is not the Smalltalk of 1980.
- abecedarius 4y agoRight; though Smalltalk-80 is very like Smalltalk-76.
- KerrAvon 4y agoI think the point in this context is to the extent most might be familiar with Smalltalk, the familiarity is with Smalltalk-80 and descendants.
- ogogmad 4y agoI have only a passing interest but Rust is based on ideas in the late '80s concerning linear logic and affine logic and their relationship to PLT. Monadic programming and its applications to for instance parser combinators is from the early '90s.
- lizmat 4y ago> ... it doesn’t really look original, but more like a polishing of Perl. Sure, Raku has its roots in Perl. But if multiple dispatch is the big thing for Julia, why wouldn't it be for Raku? Other things Raku has that Perl doesn't have: - grammars built in, in fact Raku itself uses a Raku grammar to parse itself - a sane and genuine async / multi-thread / event model - Rational arithmetic, big integers and complex numbers by default - lazy lists: say (1..Inf)[42] won't hang - Junctions; a == 42 | 666 | 314 - Gradual typing and coercions > I am not familiar with Raku, but Perhaps it's time to familiarize yourself a bit more with Raku :-)
- mek6800d2 4y agoI think you misunderstood eadmund's point about Julia and multiple dispatch. :( Still, your succint summary of some of raku's capabilities makes me, at least, want to study it in more detail -- so, thank you!