Reli a pergunta e acho que minha resposta original não foi respondida. Aqui está outra tentativa.
Não, não tenho nenhuma pesquisa séria sobre linguística de linguagem de programação. Existem linhagens de idiomas traçadas para dois ramos principais e uma sub-filial:
- Procedimental. Von Neuman . Dijkstra . Fortran, Pascal, C.
- Orientado a Objeto. Simula. Conversa fiada.
- Funcional. McArthy . LISP.
Para aqueles de nós com décadas de experiência no campo, é óbvio que as linguagens de programação se cruzaram e, assim, encontramos a maioria dos aspectos de qualquer paradigma puro na maioria das linguagens de programação modernas, as agora chamadas linguagens de programação multiparadigmas : C #, Python, Java, .. Até mesmo linguagens funcionais anteriormente puras, como OCaml e Haskell, incluem recursos procedurais (através de mônadas ) e OO suficientes para permitir que você faça qualquer coisa.
O que aconteceu, eu acho, é que ficou óbvio que era caro (quando não tolo) ter que mudar as linguagens de programação apenas para poder aplicar o paradigma certo a um determinado subproblema.
Resta uma exceção à tendência na área de sistemas altamente paralelos e assíncronos. Lá, os idiomas preferidos são estritamente funcionais, como o Erlang , provavelmente porque é mais fácil pensar funcionalmente em sistemas tão complexos.
A parte não paradigmática da evolução está na sintaxe. Os idiomas que incentivavam ou até permitiam programas enigmáticos tornaram-se cada vez menos usados ( APL , AWK e até Perl e LISP). Atualmente, as sintaxes dominantes são as de linguagens mais legíveis (em vez de facilmente graváveis) como C (C ++, C #, Java, Objective-C, Scala, Go, IML, CSS, JavaScript e também Python), Pascal (Fortran 90+ x), Smalltalk (Ruby), ML / Miranda (OCaml, Haskell, Erlang) e SGML (HTML, XML).
Esse diagrama não é completamente preciso e não está atualizado, mas fornece uma boa idéia de quanto as linguagens de programação convergiram desde a era da linguagem por site da década de 1970.