IIC2233 / Syllabus-2018-1

Repositorio oficial del curso IIC2233 Programación Avanzada 🎉 🎊
30 stars 73 forks source link

pep8 con caracteres 'especiales' #12

Closed jmwielandt closed 6 years ago

jmwielandt commented 6 years ago

Hola, Python es muy especial y al menos en su versión 3.6.x aguanta usar 'ñ' o tildes en los nombres de variables, funciones y clases, y pep8 no menciona nada al respecto. ¿Hay algún problema con que use tildes o eñes en mi código o como regla adicional no se puede?

PD: en jupyter notebook también lo aguanta

fgbruna commented 6 years ago

Citando la respuesta a la issue 328 del semestre pasado del gran @nebil, sin gran parte de sus enlaces 😢

En la vida real, es muy probable que debas escribir tu código (a excepción de los strings, quizá) en inglés. Esto es independiente del lenguaje de programación que utilices, dado que el inglés —lo quieras o no— es la lingua franca del desarrollo de software. De todas formas, en el mundo surrealista de IIC2233, no hay problema con que escribas tus variables en español. 😉

¿Y por qué ocurre esto? Esto sucede ya que escribir el código en inglés cuenta con múltiples ventajas. Veamos una de ellas, con un ejemplo.

Este snippet de código…

if student not in group:
    pass

suena mejor que…

if estudiante not in grupo:
    pass

…ya que estamos aprovechando el hecho de que los keywords de Python están en inglés, que es algo que ocurre en (casi) todos los lenguajes de programación. Esto permite, entonces, que la lectura del código sea más natural. 😌

Otro beneficio directo es que aporta simplicidad, puesto que en la disciplina de la ingeniería de software —y en muchísimas otras áreas más—, el inglés es finalmente un estándar de facto. Luego, basta con aprender esta única lengua, y no quince otras más. Además, esto se extiende también, por ejemplo, a los mensajes de los commits. </camouflaged self-promotion>

Como anécdota*, cuando hice el curso de Introducción a la programación en esta universidad (eso ocurrió hace algunos años atrás, y el curso se dictaba en Java), tenía la misma pregunta que tú. Y para mí el curso era, efectivamente, una introducción a la programación, porque era la primera vez que incursionaba en aquellos temas. Ahora, como recién estaba empezando en eso, me negaba a escribir las variables en inglés, debido a que no quería claudicar ante las garras del imperialismo anglosajón. O algo similar a eso, pensaba en aquel entonces. El problema estaba en que aquella versión de Java no permitía —a diferencia de Python— escribir variables con caracteres que no estuviesen en el ASCII. Entonces, para no ceder en mi gesta heroica de mantener encendida la llama del castellano, estaba obligado a buscar sinónimos para cada palabra que contuviese o una tilde, o una eñe, o una diéresis. Para mi suerte, en los enunciados nunca aparecieron 🐧🐧.

Finalmente, para cerrar esta breve novela, te dejo un artículo (en inglés, obviamente) que habla sobre varios puntos que me hacen sentido, relacionado a lo que he escrito en estos párrafos.

nebil commented 6 years ago

Sí @jmwielandt, efectivamente, Python 3 (también conocido, simplemente, como Python) soporta caracteres fuera de ASCII. Te invito a leer el motivo detrás de esto en el PEP 3131.

Python code is written by many people in the world who are not familiar with the English language, or even well-acquainted with the Latin writing system. Such developers often desire to define classes and functions with names in their native languages, rather than having to come up with an (often incorrect) English translation of the concept they want to name. By using identifiers in their native language, code clarity and maintainability of the code among speakers of that language improves.

Sin embargo, por mi experiencia, te sugiero que comiences a escribir los nombres de los identificadores en inglés. En cualquier caso, quiero dejar claro que para este curso no será necesario —aunque, claro, es mejor partir desde ahora. Y bueno, si prefieres escribir en español, yo lo haría con eñes, tildes y diéresis. Así podrás cumplir con el propósito original del PEP 3131. Y de paso, cumplir mi sueño cuando era alumno de IIC1103. :grinning:

@fgbruna ya me citó :relaxed:, pero de todas formas te dejo un enlace a mi verbosa respuesta, pues así tendrás un correcto syntax highlighting y todos los (irrelevantes) enlaces de la respuesta original.

jmwielandt commented 6 years ago

Muchísimas gracias a ambos!

AprilRosse commented 3 years ago

@fgbruna @nebil es decir, que una variable con estos caracteres de eñes y tildes es valido pero no es recomendable?

nebil commented 3 years ago

Hola, @AprilRosse. Claro, un programa escrito en Python sí puede contener variables que llevan eñes y tildes, pero no lo recomiendo si aquel programa será leído por alguien más. Y por «alguien más», me estoy refiriendo a un humano.

Por ejemplo, el siguiente programa es válido en Python.

>>> superficie_de_peñalolén = 54.9  # medido en km²
>>> print(superficie_de_peñalolén)
54.9

PS. Me intriga saber cómo llegaste a este issue después de dos años. 😄

AprilRosse commented 3 years ago

@nebil Vale Gracias! :) jajaja estoy estudiando y puej en un taller tenía esa pregunta y de entrada pensé q no se podía y me sorprendí cuando lo ejecute y no salió error o.O jajajaja así que lo googlee así llegué a este post.