ti-enxame.com

Qual linguagem natural tem vantagem quando se trata de programação?

relatividade linguística é a ideia de que a linguagem molda a maneira como pensamos. Minha pergunta é: quanto e em que medida isso se aplica à programação?

  • Algumas linguagens nativas e naturais são mais adequadas para pensar em programação do que outras? Por exemplo, o seguinte pode ser declarado de forma mais concisa em um idioma diferente do inglês? Select a pivot. Move all the items less than the pivot to one side of the list, and all the items greater than the pivot to the other side.
  • Um programador que fala chinês vê a programação em uma lente radicalmente diferente do que um programador que fala inglês, ou as diferenças desaparecem quando ambos estão imersos no assunto?
  • Algumas linguagens de programação e domínios são mais fáceis de pensar em uma linguagem ou outra. Por exemplo, é mais fácil grocar Ruby se você for japonês porque o criador do Ruby é japonês?

Observe que esta questão não está focada em "como as linguagens de programação afetam a maneira como as pessoas pensam sobre programação", mas sim "como as linguagens naturais afetam a maneira como as pessoas pensam em programação ".

Para tirar isso do caminho, um idioma que claramente tem uma vantagem pragmática é Inglês . Acho que a vantagem tem pouco a ver com as linguagens de programação escolherem palavras-chave em inglês como if, for, while e do, assim como músicos que não t falo italiano não são enganados por palavras como forte. Tem mais a ver com a comunicação de ideias com outros programadores, já que o inglês é a língua franca atualmente, pelo menos no mundo da programação. Por exemplo, para fazer uma pergunta no StackOverflow, você realmente precisa saber inglês e conhecê-lo muito bem se quiser boas respostas. Embora pareça uma atitude imperialista, é realmente verdade na prática.

Deixando isso de lado, como as propriedades intrínsecas das linguagens afetam o modo como os programadores que as falam pensam sobre estruturas de dados, algoritmos, etc.? Alguma linguagem é particularmente concisa quando se trata de falar sobre lógica e programação, permitindo que falantes nativos dessas linguagens pensem mais rápido?

21
Joey Adams

Ah, a hipótese Sapir-Whorf vs. as guerras de hipótese da Estrutura Profunda de Chomsky ...

Programação é matemática. Matemática é filosofia aplicada. A questão então se torna, qual linguagem natural pode descrever exatamente os conceitos matemáticos sem coçar a cabeça significativa. Dito de outra forma, quais linguagens podem lidar facilmente com a metafísica aristotélica?

A proverbial linguagem 'selvagem' pode ter inicial dificuldade em expressar as abstrações de primeira ordem que são necessárias. Entretanto- entretanto! - humanos podem aprender novas palavras e novos conceitos. O grego antigo não começou com termos filosóficos; eles tiveram que ser inventados e então transportados para outros idiomas.

Considerando que a matemática é universal, postulo que a hipótese forte de Sapir-Whorf é falsa.

3
Paul Nathan

Não sei se alguma linguagem natural em particular se presta a uma melhor programação (exceto, talvez, latim?). Eu sei que saber mais de um idioma é muito poderoso.

Dijkstra disse em uma de suas últimas entrevistas (conforme reimpresso em CACM Vol. 53 No. 8, p. 44):

Há uma diferença enorme entre alguém que é monolíngue e alguém que pelo menos conhece bem uma segunda língua, porque isso o torna muito mais consciente sobre a estrutura da linguagem em geral. Você descobrirá que certas construções em um idioma você simplesmente não consegue traduzir.

13
Frank Shearar

Turco é um idioma muito interessante, pois tem regras estritas sem exceções (que eu estou ciente), é quase perfeitamente redundante, não tem gênero gramatical e no Word pode expressar tanto quanto frases em inglês.

No passado, "Çekoslovakyalılaştıramadıklarımızdan mısınız?" que significa "Você é uma daquelas pessoas que não poderíamos fazer parecer da Tchecoslováquia?" foi muito popular e aceita como a palavra mais longa em turco. No entanto, os sufixos de pergunta (mısınız neste caso) são escritos separadamente, portanto, embora seja uma palavra, parecem duas palavras quando a palavra é escrita. Além disso, versões mais longas deste Word podem ser feitas facilmente, como "Çekoslovakyalılaştırabildiklerimizden miydiniz?". Por essas razões, a Palavra perdeu sua popularidade, mas ainda é um trava-línguas popular na Turquia.

falar em turco me faz pensar no que quero alcançar, que informações quero transmitir e menos em que palavras usar.

editar
É claro que o turco tem palavras para representar o gênero biológico. Mas não há separação em he/she/it - em turco "o".

Ou em espanhol você diria "profesor/profesora" e em alemão "Lehrer/Lehrerin". Em turco, você deve usar palavras extras para indicar o gênero - semelhante ao inglês.
Em professor turco é öğretmen. Para apontar uma professora, você diria "kadın öğretmen" - professora. Mas apesar do alemão, onde - se não for feminilizado adicionando um "-in" - o padrão é masculino, öğretmen não tem gênero, como não existe.

Outra coisa que não está disponível em turco são artigos como "el/la", "o", "der/die/das" - pois geralmente são apenas informações que já estão disponíveis pelo contexto.
Mas há palavras para expressar "este", "este/esta", "morre/morre/morre", por exemplo "bu".
Esta é uma informação extra, pois está apontando para um determinado objeto.

6
vikingosegundo

Acho que é mais provável que a linguagem de programação que você está usando moldará a maneira como você está pensando sobre o problema, os nomes de variáveis ​​e classes, etc, são apenas caracteres que representam algo. Embora seja muito provável que programadores em culturas diferentes pensem sobre programação de maneira diferente por causa de sua linguagem falada e da maneira como aprenderam.

2
MetaGuru

Em minha opinião, a linguagem natural não importa (ou pelo menos não deveria importar) ao falar sobre os métodos ou ideias que você está tentando realizar com o seu código.

Como você mesmo disse, ao trabalhar com o próprio código e escrever documentações sobre o código english é o mais apropriado. Mas como o código em si é apenas um feito à mão, a verdadeira força de um programador/cientista da computação está acima de ideias, algoritmos e coisas assim - e então, a linguagem em que essas coisas são descritas é completamente sem importância para o conteúdo real.

1
poke

Este foi um assunto que me interessou muito em algum momento, por isso minha tristeza ainda maior (agora), que não consigo encontrar os marcadores que tinha naquela época.

Salvei um link que encontrei outro dia, Diferentes idiomas são iguais a diferentes realidades? que tangencia um pouco a ele (leia os comentários também). Alguns são interessantes.

Enfim ...

0
Rook