language agnostic - ¿El conocimiento de un lenguaje natural bien ayuda con la programación?
language-agnostic nlp (5)
Todos escuchamos que las matemáticas al menos ayudan un poco con la programación. Mi pregunta, sin embargo, ¿el inglés u otras habilidades del lenguaje natural ayudan con la programación? Sé que tiene que ayudar con la documentación técnica, pero ¿qué hay de la programación actual? ¿Existen ciertos constructos en un lenguaje de programación también en los lenguajes naturales? ¿Saber cómo escribir un documento de investigación de 20 páginas ayuda a escribir un proyecto de programación loc de 20k?
Dijkstra fue tan lejos como para decir: "Además de una inclinación matemática, un dominio excepcionalmente bueno de la lengua materna es el activo más importante de un programador competente".
Editar: sí, estoy razonablemente seguro de que estaba hablando de la parte de programación del trabajo. Aquí hay una cita un poco más completa:
Los problemas de la administración de empresas en general y de la administración de bases de datos en particular son demasiado difíciles para las personas que piensan en IBMerese, compuesto por inglés descuidado.
Sobre el uso del lenguaje: es imposible afilar un lápiz con un hacha roma. Es igualmente vano tratar de hacerlo con diez ejes desafilados en su lugar.
Además de una inclinación matemática, un dominio excepcionalmente bueno de la lengua materna es el activo más importante de un programador competente.
Desde la EWD498 .
Ciertamente no puedo hablar en favor de Dijkstra, pero creo que es imposible separar claramente la parte en la que realizas la programación de la parte en la que interactúas con otras personas. Solo por ejemplo, incluso cuando trabajas solo, es crucial que puedas comprender (clara y sin ambigüedades) las notas que escribiste sobre qué hacer, la naturaleza de un error, etc. Es necesario un buen dominio del inglés. incluso cuando nadie más está involucrado en absoluto (y, por supuesto, eso es inusual, excepto en tareas triviales).
No sé sobre la causalidad, pero el conjunto de habilidades necesarias para escribir se superpone bastante con las necesarias para la programación: saber cómo planificar, ser capaz de mantener una gran cantidad de detalles consistentes, ser capaz de dejar las cosas claras para un futuro lector, sabiendo cómo organizar sus pensamientos y el producto resultante. Eso no quiere decir que un autor exitoso sería un buen programador, pero un programador con buenas habilidades lingüísticas y las mismas habilidades lógicas / matemáticas / deductivas es probablemente un mejor programador que uno con poca habilidad lingüística: al menos el código tiene una mayor posibilidad de ser comprensible.
Sí. Las fuertes habilidades del lenguaje natural te ayudan a organizar tus pensamientos de una manera coherente que los demás puedan comprender fácilmente. Eso puede ayudar a mejorar su código en todo, desde nombrar variables, métodos, clases, etc. hasta expresar los contextos de los objetos en su modelo. Las prácticas como la programación de pares requieren que pueda comunicarse bien con su compañero para escribir un buen código. Técnicas como Domain Driving Design enfatizan el uso del lenguaje de dominio de la empresa en su código. Las habilidades del lenguaje natural lo facilitan. Y hay un impulso fuerte en la industria del desarrollo hacia herramientas más naturales similares al lenguaje, por ejemplo, muchas de las herramientas de prueba más nuevas como rspec, pepinillo, etc., se están moviendo hacia una sintaxis similar al lenguaje más natural. Una de las cosas que a mucha gente le gusta de los lenguajes dinámicos como Ruby y Python es que el código tiende a leer más como un lenguaje natural.
La programación no se trata solo de escribir código. En cualquier proyecto de programación de cualquier tamaño, será necesario:
- documentos iniciales de propuesta de proyecto
- diseño y documentos arquitectónicos
- manual de programadores
- manual de usuario
- materiales de entrenamiento
- comunicación con terceros proveedores
- etc.
En cada gran proyecto en el que he trabajado, creo que gasté al menos el 50% de mi tiempo en los documentos en inglés. Entonces sí, la capacidad de explicarte y expresarse bien es extremadamente importante. ¿Lleva a escribir un mejor código? Una vez más, yo diría que sí, la necesidad de proporcionar documentación clara se extiende a la necesidad de escribir un código mejor, itnerfaces et al.
Permítanme decir lo que debería ser lo obvio: toda persona saludable de más de 12 años conoce al menos un idioma natural. Además, todas las personas sanas mayores de 12 años pueden generar y analizar el lenguaje natural en un lenguaje complejo y rico, y expresar y comprender un conjunto extremadamente grande de ideas. En general, no es probable que las personas tengan una capacidad limitada para debatir problemas por su idioma, sino por el tipo de cosas que experimentaron y aprendieron.
Una vez dicho esto, hay varias habilidades relacionadas con el lenguaje que quizás hayas pensado.
Estilo de escritura Mencionaste esos específicamente. El lenguaje escrito es diferente del lenguaje hablado. Mucho menos intuitivo Esta es una de las razones por las cuales las personas deben recibir capacitación por escrito a lo largo de sus años en el sistema educativo.
La codificación realmente no implica escribir. Quiero decir, hay comentarios, pero pueden ser bastante lacónicos. Por supuesto, el trabajo de un programador generalmente involucra al menos algunos escritos de documentos y habilidades de escritura para marcar una diferencia allí.
Habilidades analíticas Las habilidades analíticas son un concepto complicado (por no decir borroso). Las habilidades analíticas no son realmente sobre el lenguaje, pero a pesar de que se les enseña y prueba en absoluto, es en el contexto de escribir ensayos.
Las habilidades analíticas son obviamente muy importantes en la programación. No estoy seguro de que estas sean exactamente las mismas habilidades requeridas para escribir un buen ensayo sobre la eutanasia o lo que sea, pero como se sugirió anteriormente , pueden estar relacionadas.
Idioma extranjero Para las personas cuyo idioma nativo no es el inglés, es posible que necesiten un cierto dominio del inglés. No en la codificación misma (saber lo que "while" significa en inglés no es realmente crítico para entender lo que hace en Java), sino porque hay mucha capacitación y material de apoyo disponible principalmente en inglés (¿alguien mencionó ?). Sin embargo, el requisito de inglés puede diferir en el país en el que se encuentre y la compañía para la que trabaja.
Habilidades de comunicación . Ahhm. Nunca estuve exactamente seguro de lo que esto significa exactamente. Tal vez es una cosa cultural. Sospecho que se trata menos de conocer un idioma y más acerca de conocer gente .
Entonces, para algunos, Dijkstra es un venerable informático, pero no estoy seguro de que él supiera mucho sobre el lenguaje.