Family spaghetti of programming languages
erkin.party
erkin.party
Some remarks:
- Coq is not an ML at all, it's simply implemented in OCaml and has a vaguely similar syntax. I think dependently typed languages should have their own category, as they have a rich history (coming from type theory, obviously).
- Elm is almost certainly more an ML than an Haskell. The only link with Haskell is really the syntax.
- Speaking of Elm, you might want to add something on synchronous languages (You can start by looking up Lustre).
- ML languages with modules, and especially OCaml, took pretty direct inspiration from Modula 2's modules.
- Curry is half Haskell and half Prolog.
XLisp was an independent Lisp in 1983. It then migrated towards Common Lisp (until XLisp 2.X). XLisp 1.5 seems to be the base for Autolisp. XLisp 3 then was based on XScheme.
LFE is not based on Clojure or Hy.
I'm also not at all sure how "MS BASIC for the Macintosh" is listed as a predecessor of Applesoft BASIC. Microsoft used the threat of pulling Apple's Applesoft license as a way to get the leverage required for their Macintosh BASIC to be released instead of MacBasic.
https://www.folklore.org/StoryView.py?story=MacBasic.txt
(That article also shows that Apple's Integer BASIC was an entirely separate implementation of BASIC from Applesoft, so the arrow from Integer BASIC to Applesoft is a little weird too. But some of this comes down to the fact that the meaning of the arrows on charts like this is a little loose to begin with.)
I find it odd that Julia doesn't have an arrow from any of the Lisps. Also, C++ only has an arrow from C. I think Stroustrup cited work he did in Simula as a major inspiration for C++.
Yeah... I saw that. It's honestly part of why I thought the lack of Java was an odd choice. (There are least a few other languages that are on the chart that arguably have better claims to being called multi-paradigm. Common Lisp and C++ among them.)
He also has a Unix history and Windows history timelines as well.
Perl was also influenced by C
https://www.yworks.com/yed-live/?file=https://gist.githubuse...
Tweaked a bit in our desktop application which allows a few more layout options, it gets a bit more compact. Still fairly confusing, sadly (and the Graphviz styles got lost in translation, I fear):
https://www.yworks.com/yed-live/?file=https://gist.githubuse...
Still, I'd like to see a wider list of mathematical and other pre-existing models of computation. Maybe "Machine Code", "Turing Machine", "Church Recursive Functions", "Lambda Calculus", "First Order Logic" and "Natural Language Constructs".
APL, for example, seems more similar to abstract recursive functions than to first order logic, by quite a bit.
- Julia has a strong influence from lisp
On the other hand, Alan Kay was definitely influenced by Lisp when creating Smalltalk. (http://worrydream.com/EarlyHistoryOfSmalltalk/). So...
As the author in the OP notes, there's no way to get this perfect, even aside from just making mistakes and missing documented information, a new programming language can be "infuenced" by anything in the mind of it's creator(s).
But, hey, the chart gives us something to talk about!
He studied GNU Emacs and its Emacs Lisp implementation. He explains it:
https://www.slideshare.net/yukihiro_matz/how-emacs-changed-m...
What I'd really like to see is how features travel between languages.