
Family spaghetti of programming languages - grawprog
https://erkin.party/blog/190208/spaghetti/
======
Drup
That's ... actually pretty good! I'm usually quite frustrated by those, but
this one is not so terrible.

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.

------
lispm
Logo existed long before Scheme.

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.

See also:
[https://www.dreamsongs.com/Files/Hopl2Slides.pdf](https://www.dreamsongs.com/Files/Hopl2Slides.pdf)

------
mschaef
Seems very odd to exclude Java and C# entirely.

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](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.)

~~~
marcosdumay
There's an explanation for the missing Java (Python is not there either), but
not having Java and having Eiffel is certainly odd.

~~~
dkarl
Python is just to the left of the Squeaky family. It has arrows from CLU and
Perl.

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++.

------
linux2647
Éric Lévénez has a pretty extensive family tree/genealogy of programming
languages that he's maintained for a while:
[https://www.levenez.com/lang/](https://www.levenez.com/lang/)

He also has a Unix history and Windows history timelines as well.

~~~
userulluipeste
About the Windows history, he considers relevant and includes FreeDOS in that
timeline but not ReactOS?

------
xigency
Is JavaScript really a direct descendant of First Order Logic?

~~~
beefman
JS is a descendant of Scheme, Self, and Java.

~~~
koolba
JavaScript is a descendant of Java in the same way that someone who changes
their surname to Washington is related to the president.

~~~
macintux
The syntax was explicitly thrown away and reworked to look like Java, so, I’d
say they’re related.

------
_asummers
Erlang is Prolog derived, too, not just Smalltalk.

~~~
macintux
I was trying to remember what influences Joe Armstrong et al have indicated.
Although Smalltalk clearly shares some high-level concepts I’m not sure it’s
fair to consider it a parent/child relationship.

------
4thaccount
Julia got its inspiration from more than Matlab and R. A lot came from lisp,
and some from Perl, Python, and others currently eluding me.

Perl was also influenced by C

~~~
leephillips
Array fortran, Numpy.

------
ygra
I tried opening the source file in our own graph editor, in the hopes that our
layout might improve a bit on Graphviz here. Somewhat, I guess. It's still a
lot of edges that are hard to route well.

[https://www.yworks.com/yed-
live/?file=https://gist.githubuse...](https://www.yworks.com/yed-
live/?file=https://gist.githubusercontent.com/ygra/e0ef29217d3a9a33a5ffdb78ac418973/raw/fp%20%281%29)

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...](https://www.yworks.com/yed-
live/?file=https://gist.githubusercontent.com/ygra/4e2f9ffb6d5b1134f9237a730c5cf449/raw/fp_tweaked)

------
joe_the_user
I like how he has "machine code", "Turing machines" and "first order logic" on
top since it gives a bit of mathematical grounding to the classification -
abstract, mathematical models of computation and logic came first and were
formulated for generality so it's not surprising if language that might not
even know about a given construct might barrow from it.

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.

------
choeger
\- Modelica et. al. are missing

\- Julia has a strong influence from lisp

~~~
nur0n
I don't know Julia's history, but it sits right next to CommonLisp in my head.

------
nepeckman
I'm also really fascinated with the lineage of programming languages, and have
drawn up some trees myself. Though nothing this comprehensive! In my tree, I
put a lot of the dynamic interpreted languages as lisp descendants. I think
its reasonable to call lisp a major influence in the development of
JavaScript, Ruby, Python, and even Perl (though it does draw harder on unix
shell influences). I put Java and C# as C++ descendants, as I feel the C++
style of OOP (as opposed to the Smalltalk style) is a major part of those
languages.

~~~
jrochkind1
Matz has said he was influenced by Smalltalk and Perl when creating ruby, I
don't think he's ever mentioned lisp(s).

On the other hand, Alan Kay was definitely influenced by Lisp when creating
Smalltalk.
([http://worrydream.com/EarlyHistoryOfSmalltalk/](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!

~~~
lispm
Sure Matz mentioned Lisp.

He studied GNU Emacs and its Emacs Lisp implementation. He explains it:

[https://www.slideshare.net/yukihiro_matz/how-emacs-
changed-m...](https://www.slideshare.net/yukihiro_matz/how-emacs-changed-my-
life)

------
ken
I've seen several of these but I find it's not terribly useful to try to cast
"influence of programming language X on programming language Y" to a boolean.

What I'd really like to see is how _features_ travel between languages.

------
StefanKarpinski
Julia deriving from only Matlab and R is pretty off: it was not influence by R
at all; it was influenced by C, Fortran, Scheme, Pascal and Ruby.

------
bstamour
Very cool. There should be an arrow from Simula to C++ though, as that's where
C++ got its object oriented features from.

------
tropin
There's no language called Delphi. There's an IDE named Delphi for creating
applications in Object Pascal.

~~~
bstamour
The dialect of object orientation that Delphi compiles is different than
object pascal. It's pretty safe to call Delphi a language.

~~~
unnouinceput
Furthermore I'd venture to say it's quite the opposite as in there is no
programming language called Object Pascal, but only a paradigm and Delphi, FPC
and Pascal For Windows are direct implementation of Pascal with Visual Object
in mind.

------
feritkan
I found this post biased against javascript... good one though..

------
DonaldFisk
COBOL and SNOBOL are unrelated.

~~~
ratboy666
Sure, but COBOL:SNOBOL is like Java:Javascript

------
dmckeon
s{geneology}{genealogy}g;

------
scriptkiddy
Seems strange that Python isn't listed as a descendant of SmallTalk.

~~~
goatlover
Ruby is more like SmallTalk than Python.

