2010-10-14 22 views
9

Esto es una curiosidad más que nada: ¿Existe un lenguaje de programación que permita nombrar variables, funciones y clases usando Unicode en lugar de ASCII (excepto, por supuesto, para caracteres especiales como ' + ')? ¿Algún idioma popular tiene soporte para esto?Lenguaje de programación basado en Unicode

Además, en relación con esto, si un lenguaje común admite Unicode, ¿hay alguna forma de convertir una API existente en un idioma que el usuario elija? Parece que sería útil dar a un programador la capacidad de aprender una API en su propio idioma. Me imagino descargar una API estándar (por ejemplo, aumentar) y luego descargar la asignación de traducción estándar y luego poder programar en mi idioma nativo.

+8

No estoy de acuerdo con que sea útil aprender una API en su propio idioma. Casi ninguna API es compatible con esto, por lo que también te mojas los pies con el idioma inglés de inmediato. Por cierto, los nombres de las funciones en las fórmulas de Excel se han traducido. Esto hace que sea una verdadera molestia hablar con alguien acerca de las fórmulas de Excel si no estás usando el mismo idioma/versión. –

+4

¿Puedes nombrar un lenguaje de programación razonablemente moderno y profesional que * no *? (PHP no cuenta como profesional :)) – Timwi

+4

Dudo que esto tenga un uso significativo para dicho lenguaje. Imagínese que tiene un idioma en el que un usuario inglés escribe "si var es mayor que 5 y luego realiza alguna función()" y el otro escribe en alemán "wenn var größer als 5 dann mache irgendeinefunktion". No es útil escribir código donde los nombres de variables sean chinos. un idioma tiene que ser igual para todos y si quieres programar, algo de inglés es básicamente obligatorio (soy alemán) Hace que la programación sea más fácil para todos, no para una audiencia localmente limitada – Tseng

Respuesta

6

Como puede ver en otras respuestas, la mayoría de los lenguajes modernos lo permiten, incluidos Perl, Python, Go, Ruby, Java, C♯, variantes de lisp, Fortess, ADA y muchos más. C y C++ no, pero esos no son modernos.

En cuanto C♯, desde MSDN:

Las reglas de los identificadores que figuran en esta sección se corresponden exactamente con las recomendadas por el Anexo del estándar Unicode 15


En cuanto a la conversión de una API a un idioma elegido, esto no es factible. Necesitará un traductor que entienda los matices y el significado de cada método, variable y nombre de clase y los traduzca correctamente; esto no es lo mismo que usar los caracteres de un idioma elegido en el código.

+0

Creo que ese rubí también. – Ikaso

+0

En cuanto a la API de conversión a otro idioma. No me refiero a implicar la traducción automática automática. Por el contrario, si fuera chino, me gustaría utilizar Boost junto con algunos * API-skin * aceptados de manera estándar que conviertan la API de Boost en chino. De esta forma, sería mucho más fácil de aprender. De acuerdo, sería un poco más difícil hablar con un hablante de inglés, pero creo que el API-skin también permitiría la traducción en la otra dirección. Además, cuando el programador chino promedio habla de programación, probablemente esté hablando con otra persona china. – JnBrymn

+0

No escribir código en el idioma que usted piensa/habla es una ventaja IME, ya que le permite dar a los términos técnicos un significado técnico que no se ve afectado por el significado regular de los términos, ambos tienen poco más que una relación suelta. –

3

Ada (entre otros) permite identificadores internacionalizados utilizando UNICODE.

Sin embargo, mi opinión personal es que el software debe escribirse usando un lenguaje único, universalmente comprensible y suficientemente simple (en inglés, obviamente) para fomentar la colaboración, garantizar la comprensibilidad y la reutilización del código.

+0

Único, universalmente comprensible y suficientemente simple ... Inglés puntajes 0.5 de 3 allí. (0 para soltero, 0.5 para suficientemente simple) –

+1

@kotlinski: El inglés es el cierre para ser universalmente comprensible (uno de los idiomas más extendidos, y ciertamente el más extendido entre la gente de tecnología - http://meta.stackexchange.com/questions/ 13676/is-english-required-on-stack-overflow tiene algunos buenos datos). Y aunque English * is * complex, * todos los * idiomas naturales son inherentemente complejos, y el inglés no es el peor (la gramática alemana, por ejemplo, es mucho más grande y tiene casos de esquina más desagradables). – delnan

+0

@kotlinski Esto es, seguro, subjetivo. En mi opinión, cuando pienso en idiomas que conozco o aprendí en el pasado, la complejidad y la facilidad es la siguiente: inglés

1

Java tiene esta característica.

1

Algunas implementaciones de lisp común permitirían esto. AFAIK la especificación del idioma no lo prohíbe ni lo requiere (solo requiere un conjunto básico de caracteres ASCII).

2

Delphi tiene esa característica desde la versión 2009

2

Javascript tiene esta característica.

1

Tcl le permite utilizar caracteres Unicode para nombres de comando y variable, aunque se recomienda evitarlos para nombres de variable porque la sintaxis de acceso directo no es compatible en este momento (es decir, tendría que usar el formulario [set Ω] de ).

2

.Net admite Unicode y estoy trabajando con la variable C# Unicode todos los días.

2

C#, Java, Python3, hasta donde yo sé, son todos basados ​​en la programación Unicode.

No encontré ninguno mencionado anteriormente Python, así que lo agregué.Python tiene una función de fantasía: todo (función, clase, módulo, variable, instancia de clase) es un objeto y cada objeto puede adjuntar un documento para describirlo. Esta característica puede ser útil para organizar código y ejecutar guiones de forma interactiva. Por ejemplo:

# Python code in interactive mode 
>>> def MyFunc(): 
    '''This is self-included document. 
It can be write in multi lines.''' 
    print('foobar') 
>>> print(MyFunc.__doc__) 
This is self-included document. 
It can be write in multi lines. 
>>> MyFunc() 
foobar 
1

Esquema, Raqueta PLT y Lisp de sabores Erlang todo permiten identificadores Unicode (hechas sencillo gracias a la sintaxis de prefijo)

0

Perl y van ambos permiten identificadores completo de Unicode. Perl requiere una declaración use utf8;, pero Go lo hace automáticamente.

Consulte UAX#31: Unicode Identifier and Pattern Syntax, para diversas inquietudes.

En general, un identificador debe coincidir con el patrón ^\p{ID_Start}\p{ID_Continue}*$, aunque los idiomas son libres de agregar a eso. Por ejemplo, Java agrega los símbolos de moneda (\p{Sc}), incluido $.

0

Considere Swift, introducido por Apple en 2014. Aquí es un fragmento de código:

var 国 = "美国"

buena suerte con su búsqueda de la mejor!

+0

country = America? : P Mi Kanji está un poco oxidado. – JnBrymn

+0

Me llevó un tiempo leer eso porque 'var 國 =" 美國 "' 国 se ha simplificado para 國 (或 → 玉) – Hector

Cuestiones relacionadas