La relatividad lingüística es la idea de que el lenguaje da forma a la forma en que pensamos. Mi pregunta es, ¿cuánto y en qué medida se aplica esto a la programación?
- ¿Algunos lenguajes nativos y naturales son más adecuados para pensar en programación que otros? Por ejemplo, ¿se puede decir lo siguiente de manera más concisa en un idioma que no sea 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.
- ¿Un programador de habla china ve la programación en una lente radicalmente diferente que un programador de habla inglesa, o las diferencias se desvanecen cuando ambos están inmersos en el tema?
- ¿Es más fácil pensar en algunos lenguajes y dominios de programación en un idioma u otro? Por ejemplo, ¿es más fácil asimilar a Ruby si eres japonés porque el creador de Ruby es japonés?
Tenga en cuenta que esta pregunta no se centra en "cómo afectan los lenguajes de programación a la forma en que las personas piensan sobre la programación", sino más bien "cómo afectan los lenguajes naturales a la forma en que las personas piensan sobre la programación".
Para sacarlo del camino, un idioma que claramente tiene una ventaja pragmática es el inglés . Creo que la ventaja tiene poco que ver con los lenguajes de programación que eligen como palabras clave en inglés if
, for
, while
, y do
, al igual que los músicos que no hablan italiano no se haya disparado por palabras como punto fuerte . Tiene más que ver con la comunicación de ideas con otros programadores, ya que el inglés es la lengua franca en estos días, al menos en el mundo de la programación. Por ejemplo, para hacer una pregunta en StackOverflow, realmente necesita saber inglés y saberlo bastante bien si quiere buenas respuestas. Aunque esto suena como una actitud imperialista, realmente es cierto en la práctica.
Aparte de eso, ¿cómo afectan las propiedades intrínsecas de los lenguajes a cómo los programadores que los hablan piensan sobre estructuras de datos, algoritmos, etc.? ¿Hay algún lenguaje particularmente conciso cuando se trata de hablar de lógica y programación, permitiendo a los hablantes nativos de esos idiomas pensar más rápido?
fuente
Implement quick sort
.Respuestas:
Ah, la hipótesis de Sapir-Whorf contra la guerra de hipótesis de la Estructura Profunda de Chomsky ...
La programación es matemática. La matemática es filosofía aplicada. La pregunta es, entonces, qué lenguaje natural puede describir exactamente los conceptos matemáticos sin rascarse la cabeza de manera significativa. Dicho de otra manera, ¿qué idiomas pueden manejar fácilmente la metafísica aristotélica?
El proverbial lenguaje 'salvaje' puede tener dificultades iniciales para expresar las abstracciones de primer orden que se requieren. Sin embargo, sin embargo! - Los humanos pueden aprender nuevas palabras y nuevos conceptos. El griego antiguo no comenzó con términos filosóficos; tuvieron que ser inventados y luego transportados a otros idiomas.
Considerando que las matemáticas son universales, postulo que la fuerte hipótesis de Sapir-Whorf es falsa.
fuente
No sé si algún lenguaje natural en particular se presta para una mejor programación (¿excepto quizás el latín?). Sé que saber más de un idioma es bastante poderoso.
Dijkstra dijo en una de sus últimas entrevistas (reimpreso en CACM Vol. 53 No. 8, p. 44):
fuente
El turco es un idioma muy interesante, ya que tiene reglas estrictas sin excepciones (que yo sepa), es casi perfectamente libre de redundancia, no tiene género gramatical y, en palabras, puede expresar tanto como frases en inglés.
hablar en turco me hace pensar en lo que quiero lograr, qué información quiero transmitir y menos en qué palabras usar.
editar
Por supuesto turco tiene palabras para representar el género biológico. Pero no tiene separación en he / she / it - en turco "o".
O en español dirías "profesor / profesora" y en alemán "Lehrer / Lehrerin". En turco, debe usar palabras adicionales para indicar el género, similar al inglés.
En turco el profesor es öğretmen. Para señalar a una maestra, dirías "kadın öğretmen" - maestra. Pero a pesar del alemán, donde, si no se feminiza agregando un "-in", el valor predeterminado es masculino, öğretmen no tiene género, ya que no lo hay.
Otra cosa que no está disponible en turco son artículos como "el / la", "the", "der / die / das", ya que generalmente es solo información que ya está disponible según el contexto.
Pero hay palabras para expresar "esto", "este / esta", "diese / dieses / diese", por ejemplo "bu".
Esta es información adicional, ya que apunta a un determinado objeto.
fuente
Creo que es más probable que el lenguaje de programación que está utilizando dé forma a la forma en que piensa sobre el problema, los nombres de variables y clases, etc., son solo caracteres que representan algo. Aunque es muy probable que los programadores en diferentes culturas piensen en programar de manera diferente debido a su lenguaje hablado y la forma en que aprendieron.
fuente
En mi opinión, el lenguaje natural no importa (o al menos no debería importar) en absoluto cuando se habla de los métodos o ideas que está intentando realizar con su código.
Como dijiste tú mismo, cuando trabajas con el código en sí y escribes documentaciones sobre el código, el inglés es lo más apropiado. Pero como el código en sí mismo es solo una artesanía , la fuerza real de un programador / informático radica sobre eso con ideas, algoritmos y esas cosas, y luego, el lenguaje en el que se describen esas cosas no tiene importancia para el contenido real.
fuente
Este fue un tema que me interesó mucho en algún momento, por lo tanto, mi dolor aún mayor (ahora) es que no puedo encontrar los marcadores que tenía en ese momento.
Guardé un enlace en el que me topé el otro día, ¿Diferentes idiomas equivalen a diferentes realidades? que las tangentes de alguna manera en él (lea los comentarios también). Algunos son interesantes
De todos modos ...
fuente
El inglés es bastante eficiente y conciso. La traducción a la mayoría de los idiomas hará que una idea sea más larga de expresar .
También se acepta generalmente que no hay lenguajes naturales primitivos . Todos los lenguajes naturales en uso activo tienen el mismo nivel de expresividad. Eso no quiere decir que las ideas no estén formadas por el lenguaje, pero no creo que el lenguaje natural sea una gran influencia.
fuente