Linguagens de programação são linguagens formais , mas, diferentemente de muitos formalismos, elas também possuem certo significado inerente definido por sua semântica operacional ou, no caso de linguagens de marcação, por semânticas de apresentação . E as linguagens de programação, embora de fato formais, são muito semelhantes às linguagens naturais, em termos da comunicação que permitem.
Embora o desenvolvimento de linguagens de programação seja artificial, os processos de evolução da linguagem natural, empréstimos, misturas e mutações têm contrapartes artificiais bastante claras. Então, eu estou me perguntando: já houve alguma pesquisa profunda e em larga escala sobre a evolução e o comportamento das linguagens de programação da perspectiva de um linguista ?
fonte
Respostas:
Lembre-se de que gramáticas formais, sem as quais a programação moderna não poderia ser, são o produto da pesquisa do linguista Noam Chomsky .
Um acidente de carro me impediu de terminar uma tese de graduação sobre o assunto que você pergunta, por isso não há referências que eu possa lhe dar, apenas uma opinião.
As línguas faladas evoluem a qualquer velocidade, dependendo do contexto, e de maneiras imprevisíveis como os contextos humanos imprevisíveis. O resultado da Segunda Guerra Mundial teve enormes efeitos no idioma japonês. Britânicos, australianos, sul-africanos e norte-americanos não falam o mesmo idioma. O uso de declinações verbais entre o que costumavam ser colônias espanholas tornou-se bastante diferente após duzentos anos de independência (as ex-colônias pensam que o espanhol da Espanha é arcaico ).
Apenas a força da eficiência sobre a fonética faz com que as diferentes palavras usadas com diferentes frequências em diferentes regiões sejam pronunciadas de maneira diferente: palavras muito comuns são desnatadas ou com erros ortográficos e as menos comuns são declaradas com a maior precisão possível.
As línguas naturais, com suas variações, nuances e evolução, não estão aptas ao determinismo que exigimos dos computadores. (Puxa! Dada a semelhança de interpretações erradas e segundas interpretações, parece que elas não são adequadas nem para as interações mais simples entre os seres humanos [abstendo-se de citar piadas sobre o que a namorada / namorado diz e o que realmente significa]])
fonte
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:
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.
fonte
Gosto das respostas de @ Apalala, que parecem mostrar uma convergência para algumas das principais linguagens de uso geral. Isso só faz sentido, uma vez que uma boa idéia em um pode, mais cedo ou mais tarde, ser captada pelos outros.
O que eu acrescentaria é que sempre que alguém está usando uma linguagem, eles necessariamente a estendem, adicionando termos, transformando-a em uma linguagem mais orientada para o domínio em questão. Às vezes isso é bastante direto, às vezes não. Aqui está um exemplo que não foi tão direto.
Uma propriedade que aprecio em uma linguagem de propósito geral é a extensão em que ela auxilia na definição de novas linguagens específicas de domínio.
fonte