O que Dijkstra quer dizer quando recomenda um domínio excepcionalmente bom da língua nativa de alguém? [fechadas]

28

Dijkstra escreve aqui :

Além de uma inclinação matemática, um domínio excepcionalmente bom da língua nativa é o ativo mais vital de um programador competente.

Não compreendo a última parte desta citação. Você pode explicar ou elaborar?

PS Eu cresci na Índia. Eu falo bengali em casa; Falo Marathi na comunidade em que vivo; O hindi é a língua nacional e é muito falada, então eu sei disso e, na escola e na faculdade, fui ensinado com o inglês como primeira língua. Claro, agora penso em várias línguas e devo admitir que não tenho domínio sobre nenhuma . Isso realmente está afetando minha aptidão para programação? Se sim, como? e existem soluções ?

Chani
fonte
20
Interessante ... Eu tenho um bom amigo indiano (tâmil) e uma vez o vi congelar completamente quando alguém lhe perguntou como dizer alguma frase "em seu idioma". Conversando sobre isso com ele mais tarde, descobri que ele não tem um idioma. Ele e sua esposa cresceram falando línguas diferentes, ele não pode conversar com seus sogros. Os dois praticamente falam a língua da cidade onde se conheceram e o inglês. É fascinante. Eu não tinha ideia de que a Índia é tão linguisticamente fragmentada.
Dan Ray
4
Não é por acaso que bons programadores tendem a ser bons escritores; saber expressar seus pensamentos com clareza é uma necessidade para os dois ofícios.
26412 Jon Purdy
1
Não consigo deixar de pensar se haveria menos interpretações das palavras de Dijkstra se elas fossem escritas em sua língua nativa (holandês), onde (presumo) ele possuía um domínio excelente.
Brendan

Respostas:

29

Enquanto eu concordo com o que alex e rapid_now disse, acredito que pode haver uma rotação diferente. Esta é a minha própria teoria e não estou sugerindo que Dijkstra tenha o mesmo significado.

O que é "domínio de um idioma": é a capacidade de pegar os componentes básicos de um idioma e colocá-los em frases e frases construtivas e úteis. Alfabetos e personagens não têm sentido em si mesmos. Você precisa reuni-los e obter um significado disso. As palavras não têm sentido por si mesmas; somente quando você os coloca em uma seqüência adequada, com base na sintaxe e na gramática, eles expressam idéias concretas.

Não é exatamente o mesmo na programação de computadores? Reunimos algumas palavras-chave e símbolos e criamos coisas concretas e viáveis. Uma linguagem de programação possui símbolos e gramática como uma linguagem natural. O domínio de uma linguagem de programação requer a capacidade de agrupar esses símbolos e regras (individualmente sem sentido) para criar algo significativo e útil.

Acredito que isso significa que existe uma correlação direta entre a capacidade de uma pessoa de aprender uma linguagem humana e uma linguagem de computador. Ambos precisam do mesmo conjunto de habilidades humanas e capacidade de raciocínio. Dê uma olhada entre seus colegas e você descobrirá que aqueles com pouca habilidade em programação também são os que não conseguem falar ou escrever tão claramente quanto os outros. Aqueles que são bons em escolher idiomas humanos têm as habilidades necessárias para se tornarem bons programadores também.

DPD
fonte
3
+1, essa foi minha interpretação inicial da declaração de Dijkstra quando a li.
611 Rob
1
@quickly_now: "um grande número de programadores que conseguem escrever um código muito bom, mas que não têm capacidade de se comunicar bem em falar ou escrever", eu contestaria isso. Eu mudaria isso de muito bom para aceitável . Depois de 30 anos como contratado, conheci muitos programadores. Os inarticulados podem - eventualmente - produzir código funcional. Mas os bons programadores podem realmente escrever em uma variedade de idiomas, naturais e artificiais.
S.Lott
4
A essência de ser um bom programador é ser um bom comunicador. Foi assim que eu interpretei.
611 Neil
8
@quickly_now, Neil, Onésimo; Eu acho que é um pouco mais profundo do que a comunicação verbal ou escrita. Eu acredito que ele está falando sobre a relação entre linguagem e cognição, por exemplo. web.mit.edu/newsoffice/2008/language-0624.html . Eu acho que isso significa domínio sobre algum tonque (geralmente o tonque nativo de alguém, pois é incomum se tornar mais proficiente em uma segunda ou terceira língua) indica fortes construções lingüísticas mentais que correspondem diretamente à capacidade de programação.
Rob
1
@OnesimusUnbound, acho que Dijkstra mencionou a língua nativa porque é lógico esperar que as pessoas sejam boas em sua língua nativa (que em muitos casos, mas não em todos, também é a língua da não-construção), mas não necessariamente na segunda / terceira língua . No entanto, no mundo moderno, pode ser diferente, por exemplo, sou muito melhor em inglês do que na minha língua nativa. Mas isso é becuase eu nunca aprendi isso na escola
DPD
23

Dijkstra está dizendo que você deve ser capaz de escrever e falar de forma clara, concisa e vigorosa na linguagem ambiente do seu local de trabalho. Ele está perfeitamente certo: a menos que você possa falar e escrever sobre questões técnicas (e não técnicas) de uma maneira que outras pessoas possam entender imediatamente, você é prejudicado e um tanto ineficaz como engenheiro de software.

A idéia é que escrever sobre código é tão importante quanto escrever o próprio código.

SO é o exemplo perfeito: quantas vezes vimos perguntas boas, incisivas e valiosas serem abertas ou fechadas porque o pôster não conseguia se expressar bem em inglês? Resposta: muitos.

Pete Wilson
fonte
7

A citação diz que você precisa conhecer sua língua nativa (por exemplo, Marathi no seu caso). Este é um ativo importante.

Os psicólogos geralmente pensam que conhecer bem um idioma ajuda a expressar melhor seus pensamentos. Alguns dizem que todo o pensamento que fazemos é confinado à nossa língua principal. Quanto mais rica a linguagem (e o conhecimento dela), melhor a pessoa pode se comunicar e estruturar as idéias.

Conhecer vários idiomas também ajuda a entender diferentes modelos de pensamento.

alexwriteshere
fonte
7
Se "Alguns dizem que todo o pensamento que fazemos é confinado ao nosso idioma principal" é verdadeiro, então o meu idioma nativo não é (não é mais) o meu idioma principal? Vamos lá. Meu idioma nativo e principal é o holandês, mas meu idioma de pensamento durante a programação é o inglês ... E não apenas porque a maior parte da terminologia e quase todos os artigos que me ajudam a pensar em desafios de programação são em inglês. Na verdade, acho difícil trabalhar com um computador que fala holandês comigo, não consegue encontrar nada e confia muito na localização do menu. (Outra razão pela qual o menu personalizado é péssimo).
Marjan Venema
7

Observando a peça na íntegra, é uma lista interessante, mas data de 1975. É justo dizer que, em certa medida, os tempos mudaram no período intermediário, tornando partes dessa lista de princípios um tanto obsoletas.

Uma habilidade essencial que acredito que os programadores devem ter é a capacidade de se comunicar de maneira eficaz. Isso não significa apenas explicação; isso significa entendimento. Independentemente de qual seja o seu idioma de trabalho, o inglês no seu caso, embora não seja o seu idioma nativo, aqueles que tiverem dificuldades em se comunicar efetivamente em seu idioma nativo não acharão mais fácil em outros lugares.

Como uma observação geral, é justo dizer que, independentemente de qual seja sua posição na vida, se você tiver dificuldades em seu idioma nativo, será prejudicado no seu dia-a-dia.

Eu não me incomodaria com o que ele quer dizer com domínio - com base na sua contribuição acima, suspeito que você tenha mais do que o domínio adequado do inglês e, a partir disso, extrapolo que você se comunique efetivamente em seus outros idiomas.

tentador
fonte
Verdade. Eu acho que Dijkstra tem razão, mas a palavra "programadores" deve ser substituída por "cientistas da computação". É claro que um cientista precisa ser capaz de argumentar e escrever em linguagem clara. O mesmo se aplica aos programadores: você não me leva a pensar que discute com seus colegas (também falantes nativos) em outra língua. Aqui na Holanda, todos os ambientes de desenvolvimento estão em inglês, mas quando estou discutindo com meus colegas sobre um pedaço de código, fazemos em holandês.
vstrien
@ vstrien então me diga, amigo, o que você fará se cada um de seus colegas falar um idioma nativo diferente? essa é a situação aqui. todo corpo vem de um "estado" indiano diferente e eles têm uma linguagem diferente (não quero dizer dialeto ... quero dizer linguagem) espero que você possa pensar nisso: P e isso é exatamente o que minha pergunta era ... realmente não pense em um idioma específico (eu não posso me permitir, já que eu tenho que falar quase 3 idiomas com 6 diff ppl em um período de uma hora) O que eu queria perguntar era se isso seria uma má prática
Chani
RYUZAKI, esta é uma situação que as pessoas atingem em muitas esferas da vida. Eu trabalhava em uma organização que tinha três idiomas de trabalho. Em uma empresa como a sua, se você tiver um idioma de trabalho, estará se saindo bem. O que você encontrará é que existem certas partes da sua vida que funcionarão em certos idiomas.
tentar
@RYUZAKI: desculpe, eu não estava falando com você quando disse que você não discute com seus colegas em um idioma não nativo :). Mas acho que, nesse caso, é importante encontrar maneiras de se comunicar claramente - e a coisa mais fácil em que posso pensar é usar um idioma para explicar um ao outro. Mais uma vez, eu não acho que isso afeta você em suas habilidades de programação, mas com certeza dói na produtividade se você não pode se comunicar através de código ..
vstrien
1
@temptar: "um número significativo e crescente de programadores em todo o mundo sem experiência em matemática aplicada" não invalida a declaração. Sua observação equivale a "pessoas sem treinamento formal em matemática ainda podem aprender um pouco da matemática aplicada por trás da programação". Eu concordo com a sua observação. Mas isso não invalida (ou obsoleta) a afirmação de Dijkstra. De fato, parece complementar.
S.Lott 6/11/11
5

Suspeito que ele esteja se referindo a entender bem o que as pessoas querem de você - em outras palavras, boa capacidade de comunicação verbal.

(Para colocar minha própria inclinação: parte disso significa, no contexto da programação, que às vezes você precisa entender o que as pessoas NÃO dizem, ou o que dizem, mas não muito claramente.)

rapid_now
fonte
1
Eu também colocaria ali a capacidade de transmitir suas idéias claramente para os outros. Um deles é tão importante quanto o outro imo :)
Demian Brecht
1
Concordo com o que você diz, mas acho que não é disso que Dijkstra está falando.
6111 Rob
1
Tudo isso me lembra aulas de literatura inglesa no ensino médio. Você pode discutir por horas sobre o que o autor quis dizer. Eu sempre me perguntava por que não apenas perguntávamos a eles. Oh ... literatura inglesa. Alguns deles estão mortos agora. (Eu sempre fiz figura no entanto, que você não deve tentar e interpretar F Scott Fitzgerald muito -.. A sua visão do mundo foi formada por olhando para ele através de uma garrafa de uísque Meu Inglês professor não gostava de mim dizendo que, qualquer um)
rapid_now
Você pode argumentar sem sentido por horas ou pode apoiar seus argumentos com fatos. Por exemplo, veja as outras citações de Dijkstra na mesma página, por exemplo. "É praticamente impossível ensinar boa programação a estudantes que tiveram uma exposição prévia ao BASIC: como programadores em potencial, eles são mentalmente mutilados além da esperança de regeneração". - novamente falando sobre o tema da linguagem e cognição.
Rob
E essa afirmação é apenas inflamatória. Crikey, comecei a programar no BASIC cerca de 30 anos atrás, porque era tudo o que havia. Não me considero super-homem, mas também não estou "mentalmente mutilado além da esperança de regeneração". Considero essa afirmação bastante ofensiva e isso significa que trato qualquer outra coisa que ele diga como tendo credibilidade limitada.
quickly_now
2

Eu acho que ser bom em (qualquer) idioma serve para isso -

Se o seu argumento não estiver claro, você pode pensar, revisar e reafirmar de maneira aprimorada. Até o que você diz é exatamente o que você quer que a próxima pessoa (ou máquina) entenda.

essbeev
fonte