5 ms·
>there is a very real sense in which programming languages haven’t really progressed since the early 80s. Can this be made any more precise to somebody who doe
by Banana699 4y ago
>there is a very real sense in which programming languages haven’t really progressed since the early 80s.
Can this be made any more precise to somebody who doesn't share the feeling?
As a programming language aficionado, my attitude is the exact opposite of this. 1980 is the debut of Smalltalk. Standardisation of CommonLisp happened sometimes in the mid 1980s. The 1990s is the "Interpreters Renaissance", when Python and Ruby (and other less elegant siblings) came out, as well as the JVM and the proto-beginnings of the CLR. 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. Those ideas were later revived\paid off in projects like PyPy and GraalVM+Truffle, late 2000s and early 2010s stuff. 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? I can go on and on.
Highly skeptical of that "very real sense" that views all of this cambrian explosion of ideas and explorations as not really progress.
- rjsw 4y agoLooks more like keeping reinventing the wheel than a cambrian explosion of ideas to me.
- abecedarius 4y agoML existed in the early 80s. So did early lazy functional languages (KRC). I could go on in this vein if the "very real sense" he means is about finding basic ideas vs. developing and spreading them. (I get the impression Rust passes this test, though. E.g. Wadler's "Linear types can change the world" is from 1990, Baker's "Lively linear Lisp" from 1992, and after that I stopped looking.) I haven't read the OP yet.
- 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!
- time_to_smile 4y agoThe differences between Fortran, Lisp, C, Prolog, Smalltalk, APL and ML are wildly more extreme than Python, Java, C++, JavaScript and Rust. Languages like Haskell and OCaml are natural evolutions of ML work done in the 70s, just like Clojure is for Lisp. That list of languages that existed prior to 1980s is still considered a must learn set of languages for any serious programming aficionado. All of the more recent languages tend to exist in the "learn one and learn it well" category provided you already have experience in the pre-1980s languages. The major exception to this would be Haskell, but that's more so because it has basically taken the throne and the modern heir the the ML kingdom. That's not to say there hasn't been some really interesting work in programming languages since the 1980s, but it's very similar to OS world (we never really moved past the age of UNIX). We've largely established the major paradigms of programming and refined them rather than really breaking new ground.
- mncharity 4y agoTriumphal progress! Tragic stasis. Perhaps an issue of interpretive context? Say you're handed a glass. Do you call it half full or half empty? :) What if the level is because the hander (history? society? our profession?) always spills it? And keeps forgetting how to work the cooler? And the sink is turned off because the they're too cheap or can't be bothered to call a plumber? There's water in hand: joy! And sadness. If someone jumps in a hole, do we count clawing their head back above ground as progress? If wheelbarrows are known, is a towering hand-carried mound inspirational or depressing? If an entire well-coordinated workforce has dysentery, and management has for years been refusing requests to fund more research on latrine placement, is it well managed? Hole... A room of java swing devs stand in awed ovation for a rails demo - yay progress! And Java N+1 adds a long-looked-forward-to feature X! And yet... Java was originally, intentionally, feature stripped to cripple and down-skill programming for industry. "Java N+1 - Now with less cripple!" Jumping in the hole was even arguably the right call. And at least java meant my never having to do the "gc can be helpful" conversation ever again, for which I remain grateful. So yay progress, but of a wistful sort. Aside... So much of these last decades seem a massive exercise in programmer education. Boston Python meetups with pre-covid hundreds, were once a half-filled little conference room. I once saw a project fail in part because highly paid and professional devs had trouble with the concept of hash table. Our vastly expanded community and resources and competence are greatly empowering. But so much of that education seems... remedial? And the pace of progress seemed to stall as focus and expertise was dispersed. So awesome progress! So little progress. Wheelbarrows... An recent hn comment asked which language to best teach programming with. And I thought, maybe use multiple languages? Maybe for each concept, first show it in a language which handles it less badly, before getting bogged down in common cruftiness? A concatenative language for Tufte-esque no wasted ink. APL/J for eyeball abstraction. PureScript or an alternate prelude rather than haskell's historical cruft. On and on. And yet... how demotivating might students find that? To again and again see beauty and power, and then be told "and... you won't be allowed to live most of this... for years and decades, and much never before you retire". When each new thing is still so suboptimal in so many ways, it gets harder to see it as progress. Hole... Picture an industry researcher giving a talk, describing the creation of a massive tool to analyze and find bugs in large C++ programs. And in Q&A is asked, "So, by dint of this extraordinary effort, you've managed to almost but not quite make up for C++ having such a poor type system?" And with a wistful smile, nodding yes. Progress? Or symptom of lack of progress? Dysentery... A researcher with fun ideas on garbage collection burns years trying to frame it as security benefit in forlorn hope of DHS funding, having found none elsewhere. A researcher mentions having found a PhD student to explore a foundational functional programming idea, unstalling it after more than a decade of limited attention. A single person is the clear expert on X and keeps meaning to write it up, so let's fund that to avoid the waste of years of slower dispersion... woops, nope, politicians slashed our budget. The industrial policy of the United States is that critical bottlenecks in software progress, foundational for the economy and societal progress, are best pursued by individuals doing hobby projects in their spare time, and by research slow-mo stretched across decades. Progress and its absence, is judged in part, against what might have, could have been. So the progress of these last decades has been gloriously breathtaking. And it's a pity that we as a profession have been so incompetently dysfunctional that the needle has barely moved in two human generations.