Personalmente, encuentro confuso leer el código lleno de identificadores Unicode. En mi opinión, también evita que el código se mantenga fácilmente. Sin mencionar todo el esfuerzo requerido por los autores de varios traductores para implementar dicho soporte. También noto constantemente la falta (o la presencia) de soporte de identificadores Unicode en las listas de (des) ventajas de diversas implementaciones de lenguaje (como si realmente importara). No lo entiendo: ¿por qué tanta atención?
14
größe
. Dicho esto, nunca hago eso y desaconsejo hacerlo. Por lo tanto, la pregunta es muy válida.Respuestas:
Cuando piensas en Unicode, piensas en caracteres chinos o rusos, lo que te hace pensar en algún código fuente escrito en ruso que has visto en Internet y que no se podía usar (a menos que sepas ruso).
Pero si Unicode puede usarse de manera incorrecta, no significa que sea malo en sí mismo en el código fuente.
Al escribir código para un campo específico, con Unicode, puede acortar su código y hacerlo más legible . En lugar de:
puedes escribir:
que puede no ser fácil de leer para un desarrollador promedio, pero aún así es fácil de leer para una persona que usa símbolos matemáticos a diario .
O, al hacer una aplicación relacionada con la fotografía SLR, en lugar de:
puede reemplazar la apertura por su símbolo ƒ, con una escritura más cercana a
ƒ/1.8
:Esto puede ser inconveniente : al escribir el código C # general, preferiría escribir:
más bien que:
porque en el primer caso, IntelliSense me ayuda a escribir todo el código casi sin escribir y especialmente sin usar el mouse, mientras que en el segundo caso, no tengo idea de dónde encontrar esos símbolos y me vería obligado a depender del mouse para ir y búscalos en la lista de autocompletado.
Dicho esto, sigue siendo útil en algunos casos.
currentLens.GetMaximumƒ();
de mi ejemplo anterior puede confiar en IntelliSense y es tan fácil de escribir comoGetMaximumAperture
, más corto y más legible. Además, para dominios específicos con muchos símbolos, los atajos de teclado pueden ayudar a escribir los símbolos más rápido que sus equivalentes literales en el código fuente.Lo mismo, por cierto, se aplica a los comentarios. Nadie quiere leer el código lleno de comentarios en chino (a menos que usted también sepa chino). Pero en algunos lenguajes de programación, los símbolos Unicode aún pueden ser útiles. Un ejemplo son las notas al pie¹.
Certainly Ciertamente no disfrutaría las notas al pie en el código C # donde hay un estricto conjunto de reglas de estilo sobre cómo escribir comentarios. En PHP, por otro lado, si hay muchas cosas que explicar, pero esas cosas no son muy importantes, ¿por qué no ponerlas al final del archivo y crear una nota al pie en el PHPDoc del método?
fuente
Δx
o-∞
son usos válidos (con algunos inconvenientes que expliqué en mi respuesta).Ф
/Φ
por otro lado, son solo signos de que el programador no entiende cómo nombrar las variables correctamente.cumulativeDistributionFunction
es demasiado largo.CDF
es menos legible que Φ.cumDistFunc
es feo Esto también significa que si el programador usa la letra pequeña cirílica EF (Ф) en este contexto, es simplemente un error. Del mismo modo, un programador podría haber usado un término incorrecto o una abreviatura incorrecta.Yo diría:
facilitar a los no profesionales y novatos que aprenden programación (por ejemplo, en la escuela) y no saben inglés. No escriben código de producción de todos modos. He visto muchas veces códigos como:
Solo deja que el pobre tipo lo escriba en su idioma:
No te gusta
fuente
Por supuesto, cada compilador moderno debe tratar con el código fuente Unicode hoy. Por ejemplo, las constantes de cadena pueden necesitar contener caracteres Unicode. Pero una vez que esto se logra, ¿por qué no permitir también los identificadores Unicode? No es gran cosa a menos que el código del compilador dependa de que los caracteres sean códigos de 7 bits.
Pero el OP tiene razón en la medida: ahora es posible que un indio que hable hindi deba mantener un código con identificadores rusos y comentarios en árabe. ¡Qué pesadilla para los chinos pobres que se supone que deben hacer el control de calidad y que no pueden leer ninguno de los 3 alfabetos anteriores!
Por lo tanto, ahora es una tarea organizativa asegurarse de que los identificadores y comentarios de un programa estén escritos en un lenguaje común. No puedo evitarlo, pero creo que esto será inglés por algún tiempo.
fuente
А
, su constructor acepta el parámetroΑ
, y una declaración en el constructor dicevar x = A.boz();
, ¿seA
referiría al campo, al parámetro o quizás a otra cosa? ¿Cómo podría uno decir?Creo que tiene mucho sentido permitir caracteres unicode en cadenas y comentarios. Y si el lexer y el analizador tienen que admitir unicode para eso de todos modos, el escritor del compilador probablemente obtenga soporte de caracteres unicode en los identificadores de forma gratuita, por lo que parecería una limitación arbitraria permitir solo caracteres ASCII en los identificadores.
fuente
vár
el mismo quevár
?)En lo que a mí respecta, esto es puramente por razones de marketing . Y además, puede hacernos la vida más difícil.
Los argumentos de marketing.
¿Conoces estas listas locas de características que la mayoría de los idiomas presumen? Es bastante inútil en general, porque está tan lejos del lenguaje que no proporciona mucha información específica, pero permite vestir rápidamente las mesas con ticks y cruces y concluir con razón que, dado que X tiene más ticks que Y, debe se mejor
Bueno, el soporte Unicode para los identificadores es una de esas líneas. No importa que, en comparación con el soporte de Lambda, el soporte de programación genérica, etc., puede que no sea mucho, a las personas que dibujan las tablas no les importa la calidad de cada línea, solo el número de ellas.
Y así pueden jactarse: "¡Ah, con Y no tienes soporte Unicode para tus identificadores! ¡En X sí, así que para los estudiantes es mucho más fácil!"
La falacia de la accesibilidad
Desafortunadamente, el argumento de accesibilidad es falaz.
Oh, entiendo que poder escribir "résultatDuJetDeDé" en lugar de "diceThrowResult" (sí, soy francés) puede parecer una victoria a corto plazo ... ¡sin embargo, hay inconvenientes!
La programación se trata de comunicar
Su programa no solo está destinado al compilador (que podría importarle menos los identificadores que utiliza), sino también a sus compañeros. Necesitan poder leerlo y comprenderlo.
Por supuesto, su compañero de clase puede hablar el mismo idioma que usted (no es obvio, tuve clases de programación con alemanes, españoles, libaneses y chinos), y también su maestro ... pero suponga que de alguna manera está trabajando en casa y de repente necesita ayuda: Internet es genial, puede hablar con miles de miles de personas que conocen la solución, solo responderán si entienden su pregunta. Y también necesitas entender su respuesta.
La programación requiere comprensión
La accesibilidad y la iniciación requieren basarse en las bibliotecas para hacer el trabajo pesado por usted: no desea reinventar una capa de E / S para leer / escribir en la consola en su primera asignación.
Si contesta árabe marroquí, me sorprenderé.
A menos que solo confíe en las conferencias a las que asiste, y que presenten documentación exhaustiva sobre cada función de biblioteca que necesitará usar (y tal vez incluso bibliotecas traducidas), tendrá que aprender un poco del idioma inglés. Pero entonces, probablemente ya lo hiciste mucho antes de comenzar este curso de programación de todos modos.
Inglés es...
... la lengua franca de los programadores (y la mayoría de los científicos).
Cuanto antes lo admita y lo acepte en lugar de luchar contra él, antes podrá uno realmente aprender y progresar.
Algunos inevitablemente se levantarán en contra de esto, y defenderán con razón su derecho a hablar el idioma de su elección (su idioma materno generalmente), sin embargo, como Babel demostró, cuantos más idiomas se usan, más difícil es la comunicación.
Todavía...
Sí, como se ha argumentado una y otra vez, algunos soportes Unicode (principalmente símbolos) pueden facilitar enormemente la comprensión para las personas que tienen que traducir fórmulas matemáticas o físicas, por ejemplo, en código. Existe el inconveniente de que algunos símbolos están sobrecargados, pero aún podría ayudar.
Entonces por qué ?
Bueno, como se dijo, no se trata realmente de la conveniencia del usuario, sino de las afirmaciones de marketing. También es muy fácil, ya que el analizador ya conoce Unicode para cadenas y comentarios de todos modos, por lo que la mayoría da el salto.
Y puede haber un beneficio para ciertos usuarios.
Pero personalmente solo trataré con código escrito con identificadores en inglés. No me importa si necesita mi ayuda con su código o si su biblioteca es simplemente increíble y podría ganar mucho si la uso: si no puedo entenderlo, tendré que ignorarlo.
fuente
¿Cómo va a escribir identificadores ASCII en un teclado chino? Algunas palabras clave de idioma es una cosa, y tener que hacer todo el código de esa manera es otra.
Los programadores deben tener el derecho y la capacidad de llamar a sus variables como quieran. No es de tu incumbencia el idioma en el que está.
Si te sientes tan confundido al leer códigos con identificadores que tienen símbolos de los idiomas de otras personas, entonces estoy seguro de que entiendes exactamente cuán confundidos se sienten cuando tienen que usar identificadores con símbolos de tu idioma.
fuente
De acuerdo con PEP 3131 - Soporte de identificadores no ASCII fechados en 2007, la primera parte de Justificación establece:
Todavía no he investigado otros idiomas, pero debería ser una de las razones por las que agregaron el soporte.
fuente
Realmente facilitaría la vida (para algunos de nosotros, de todos modos) si el compilador no admitiera Unicode. Los identificadores de derecha a izquierda son horribles. El alfabeto romano combinado y los identificadores Unicode de derecha a izquierda son aún peores.
Lo malo de la falta de soporte es que ciertos asistentes de GUI toman el texto que ingresó para un elemento y lo usan automáticamente como el identificador del elemento. Entonces, ¿qué harían exactamente con el texto Unicode en esos elementos? No hay una respuesta fácil, me temo.
Los comentarios Unicode de derecha a izquierda también pueden ser divertidos. Por ejemplo, en VS 2010, los comentarios XML se muestran (correctamente) como RTL en el código ... pero cuando usa Intellisense para extraer el identificador en otra parte del código, la información sobre herramientas muestra (incorrectamente) LTR. Mejor, tal vez, si no hubiera apoyo en primer lugar? De nuevo, no es una llamada fácil.
fuente