Houve pesquisa em linguística de programação?


18

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  ?


6
O Perl foi criado por um linguista e é mais confuso do que o próprio idioma inglês.
Job

1
@Job: E existe há mais de 23 anos, é instalado por padrão em inúmeras plataformas semelhantes ao Unix, e ainda é usado regularmente para tudo, desde automação (para a qual é muito mais limpa que o shell scripting) até desenvolvimento da Web (para a qual é mais limpo que o PHP) para seu propósito original de processamento de texto com expressões regulares (para as quais ele estabeleceu o padrão de fato do setor). Claro que é confuso, mas de uma maneira que funciona bem para as pessoas, e é aí que, no desenvolvimento de Perl, a formação linguística de Larry foi uma benção.
Jon Purdy

@Job, o efeito é chamado "Pior é Melhor" pt.wikipedia.org/wiki/Worse_is_better .
Apalala 25/03

@Aplala: Isso não está relacionado. Se qualquer coisa, Perl é um contra-exemplo, porque é rico em recursos e complexo e popular.
Jon Purdy

Respostas:


6

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


Em nossa pesquisa (eu tinha um tutor), examinamos o grego e o latim porque eles tinham gramáticas bem definidas que cobriam bem todos os papéis que uma palavra poderia ter em uma frase por sua declinação. Não foi bom o suficiente, e os registros de como as pessoas realmente falam essas línguas dizem que era muito diferente do que as gramáticas indicavam, como acontece com as línguas modernas.
Apalala 20/03

4
Em relação ao grego antigo e ao latim - parte da questão aqui é que os textos sobreviventes tendem a ser formais por natureza - ensaios, contratos, decisões legais, etc. Se você pensar nas mensagens que enviamos dia a dia - "Olá querida, por favor leite a caminho de casa "e" Jim - lembre-se do relatório Casey para as 9 horas "- a maioria dessas mensagens transitórias na Roma antiga se perderá para sempre no tempo.
HorusKol

2
Isso não é inteiramente verdade. Minha mãe ocasionalmente fala sobre suas aulas de latim no ensino médio e menciona uma peça que eles traduzem, um memorando de um patrício romano para seu motorista de carruagem. A essência era: "Por favor, na hora do rush, NÃO seja pego atrás da carruagem de tal ou tal. Não sei o que ele alimenta seus cavalos, mas o fedor é TERRÍVEL."
John R. Strohm 21/03

4

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.

evolução da linguagem de programação


1
Isso é muito mais parecido com o que eu estava procurando. Acho que também estou procurando correlação direta com morfologia e fonologia, além da óbvia associação com sintaxe que vem do trabalho com gramáticas formais.
Jon Purdy

@ Jon Bem, a outra tendência óbvia é que o inglês era e é a linguagem natural dominante subjacente a todas as linguagens de programação, sintática e gramaticalmente. As linguagens de programação são da esquerda para a direita, primeiro do verbo. O japonês, por exemplo, é muito diferente, mas não conheço nenhum esforço para desenvolver uma linguagem de programação no estilo japonês. en.wikipedia.org/wiki/Language_Japanese#Sentence_structure
Apalala

@Aplala: a ordem SOV é comum em linguagens orientadas a pilha, operadores de infix contam como SVO e funções (Lisp é o exemplo patológico) são VSO. Definitivamente, o inglês tem uma forte influência, mas acho que existem outros fatores em ação ... Talvez eu tenha que fazer essa pesquisa. : P
Jon Purdy /

@ Jon Sim, eu esqueci o Forth e o Postcript, que são baseados em pilha e SOV. Entre em contato se você iniciar a pesquisa. Eu me especializei em teoria da linguagem na universidade, e as linguagens de programação ainda são meu hobby. Tenho lembranças em primeira mão de muitas delas (Simula, Prolog, LISP).
Apalala 25/03

@ Jon Você pode achar interessante que muitos programadores de língua espanhola prefiram usar identificadores em espanhol, mesmo que correspondam mal às linguagens de programação, bibliotecas, estruturas, padrões e ferramentas que usam. Seus programas acabam em "espanhol". Já vi gostos de programadores com idiomas nativos em outros idiomas com herança romana / latina, como os europeus do leste. Não tenho idéia do que os programadores do Extremo Oriente (chinês, japonês, coreano), russo ou árabe gostam de fazer.
Apalala 25/03

1

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.