Programming languages genealogical tree
Basic idea behind project reconstruct diagram above in D3:
- to be able to edit data easily. Simply send PR to this repo and everyting, else will be updated
- to use html5 instead of plain image, for better perfomance, for vector graphics, to enable text search via
Ctrl + F and copy/paste
- add interactivity to diagram, for example: select one node and it will show all "ancestors" and "children"
There are a lot of similar efforts and all of them have one big flow from my point of view. It is not very clear what influence-links mean. There are different relationship possible between languages. For example:
Superset or subset.
sass (sccs) is superset of css
- SIMULA is superset of ALGOL 60. Source: link
Inspiration or ideas
- Ruby took it's OOP concepts from SmallTalk: objects communicate via messages, everything is an object (even classes)
- C++ took it's OOP concepts from Simula [citation required]
- LISP, Scheme
Many links between languages in simillar projects not provide information on what kind of relation it is and lacks credibility. So they tends to be more confusing rather than helpfull. I want to add this type of information.
Other side of this project is to show in what language concept (idea, paradigm, technique) first appeared. See link. So if similar concept appears in other language it is can be considered as inspired by original source. But this not alway true: Simula considered to be first object-oriented language (even though there was idea of object before [citation required]), but idea of object-oriented language presented in SmallTalk is completley different and both languages appeared with small time difference, so I do not consider that one was inspired by another. Yes, both languages talk about object, but OOP-ideas behind them are completley different.
Add info about authors to programming languages.
Add concpets and their connection to languages.
Add links to scientific papers behind language concepts.
It is possible to add mathematical theories which were preceding programing languages, like lambda calculus can be considered as parent of s-expressions (LISP) [citation required]. Haskell has roots in category theory [citation required].
- Programming Languages: History and Future, 1972
- History of Programming Languages, Spring 2017
Some History of Functional Programming Languages, 2
- The principal programming paradigms
- Programming Paradigms for Dummies: What Every Programmer Should Know
- Fundamental Concepts in Programming Languages, 1967
- Some History of Functional Programming Languages, June 2012
- P.J. Landin The next 700 programming languages, 1966
- G.D. Plotkin. Call-by-name, call-by-value, and the λ-calculus, 1975
- Call by push, 2001
- Luca Cardelli, Type Systems, 1997
- Luca Cardelli, On Understanding Types, Data Abstraction, and Polymorphism, 1985
- C.A.R. Hoare. An axiomatic basis for computer programming, 1969
- The Birth of Object Orientation: the Simula Languages
- Types in Programming Languages, between Modelling, Abstraction, and Correctness
- Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I
- Syntaxation. Douglas Crockford
History of computation
D3 examples of timelines and similar graphs