Programming languages genealogical tree
Source: rigaux.org
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.
Inspiration or ideas
- JavaScript took it's idea of prototypal inheritance from Self
- 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]
Similar syntax
- C, C++, Java, JavaScript
- 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.
Similar projects
- http://www.roundcrisis.com/2016/02/13/Database-programming/, http://www.roundcrisis.com/2016/02/14/Database-programming-ii/
- http://archive.oreilly.com/pub/a/oreilly/news/languageposter_0504.html Most beautiful timeline with reasonable number of languages (pdf). SmallTalk have Simula as influencer which is misleading, but also have LISP which is fair enough.
- http://rigaux.org/language-study/diagram.html Timeline with big number of languages
- https://www.levenez.com/lang/ Timeline with very big number of languages (pdf).
- http://www.digibarn.com/collections/posters/tongues/ Have some serious misleading links between languages (example: Fortran -> LISP), but like its idea on marking status of language: Active, Protected, Endangered, Extinct.
- https://blog.ouseful.info/2012/07/03/mapping-how-programming-languages-influenced-each-other-according-to-wikipedia/ Big graph based on semantic data, but not very useful
- https://exploringdata.github.io/info/programming-languages-influence-network/ Big beautiful graph, but not very useful
More ideas
Add info about authors to programming languages.
Add concpets and their connection to languages.
Add links to scientific papers behind language concepts.
- http://bibliography.selflanguage.org/
- https://github.com/rust-lang/rust-wiki-backup/blob/master/Note-research.md
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].
Other links
- 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
- http://www.ibm.com/developerworks/library/l-linux-shells/
- https://www.emacswiki.org/emacs/EmacsHistory
- http://www.moolenaar.net/vimstory.pdf
- http://www.linfo.org/vi/history.html
- https://www.levenez.com/unix/unix.pdf
- https://www.levenez.com/unix/
- https://commons.wikimedia.org/wiki/File:Unix_history-simple.png
- http://i.stack.imgur.com/NZx8g.png
- https://en.wikipedia.org/wiki/Timeline_of_programming_languages
- http://visual.ly/programming-languages-world
- https://akr.am/languages/
History of computation
- https://github.com/JoannaSharrad/presentations/blob/master/The%20Six%20Degrees%20of%20_%20Computability.pdf
- https://www.youtube.com/watch?v=2oNmR0q1uA0
- https://pron.github.io/computation-logic-algebra
Good papers
- https://www.cs.cmu.edu/~crary/819-f09/
- http://blog.fogus.me/2011/09/08/10-technical-papers-every-programmer-should-read-at-least-twice/
- https://github.com/nuprl/10PL