2009-03-20 13 views
12

Me doy cuenta de que la mayoría de los idiomas admiten varios idiomas, pero todos los idiomas que he visto siempre han estado más o menos centrados en los EE. UU. Con eso me refiero a las palabras clave, las funciones de biblioteca estándar, etc. todas tienen nombres en inglés. Entonces, como programador, todavía necesita saber al menos algo de inglés para darle sentido.¿Lenguajes de programación verdaderamente multilingües?

¿Hay algún idioma verdaderamente "multilingüe" con soporte para palabras clave de idioma y tal en varios idiomas?

+0

Véase también http://stackoverflow.com/questions/202723/coding-in-other-spoken-languages ​​ –

+0

Vea también http://stackoverflow.com/questions/288061/do-there-exist-any-compilers -with-localized-versions-of-programming-languages ​​ – JohnFx

Respuesta

29

Esto es generalmente una idea horrible, como puede atestiguar cualquiera que haya trabajado en un IDE localizado. Los programadores dependen en gran medida de tener un vocabulario común. Cuando el compilador me da el error "especificador de tipo faltante - int asumido", puedo compartir este mensaje de error exacto con otros, por ejemplo aquí en SO, y será familiar a los demás para que puedan decirme lo que significa . Si el compilador en cambio generara mensajes de error en danés, estaría limitado a recibir ayuda de los relativamente pocos programadores que hablan danés.

De repente mi vocabulario ya no es el mismo que el de alguien en el mismo puesto en Alemania, Francia o Japón. Ya no podemos intercambiar código, errores, correcciones de errores o ideas.

Un desarrollador en España no podría usar mi código porque literalmente estaba escrito en otro idioma. Y si tuviera problemas con mi código, otros no tendrían la posibilidad de depurarlo, porque ni siquiera se compilaría en su configuración de localización (y si lo hiciera, aún sería ilegible para ellos).

En última instancia, un lenguaje de programación es un idioma. Puede haber tomado prestadas algunas palabras del inglés, pero es no inglés, y no es necesario que entiendas inglés para programar en él, más de lo que necesito entender el latín para poder hablar inglés (el inglés también toma palabras latinas))

Es mejor que solicite un inglés multilingüe.¿Cuál sería el punto? Sí, en teoría, permitiría que las personas que no hablan inglés ... hablen inglés. Simplemente no sería el mismo inglés que habla cualquier otro hablante de inglés, por lo que en realidad no permitiría la comunicación entre ellos.

La palabra clave if en un lenguaje de programación es no igual que en el idioma inglés. Se refieren a cosas diferentes, aunque uno obviamente fue inspirado por el otro.

La palabra clave delegate en C# no significa lo mismo que "delegar" en inglés. Tampoco lo hace while, return o "constructor". No son palabras en inglés, son palabras clave o conceptos en C++, Java, C#, Python o cualquier otro lenguaje de programación.

+18

Exactamente, cuando PHP dice "Error de parseo: error de sintaxis, inesperado T_PAAMAYIM_NEKUDOTAYIM", todos sabemos exactamente lo que salió mal. –

9

Me parece una mala idea. Si estoy escribiendo un programa, ¿cómo puedo saber que el nombre de la variable que estoy escribiendo es en realidad una palabra clave en búlgaro o coreano como transcrito? ¿Tengo que lidiar con miles de palabras clave o tengo problemas para combinar dos rutinas escritas por mis colegas suecos y egipcios?

Simplemente tenga en cuenta que las palabras clave de programación están en inglés, al igual que las palabras clave de música en italiano.

+0

Entiendo su punto, pero el problema de la palabra clave al menos podría superarse al especificar el idioma del código en tiempo de compilación o en el propio archivo de código. Las bibliotecas también podrían tratarse proporcionando nombres "localizados" para las funciones, es decir, la misma función podría tener múltiples nombres dependiendo de la configuración regional. –

+0

Lo que da un nuevo significado a la notación húngara, supongo.Significa que no puedo leer ningún software impreso en húngaro. Significa que no puedo obtener un programa de un alemán y usar herramientas simples. Complica considerablemente la implementación de la biblioteca. –

2

Puede utilizar el preprocesador C/C++ para redefinir todas las palabras clave, y algunas personas lo han hecho. Lo encontré cuando trabajaba como entrenador/mentor para una empresa noruega. Alguna chispa brillante había implementado un encabezado que traducía todas las palabras clave C en noruego y aplicaba su uso. El personal noruego, que hablaba un inglés excelente (o no podría haber ganado mi corteza con ellos) todos lo odiaban y murió una muerte.

También he trabajado de forma bastante extensa en los Países Bajos, y la mayoría de los programadores parecen programar en inglés. Las únicas personas con las que me he encontrado y que son resistentes a la hegemonía inglesa en los lenguajes de programación son (no hace falta decir) los franceses.

0

No intente codificar en el lenguaje natural, eso es inútil. Learn the "programming" language instead.

Por ejemplo, la palabra "cambiar" no significaba nada para mí en inglés, pero era una instrucción para decidir sobre varias opciones.

tarde (cuando aprenda Inglés) pensé .. Hey, esto es divertido, Inglés no tiene una palabra "cambio" también, al igual que C (Do!)

:)

n importa cuán bueno o malo es tu inglés, no puedes decir a java

importar java.util. * en mi CD-ROM;

Porque no es una sintaxis válida.

0

¿Qué pasa con idiomas como APL y J? Las palabras clave en APL son todos símbolos individuales; desafortunadamente, la mayoría de estos no están en su teclado, por lo que apareció J y reemplazó la mayoría de ellos con representaciones ASCII (compuestas de más de un carácter en muchos casos).

2

Hay un área donde un idioma localizado puede ser útil y útil, y estos son DLS (Idiomas Específicos del Dominio) que fueron diseñados para ser utilizados por personas que no son programadores. Esos idiomas seguramente pueden beneficiarse al ser localizados ya que los usuarios comerciales de países que no hablan inglés a menudo no saben inglés, al igual que los programadores.

Dichos DSL localizados también pueden ser ventajosos para los programadores si se trata de una gran cantidad de términos no traducibles. Un sistema bastante exitoso que he encontrado se usó para calcular los salarios del personal en el ejército israelí. Utilizó una sintaxis basada en hebreo junto con cientos de términos que solo se pueden expresar correctamente en hebreo. En ese caso particular, las palabras clave lógicas estándar if, then, else, etc. se tradujeron al hebreo y todo el editor de código fue de derecha a izquierda. Un gran cuerpo de lógica de negocios se mantiene de esta manera hasta el día de hoy y, en mi humilde opinión, con razón.

0

Sorted!

Sorted! is bilingual. It can understand both english and german code. To my knowledge, Sorted! is the only programming language that can do this, in the world.

Cualquier los útiles? Esa es una mejor pregunta.

0

En gran medida, puede programar en prolog en cualquier script Unicode (porque es un lenguaje simbólico). Hay una (diminuta, pequeña) captura: las variables están significadas por una letra romana inicial en todos los compiladores de prólogos que probablemente encuentres y tendrás que redefinir los integrables (pero prolog lo hace relativamente fácil *).

Creo que un ejemplo ilustrará lo que quiero decir mejor:

% un algoritmo para encontrar las fechas de Pascua, año dado (como primer argumento)

復活節(V1, V2, V3) :- 
    A 是 (V1 mod 19), 
    B 是 V1// 100, 
    C 是 V1 mod 100, 
    D 是 B // 4, 
    E 是 B mod 4, 
    F 是 (B + 8) // 25, 
    G 是 (B - F + 1) // 3, 
    H 是 (19*A + B - D - G + 15)mod 30, 
    I 是 C // 4, 
    J 是 C mod 4, 
    K 是 (32 + 2*E + 2*I - H - J) mod 7 , 
    L 是 (A + 11*H + 22*K) // 451, 
    M 是 (H + K - 7*L + 114) // 31, 
    N 是 (H + K - 7*L + 114)mod 31, 
    V2 是 M, 
    V3 是 N + 1. 

/*

Ejemplo de prueba:

? - 復活節 (2013, V2, V3). V2 = 3, V3 = 31

es decir, la Pascua de este año será el 31 de marzo

*/

  • esto es lo que he utilizado para redefinir la estructura en 'es' operador (no me dispare si es imperfecto):

    : -op (500, xfy, 是).

    是 (X, Y): - es (X, Y).

2

Parece que sería notoriamente difícil, a menos que se trataba de un esfuerzo de la comunidad, pero para algunos idiomas no veo por qué no puede hacer un lenguaje existente en varios idiomas, pero la creación de bibliotecas personalizadas que localizar bibliotecas estándar.

Por ejemplo, en Java, que puede crear

public class HoweverYouSayExampleObjectInYourLanguage extends ExampleObjectName { 
    } 

y luego crear funciones de contenedor/métodos con nombres en su idioma de destino, pero que básicamente llamar a los métodos estándar existentes

private void HoweverYouSayExampleMethodInYourLanguage(parameters) { 
     this.ExampleMethod(parameters); 
     // Some error handling code 
} 

Si Si el manejo de errores es correcto, todos los errores/errores de la pila serán errores de referencia en las bibliotecas estándar, a menos que haya un error formal con la implementación de su biblioteca de localización, en cuyo caso debe señalarse mediante el manejo correcto de errores en el local. la biblioteca de zación en sí.

La desventaja sería, como han mencionado otras personas, compartir el código fuente. Si todos estuviéramos en la misma página con un IDE para un idioma determinado, no veo una razón por la cual no puedas construir un IDE realmente internacionalizado en el que el código fuente que ves en la pantalla no sea el código fuente REAL per se, pero una representación local del código fuente real a través de algún tipo de mapeo.

Voy a seguir adelante y decir que todo lo que acabo de decir es probablemente una buena idea, ya que los nombres de funciones no son tan importantes como la documentación localizada para bibliotecas y API. algo que en mi experiencia se hace terriblemente o en absoluto para lenguajes/contextos de programación comunes.

Cuestiones relacionadas