Castellano o Inglés?

Bue día a todos!

Tengo una duda en la cuál me gustaría me pudieran orientar un poco. El punto es que en las Normas de Estilos que tiene el lenguaje Java muy claramente especifica la nomenclatura de cada elemento del lenguaje sin embargo hay una en específico que me llamó la atención y es la que dice "All names should be written in English." (Todos los nombres deben ser escritos en Inglés) y explica lo siguiente: English is the preferred language for international development, (El idioma Inglés es el idioma preferido para el desarrollo internacional.), señalado en la siguiente página, el punto número 10 en la sección 3 llamada "Naming Conventions".

La cuestión es, siendo un desarrollador en el idioma Castellano/Español ¿se deben seguir estos estándares? A mi me suena controversial como es que teniendo el idioma Español tengamos que codificar en inglés, no por que me desagrade el inglés de hecho se que los proyectos se abren mucho las puerta al ser desarrollados en este idioma (código) pero al menos si el código está en inglés como lo señalan los estándares la API de dicho desarrollo debería estar en el idioma natal del desarrollador no? o de que forma se manejan estos conceptos? Aquí en el mismo foro lo han mencionado mucho, que deben ser en inglés y que esto y el otro pero jamás han dado una explicación del por que? En mi caso no hay problema al codificar en inglés ponerle a mis clases Employee en vez de Empleado o a mis métodos getName() en vez de obtenerNombre(), ese no es el problema, más bien sería una cuestión de cultura o eso creo yo.

Puede sonar muy moralista o hasta idealista, pero pues me gustaría ver mas apoyo a la comunidad latina o al menos al idioma Castellano que es el que nos pertenece e identifica. Por que así de que forma nuestras comunidades en Castellano van a tomar fuerza?

Bueno pues ahí les dejo para que comenten sus opiniones y de igual forma expliquen el por que de esta Norma de Estilo :D y yaa los dejo con mis ideas locas, pero creo que debemos cuestionar lo que nos hes puesto como regla para así entender lo que hacemos.. jiji buen día!!

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

Idiomas

Las comunidades en castellano no van a perder fuerza por usar código en inglés, ni van a tomar fuerza por crear código en español.

El código de mis proyectos de software libre está en inglés, igual que los comentarios y la página. Podría ponerme mis moños y portarme muy nacionalista/regionalista/idiomalista/loquesea y hacer todo en español para que únicamente la gente que habla español lo pueda usar. Pero creo que le cierro la puerta a muchísima gente.

Cuando programas, tienes que saber al menos algunos términos en inglés. Es algo que ya es parte de esta disciplina del desarrollo de software. Así como los chefs usan varios términos en francés (incluyendo el propio título) y los músicos utilizan varios términos en italiano. La nuestra es una carrera con muchos pochismos (en su mayoría innecesarios); cuando haces software (término que no tiene traducción a ningún idioma), tienes que ponerte a pensar quiénes van a ver el código que estás escribiendo…

  • Es un proyecto interno, hecho únicamente por mexicanos, para mexicanos (o hispanoparlantes, para hispanoparlantes)?
  • Qué va a pasar si en algún momento tienen que traer un consultor externo que no habla español, y sea cual sea su idioma natal, el único lenguaje en común que pueden tener es el inglés?
  • Es factible que en algún momento el software sea liberado (sea convertido en software libre), de manera parcial o total?

Imagínate el caso inverso; vas a Brasil, o a Francia, para participar en un proyecto, y no hablas el idioma del lugar. Los demás hablan inglés así que es lo que usarán todos para comunicarse contigo. Pero al momento de ver el código del proyecto en el que vas a trabajar, todo está en portugués, o francés. Cuánto tiempo vas a invertir en entender qué hace la clase  , o el método  ? Peor aun: si el código está en francés y tú vas a contribuir clases y métodos al mismo, las vas a tener que poner en francés, no puedes llegar a meter clases en inglés ni en español. Cómo le vas a hacer? Vas a perder mucho tiempo preguntando cómo ponerle a cada clase, método, variable, etc (al menos al principio) porque en cuanto vean tus intentos de francés procesado por el traductor de Google te van a pedir que mejor no lo uses y les preguntes a ellos. Tu productividad baja por la simple barrera del idioma, aunque tengas un inglés perfecto. Y si al menos los nombres de las clases y métodos hubieran estado en inglés, ya si te encuentras una que otra variable o nombre de parámetro con nombre francés, puedes inferir su finalidad y función por el contexto en que se encuentra.

En algunos otros lenguajes de programación puede que la nomenclatura de las clases en otro idioma te ayude incluso a distinguir las clases propias de las clases que ya vienen incluidas con el lenguaje. En Java lo resuelves viendo el paquete, que es como el apellido de la clase, de modo que aunque todas las clases tengan nombres en inglés, las puedes distinguir porque todas las que empiezan con   son del JDK.

En StackOverflow por ejemplo he visto preguntas que ha puesto gente en inglés pero ponen fragmentos de código en otro idioma (p.ej. francés) y lo que reciben es una bola de comentarios pidiendo que pongan el código en inglés porque nadie le entiende. Y no son puros angloparlantes los que lo piden; también gente que tiene otro idioma natal pero que no habla francés.

Y eso creo que va para cualquier lenguaje de programación. Como te decía; si estudias música tienes que aprenderte un montón de términos como rallentando, crescendo, adagio, arpegio, allegro, andantino, etc etc etc; cuando estudias programación vas a ver un montón de términos que sí tienen traducción, pero muchos otros que no, como simplemente software. Y si para programar en Java estás usando un montón de clases con nombres en inglés, por qué no hacer tu código en el mismo idioma?

No encuentro ahorita la liga pero hace tiempo había leído una discusión al respecto (no eres la primera persona ni serás la última en sacar este tema a discusión), en donde mencionaban un estudio de que incluso si tu idioma natal es el español, te tardas más en leer código que está mezclado en inglés y español que si lees puro código en inglés, debido a que mentalmente haces un pequeño cambio de contexto para estar entendiendo cada término que lees, de manera involuntaria. Así que supuestamente eres más productivo haciendo tu código en inglés, porque es inevitable que quede todo enredado con código en inglés por todas las llamadas que hagas a clases del JDK o de cualquier otro framework como Hibernate, Spring, JSF, etc que va a estar todo en inglés también.

Imagen de Marce

Me parece muy muy

Me parece muy muy interesante lo que comentas, de hecho creo que es el punto principal por lo que esta norma de estilo se hizo, y sobre todo me parece genial que dieras tu explicación del por que? puesto que muchos lo hacemos solo por que ahí dice, y así ya tiene sentido el hacerlo de esa forma.

Quizá si me vi medio nacionalista jaja :p me apasioné un poco U.U, pero creo que debía al menos descubrir que idea tienen los demás acerca del tema!! De nuevo muy bien la abundancia de explicación :D Thanks jajajaja :p ya pues en español Gracias!

Imagen de toga_22

Coincido con Ezamudio

El desarrollar código de aplicaciones usando codificación en idioma inglés se hace más que nada por prácticidad y estandarización si se puede llamar así, porque a pesar de que muchos programadores tienen estilos diferentes, ser puede apreciar mejor ese estilo cuando todo lleva un desarrollo estándar (en idioma inglés).

Yo pienso que la API puede estar en el idioma que tu desees pero el desarrollo de la aplicación por estandarización no estaría mal que estuviera en inglés.

Muy buen tema... :-)

Imagen de mathemathician

además de coincidir con zamudio ilustras la necesidad del inglés

En inglés se diría: "practicality" , mientras que en español quien sabe si "prácticidad" sea una acepción válida de práctico. Además la palabra estándar viene del término inglés "standard". Así es que mejor a aprender Inglés ya que es tan fuerte este lenguaje que es casi imposible hacerle contraposición.

Excelente pregunta, es mucho más importante de lo que parece.

A ver si me puedo explicar concisamente.

Convenciones de codificación:
Cuando programas, seguir convenciones de codificación es mucho muy importante, la razón es simple: el mantenimiento!, no hay más.

Son los humanos los que tienen que leer el código! no la computadora, para ella podríamos seguir programando en ensamblador ( o en tiempos modernos en bytecode ). Pero ya sea que un pedazo de software lo hagan varias personas a la vez, o después de terminado sea otro equipo el que tenga que modificarlo o incluso para proyectos personales uno mismo ( si alguna vez haz tenido que re leer tu código luego de 6 meses de no verlo entenderás a que me refiero ) el seguir estas normas te ayuda a entenderlo fácilmente.

Entre estas normas de codificación está el uso del inglés.

Si una aplicación está codificada ( y comentada ) en inglés, le estás dando la oportunidad de que cualquier otra persona desarrollador del mundo pueda modificarla.

Sobre tus preguntas:

[...]La cuestión es, siendo un desarrollador en el idioma Castellano/Español ¿se deben seguir estos estándares?[...]

Si, la unica excusa que yo encuentro, es no saber inglés en lo absoluto.
Sucede muy seguido que quién es principiante como programador, también lo sea en inglés, en ese caso esta bien usar nombres en español.
Pero apenas se adquiera un poco del idioma, lo mejor será usarlo, así se forma un buen hábito.

[...]Pero al menos si el código está en inglés como lo señalan los estándares la API de dicho desarrollo debería estar en el idioma natal del desarrollador no?[...]

De hecho el API ( o la API ) es precisamente la parte que otros desarrolladores van a ver, es más importante que esté en inglés.

[...]Aquí en el mismo foro lo han mencionado mucho, que deben ser en inglés y que esto y el otro pero jamás han dado una explicación del por que?[...]

Por incómodo que parezca ( y a mi me pareció incómodo por mucho tiempo ) el inglés es el idioma universal hoy en día, justo como en su tiempo fue el latín, y para la programación con mucha más claridad ( usar el esperanto ya no es una posibilidad )

Conclusión
Empezar a usar inglés en nuestros proyectos personales, permite crear un buen hábito, además nunca se sabe cuando un proyecto puede crecer y ser reutilizado por otros ( en especial cuando se trata de open source ). Usar inglés permite que cualquier otro desarrollador que no hable español pueda entendernos.

Por cierto, recientemente participe en la migración de una aplicación que estaba escrita en español, y fue el peor de los martirios para los que no sabían nada de español ( y para mí que estuve haciendo las veces de traductor ) Nadie pensó que este módulo que inicialmente iba a ser usando solamente en la ciudad de méxico, resultará tan bueno y quisieran usarlo en otros lados. Los desarrolladores eran en su mayoría hindús , que por cierto aprendieron inglés a la fuerza, pero hoy constituyen la principal fuerza en IT, y no solo para puestos de bajo nivel, el Vicepresidente de Google, Vic Gundotra es Hindú.

Así que los que ya saben inglés, a usarlo y los que no saben siempre hay tiempo ( si tienes 20 años y lo aprendes en 10 yo digo que estaría genial )

Les dejo unos links:

  • Este es un excelente recurso para aprender en línea viendo videos a la YouTube:
  • Stackoverflow, que es una comunidad de preguntas y respuestas de programación que funciona a nivel mundial tiene como política el uso exclusivo del inglés ( que en mi opinión apesta, pero tienen razón a mi no me gustaría ver preguntas en chino o en islandés )
  • Mi respuesta a la pregunta: "Debo de tener un nivel mínimo de inglés para empezar a programar?" Es no, por que lo que aprendes es el lenguaje de programación no inglés, pero de hecho aprender a programar te ayuda a aprender inglés ( a mi me ayudó )
  • Mi propuesta para crear un sitio de preguntas y respuesta de programación para cualquier idioma, excepto inglés ( que por cierto la propuesta va por los suelos, entren y den click en "Follow it" ) Quizá debería, reformular la propuesta para que fuera solo en español. La razón es simple, ayudar a los que no saben ni programar ni inglés

Opps, ya no fue tan conciso como quería.

Imagen de Marce

otra opción

Quizá otra opción sea desarrollar el código en inglés que es hasta lo que ahorita se ha planteado, y tener la documentación y la API en ambos idiomas para que tanto a nivel mundial se sepa que hace y así entre los de tu mismo idioma también lo aprovechen, de esta forma matas 2 pájaros de un tiro.

Si es software libre muy probablemente gente experimentada y otra no tan experimentada lo vayan a utilizar o ver, y así están las 2 opciones, de igual forma si no fuese software libre como lo han comentado el hecho de que entren colaboradores o que por X razón otras personas lo lleguen a obtener debe ser legible y entendible. En cuanto a la interfaz de usuario me imagino que puede ser en el idioma deseado? y en este caso creo que existe una forma de poder cambiar las interfaces de usuario al idioma elegido solo que no recuerdo que tecnología o herramienta es la que permite eso, de lo que me acuerdo es que se guardan las palabras que lleva la interfaz con los idiomas que deseemos en un archivo y este después es leído para reescribir las palabras al idioma seleccionado, alguien sabe de este tema que pueda abundar mas? o quizá ya estoy inventando jajaja :p

Muy buenos sus comentarios, queda muy claro todo!

Imagen de Jvan

Yo he visto en algunos

Yo he visto en algunos programas de software libre como hay colaboradores que se encargan nada mas de documentar y traducir el programa a otros idiomas. Sin duda un tema bastante interesante =).

Imagen de Nopalin

tambien tenia esa duda

En mis inicios como programador, tambien me hacia esa pregunta, incluso llegue a criticar a hispano parlantes que escribian en ingles. Sin embargo una cosa es muy cierta, y no es por que lo diga sun en su naming convention o los de stackoverflow, el hecho es que el castellano es demasiado verboso, por eso comenze a programar en ingles.

Ahora, teniendo ya mucho tiempo desarrollando en ingles, me he topado con el problema de que como no soy una persona con el ingles como idioa nativo, tengo un vocabulario muy limitado y andar buscando definiciones para llamar variables o metodos para que identifiquen lo que hacen, muchas veces se me hace una tarea tediosa y tardada, perdiendo mucho tiempo, por eso decidi programar en español.

Y es lo que hago, sin importarme si el codigo lo van a leer gringos, u personas de otros paises que hablan ingles, yo programo en español con comentarios en español. Debo admitir que de vez en cuando se me escapan palabras y las escribo en ingles, pero generalmente ya estoy poniendo todo en español. Y no se trata de ser nacionalista, es simplemente que me siendo mas comodo.

saludos