it-swarm-es.com

¿Qué lenguaje natural tiene la ventaja cuando se trata de programación?

Relatividad lingüística es la idea de que el lenguaje da forma a nuestra forma de pensar. Mi pregunta es, ¿cuánto y en qué medida esto se aplica a la programación?

  • ¿Son algunos lenguajes nativos y naturales 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 el 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 desde una perspectiva radicalmente diferente a la de un programador de habla inglesa, o las diferencias se desvanecen cuando ambos están inmersos en el tema?
  • Son algunos lenguajes de programación y dominios más fáciles de pensar en uno u otro idioma. Por ejemplo, ¿es más fácil asimilar 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 la forma en que las personas piensan sobre la programación", sino más bien "cómo afectan los lenguajes naturales la forma en que la gente piensa en la programación ".

Para sacarlo del camino, un idioma que claramente tiene una ventaja pragmática es inglés . Creo que la ventaja tiene poco que ver con los lenguajes de programación que eligen palabras clave en inglés como if, for, while y do, al igual que los músicos que no t hablar italiano no se enfade con palabras como ¡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 necesitas saber inglés y saberlo bastante bien si quieres buenas respuestas. Si bien esto suena a actitud imperialista, realmente es cierto en la práctica.

Aparte de eso, ¿cómo afectan las propiedades intrínsecas de los lenguajes a la forma en que los programadores que los hablan piensan sobre las estructuras de datos, los algoritmos, etc.? ¿Hay algún lenguaje particularmente conciso cuando se trata de hablar de lógica y programación, lo que permite a los hablantes nativos de esos lenguajes pensar más rápido?

21
Joey Adams

Ah, la hipótesis de Sapir-Whorf contra las guerras de hipótesis de la estructura profunda de Chomsky ...

La programación es matemática. Las matemáticas son filosofía aplicada. La pregunta entonces es qué lenguaje natural puede describir exactamente conceptos matemáticos sin rascarse la cabeza de manera significativa. Dicho de otra manera, ¿qué lenguajes pueden abordar fácilmente la metafísica aristotélica?

El lenguaje proverbial 'salvaje' puede tener inicial dificultad 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 inventarse y luego trasladarse a otros idiomas.

Considerando que las matemáticas son universales, postulo que la fuerte hipótesis de Sapir-Whorf es falsa.

3
Paul Nathan

No sé si algún lenguaje natural en particular se preste a 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 (reimpresa en CACM Vol. 53 No. 8, p. 44):

Existe una enorme diferencia entre alguien que es monolingüe y alguien que al menos conoce bien un segundo idioma, porque te hace mucho más consciente de la estructura del lenguaje en general. Descubrirás que ciertas construcciones en un idioma simplemente no puedes traducir.

13
Frank Shearar

turco es un idioma muy interesante ya que tiene reglas estrictas sin excepciones (que yo sepa), es casi perfectamente libre de redundancias, no tiene género gramatical y en Word se puede expresar tanto como oraciones en inglés.

En el pasado "Çekoslovakyalılaştıramadıklarımızdan mısınız?" que significa "¿Es usted una de esas personas a las que no podemos hacer que se parezcan a Checoslovaquia?" fue muy popular y aceptado como la palabra más larga en turco. Sin embargo, los sufijos de la pregunta (mısınız en este caso) se escriben por separado, por lo que, aunque es una palabra, parece que son dos palabras cuando se escribe la palabra. Además, se podrían hacer fácilmente versiones más largas de esta palabra, como "Çekoslovakyalılaştırabildiklerimizden miydiniz?". Por estas razones, la Palabra perdió su popularidad, pero sigue siendo un trabalenguas popular en Turquía.

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, el turco tiene palabras para representar el género biológico. Pero no tiene separación en él/ella/ello - 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 maestro es öğretmen. Para señalar a una profesora, dirías "kadın öğretmen", profesora. Pero a pesar del alemán, donde, si no se feminiza agregando una "-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 por 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 objeto determinado.

6
vikingosegundo

Creo que es más probable que el lenguaje de programación que está utilizando dé forma a su forma de pensar sobre el problema, los nombres de las variables y clases, etc., son solo caracteres que representan algo. Aunque es muy probable que los programadores de diferentes culturas piensen en la programación de manera diferente debido a su lenguaje hablado y la forma en que aprendieron.

2
MetaGuru

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á tratando de realizar con su código.

Como usted mismo dijo, cuando se trabaja con el código en sí y se escribe la documentación sobre el código inglés es lo más apropiado. Pero como el código en sí es solo un artesanía, la verdadera fuerza de un programador/científico de la computación se encuentra por encima de eso con ideas, algoritmos y cosas por el estilo, y luego, el lenguaje en el que se describen esas cosas no tiene ninguna importancia. para el contenido real.

1
poke

Este fue un tema que me interesó mucho en algún momento, por lo tanto, mi dolor aún mayor (ahora), no puedo encontrar los marcadores que tenía en ese entonces.

Guardé un enlace con el que me tropecé el otro día, ¿Diferentes idiomas son iguales a diferentes realidades? que se desvían un poco (lea los comentarios también). Algunos son interesantes.

De todos modos ...

0
Rook