¿Qué quiere decir Dijkstra cuando recomienda un dominio excepcionalmente bueno de la lengua materna? [cerrado]

28

Dijkstra escribe aquí :

Además de una inclinación matemática, un dominio excepcionalmente bueno de la lengua materna es el activo más vital de un programador competente.

No entiendo la última parte de esta cita. ¿Puedes por favor explicar o elaborar?

PD: He crecido en la India. Hablo bengalí en casa; Hablo marathi en la comunidad en la que vivo; El hindi es el idioma nacional y es muy hablado, así que lo sé, y en la escuela y la universidad me enseñaron inglés como primer idioma. Por supuesto, ahora pienso en una multitud de idiomas y debo admitir que no tengo dominio sobre ninguno . ¿Esto realmente afecta mi aptitud de programación? Si es así, ¿cómo? y hay alguna solución ?

Chani
fuente
20
Interesante ... Tengo un buen amigo que es indio (tamil), y una vez lo vi congelarse por completo cuando alguien le preguntó cómo decir alguna frase "en su idioma". Hablando de eso con él más tarde, llegué a aprender que él NO TIENE un idioma. Él y su esposa crecieron hablando idiomas completamente diferentes, no puede hablar con sus suegros. Ambos hablan prácticamente el idioma de la ciudad donde se conocieron y el inglés. Es fascinante. No tenía idea de que India está tan fragmentada lingüísticamente.
Dan Ray
44
No es una coincidencia que los muy buenos programadores también tienden a ser muy buenos escritores; saber expresar tus pensamientos con claridad es una necesidad para ambas manualidades.
Jon Purdy
1
No puedo evitar preguntarme si habría menos interpretaciones de las palabras de Dijkstra si estuvieran escritas en su lengua materna (holandés), donde (supongo) que tenía un excelente dominio.
Brendan

Respuestas:

29

Si bien estoy de acuerdo con lo que ha dicho alex y rapid_now, creo que puede haber un giro diferente. Esta es mi propia teoría y no estoy sugiriendo que Dijkstra significara lo mismo.

¿Qué es el "dominio de un idioma"? Es la capacidad de tomar los componentes básicos de un idioma y ponerlos en frases y oraciones constructivas y útiles. Los alfabetos y los caracteres no tienen sentido en sí mismos. Necesitas juntarlos y sacarle un significado. Las palabras no tienen sentido por sí mismas; es solo cuando los pones en una secuencia apropiada basada en la sintaxis y la gramática que expresan ideas concretas.

¿No es exactamente lo mismo en la programación de computadoras? Reunimos algunas palabras clave y símbolos y los convertimos en cosas concretas y viables. Un lenguaje de programación tiene símbolos y gramática al igual que un lenguaje natural. El dominio de un lenguaje de programación requiere la capacidad de juntar estos símbolos y reglas (sin significado individual) para hacer que algo sea significativo y útil.

Creo que esto significa que existe una correlación directa entre la capacidad de una persona para aprender un lenguaje humano y un lenguaje informático. Ambos necesitan el mismo conjunto de habilidades humanas y capacidad de pensamiento. Eche un vistazo entre sus colegas, y encontrará que aquellos con habilidades de programación pobres también son los que no pueden hablar o escribir tan claramente como los demás. Aquellos que son buenos para elegir los idiomas humanos tienen las habilidades necesarias para convertirse en buenos programadores también.

DPD
fuente
3
+1, esta fue mi interpretación inicial de la declaración de Dijkstra cuando la leí.
Rob
1
@quickly_now: "una gran cantidad de programadores que pueden escribir un código muy bueno pero que carecen de la capacidad de comunicarse bien ya sea para hablar o escribir" Discutiría eso. Cambiaría eso de muy bueno a aceptable . Después de 30 años como contratista, he conocido a muchos programadores. Los inarticulados pueden, eventualmente, producir código de trabajo. Pero los buenos programadores en realidad pueden escribir en una variedad de idiomas, tanto naturales como artificiales.
S.Lott
44
La esencia de ser un buen programador es ser un buen comunicador. Así lo interpreté.
Neil
8
@quickly_now, Neil, Onésimo; Creo que es un poco más profundo que la comunicación verbal o escrita. Creo que está hablando sobre la relación entre el lenguaje y la cognición, por ejemplo. web.mit.edu/newsoffice/2008/language-0624.html . Creo que significa dominar algo de tonque (por lo general, el tonque nativo de uno, ya que es poco común ser más competente en un segundo o tercer idioma) indica fuertes construcciones de lingüística mental que se corresponden directamente con la capacidad de programación.
Rob
1
@OnesimusUnbound, creo que Dijkstra mencionó la lengua nativa porque es lógico esperar que las personas sean buenas en su lengua nativa (que en muchos casos, pero no en todos, es también su idioma de desestructuración) pero no necesariamente en su segundo / tercer idioma. . Sin embargo, en el mundo moderno puede ser diferente, por ejemplo, soy mucho mejor en inglés que en mi lengua materna. Pero eso es porque nunca lo aprendí en la escuela
DPD
23

Dijkstra dice que debe poder escribir y hablar de manera clara, concisa y contundente en el lenguaje ambiental de su lugar de trabajo. Tiene toda la razón: a menos que pueda hablar y escribir sobre cuestiones técnicas (y no técnicas) de una manera que otros puedan entender de inmediato, usted se ve obstaculizado y algo ineficaz como ingeniero de software.

La idea es que escribir sobre el código es tan importante como escribir el código en sí.

SO es el ejemplo perfecto: ¿cuántas veces hemos visto preguntas buenas, incisivas y valiosas eliminadas o cerradas porque el póster no podía expresarse bien en inglés? Respuesta: demasiados.

Pete Wilson
fuente
7

La cita dice que necesita saber su idioma nativo (por ejemplo, marathi en su caso). Este es un activo importante.

Los psicólogos generalmente piensan que conocer bien un idioma te ayuda a expresar mejor tus pensamientos. Algunos dicen que todo el pensamiento que hacemos se limita a nuestro idioma principal. Cuanto más rico sea el lenguaje (y el conocimiento del mismo), mejor podrá la persona comunicarse y estructurar las ideas.

Saber varios idiomas también ayuda a comprender diferentes modelos de pensamiento.

alexwriteshere
fuente
77
Si "Algunos dicen que todo el pensamiento que hacemos se limita a nuestro idioma principal" es cierto, entonces mi idioma nativo no es (ya no) mi idioma principal. Vamos Mi idioma nativo y primario es el holandés, pero mi lenguaje de pensamiento mientras programo es inglés ... Y no solo porque la mayoría de la terminología y casi todos los artículos que me ayudan a pensar sobre los desafíos de programación están en inglés. De hecho, me resulta difícil trabajar en una computadora que habla holandés conmigo, no puede encontrar nada y depende en gran medida de la ubicación del menú de las cosas. (Otra razón por la cual el menú personalizado apesta).
Marjan Venema
7

Mirando la pieza en su totalidad, es una lista interesante pero data de 1975. Es justo decir que, hasta cierto punto, los tiempos han cambiado en el período intermedio, lo que hace que partes de esa lista de principios sean algo obsoletas.

Una habilidad clave que creo que los programadores deberían tener es la capacidad de comunicarse de manera efectiva. Esto no solo significa explicación; Significa comprensión. Independientemente de cuál sea su idioma de trabajo, el inglés en su caso, aunque no sea su idioma nativo, aquellos que tienen dificultades para comunicarse efectivamente en su idioma nativo no lo encontrarán más fácil en otro lugar.

Como nota general, es justo decir que, independientemente de cuál sea su posición en la vida, si tiene dificultades en su idioma nativo, estará en desventaja en su vida cotidiana.

No me molestaría lo que él quiere decir con dominio: en base a su contribución anterior, sospecho que tiene un dominio del inglés más que adecuado y, a partir de eso, extrapolo que se comunica efectivamente en sus otros idiomas.

temptar
fuente
Cierto. Creo que Dijkstra tiene razón, pero la palabra "programadores" debería ser reemplazada por "informáticos". Por supuesto, un científico necesita poder discutir y escribir en un lenguaje claro. Lo mismo se aplica a los programadores: no me atraes a pensar que discutes con tus colegas (también hablantes nativos) en otra lengua. Aquí en Holanda todos los entornos de desarrollo están en inglés, pero cuando discuto con mis colegas sobre un código lo hacemos en holandés.
vstrien
@vstrien, así que dime amigo, ¿qué harías si cada uno de tus colegas hablara un idioma nativo diferente? Esa es la situación aquí. cada cuerpo proviene de un "estado" indio diferente y tienen un idioma diferente (no me refiero al dialecto ... me refiero al lenguaje) espero que puedas entender eso: P y esto es exactamente lo que fue mi pregunta ... realmente no pensar en un idioma en particular (no puedo permitirme ya que tengo que hablar casi 3 idiomas con 6 personas diferentes en un lapso de una hora) Lo que quería preguntar era si esto sería una mala práctica
Chani,
RYUZAKI, esta es una situación que la gente golpea en diferentes ámbitos de la vida. Solía ​​trabajar en una organización que tenía 3 idiomas de trabajo. En una empresa como la suya, si tiene un idioma de trabajo, le está yendo bien. Lo que encontrará es que hay ciertas partes de su vida que funcionarán en ciertos idiomas.
temptar
@RYUZAKI: lo siento, no te estaba dirigiendo cuando dije que no discutías con tus colegas en un idioma no nativo :). Pero creo que en ese caso es importante encontrar formas de comunicarse con claridad, y lo más fácil que se me ocurre es usar un idioma para explicarse entre sí. Una vez más, no creo que te afecte en tus habilidades de programación, pero seguro que perjudica la productividad si no puedes comunicarte por código ...
vstrien
1
@temptar: "un número significativo y creciente de programadores en todo el mundo sin experiencia en matemáticas aplicadas" no invalida la declaración en absoluto. Su observación equivale a "las personas sin capacitación formal en matemáticas aún pueden lograr aprender algunas de las matemáticas aplicadas detrás de la programación". Estoy de acuerdo con tu observación. Pero eso no invalida (u obsoleto) la declaración de Dijkstra en absoluto. De hecho, parece complementario.
S.Lott
5

Sospecho que se refiere a tener una buena comprensión de lo que la gente quiere de ti; en otras palabras, una buena capacidad de comunicación verbal.

(Para expresar mi opinión: parte de esto significa, en el contexto de la programación, que a veces es necesario comprender lo que las personas NO dicen, o lo que dicen, pero no con mucha claridad).

rápidamente_ahora
fuente
1
También agregaría la capacidad de transmitir sus ideas claramente a los demás. Uno es tan importante como el otro imo :)
Demian Brecht
1
Estoy de acuerdo con lo que dices, pero no creo que de eso esté hablando Dijkstra.
Rob
1
Todo esto me recuerda las clases de literatura inglesa en la escuela secundaria. Puedes discutir durante horas sobre lo que quiso decir el autor. Siempre me preguntaba por qué no vamos y les preguntamos. Oh ... literatura inglesa. Algunos de ellos están muertos ahora. (Siempre pensé que no deberías intentar interpretar demasiado a F Scott Fitzgerald: su visión del mundo se formó al mirarla a través de una botella de whisky. A mi profesor de inglés tampoco le gustó que dijera eso)
rápido_ahora
Puede discutir sin sentido durante horas, o puede apoyar sus argumentos con hechos. Por ejemplo, mire las otras citas de Dijkstra en la misma página, por ejemplo. "Es prácticamente imposible enseñar una buena programación a los estudiantes que han tenido una exposición previa a BASIC: como programadores potenciales, son mutilados mentalmente más allá de la esperanza de regeneración". - hablando nuevamente sobre el tema del lenguaje y la cognición.
Rob
Y tal afirmación es simplemente inflamatoria. Crikey, comencé a programar en BASIC hace unos 30 años porque era todo lo que había. No me considero superhombre, pero tampoco estoy "mutilado mentalmente más allá de la esperanza de la regeneración". Considero que tal declaración es bastante ofensiva, y significa que trato cualquier otra cosa que él diga como de credibilidad limitada.
rapid_now
2

Creo que ser bueno en (cualquier) idioma sirve para esto:

Si su punto no está claro, puede pensar, revisar y volver a exponer de manera mejorada. Hasta que lo que diga sea exactamente lo que quiere que la siguiente persona (o máquina) entienda.

essbeev
fuente