debug_mode=ON

Buscar en

 
 

¡Aprende un nuevo lenguaje! ¡Ahora!

Venkman
Venkman escribió
hace 1 años

Una de las recomendaciones que se suelen dar en esas famosas listas para mejorar y avanzar en nuestra carrera profesional y personal es la de aprender un nuevo lenguaje.

En mi modesta opinión es una recomendación excelente, pero no siempre es fácil seguirla. La pega que más frecuentemente oigo es que "¿Para qué? Si no lo voy a usar [en mi trabajo]". Y suele ser cierto, no lo vas a usar (por lo menos inmediatamente). Pero entonces ¿para qué? Pues porque aprender un lenguaje tiene otros beneficios.

Existe una teoría (hipótesis de Sapir-Whorf) que, en su más extrema versión, sostiene que el lenguaje determina la forma en que pensamos. La teoría es muy discutida y en esa versión extrema está, en general, rechazada. Sin embargo, sí es aceptado comúnmente que el lenguaje sí tiene cierta influencia sobre la forma en que pensamos. Más aún, que utilizando determinadas expresiones y favoreciendo determinados términos, el lenguaje puede influir sobre la forma en que pensamos o apreciamos un tema o un concepto. Esto, que se refiere a los lenguajes naturales, es aplicable quizá incluso con mayor intensidad a los lenguajes de programación, al ser estos mucho más formales y estrictos.

De modo que, un primer beneficio es que aprender un lenguaje diferente puede ayudarnos a pensar de otro modo, a comprender determinados temas desde diferentes puntos de vista. Es frecuente oír la experiencia de quien, habiendo aprendido un nuevo lenguaje, nota cambios en la forma de resolver problemas con el lenguaje que sigue utilizando (por necesidad, trabajo o la razón que sea).

Otro beneficio es que aprender mantiene la mente en forma. Aprender nos enseña a aprender. Si dejamos de hacerlo durante un tiempo, luego nos costará más hacerlo. Esto, por supuesto, es aplicable a cualquier materia y podríamos usar este argumento para proponer el aprendizaje de cualquier otra cosa que no sea un lenguaje de programación. Absolutamente cierto. Y cualquier conocimiento es bueno. Pero aquí estamos hablandod e lenguajes de programación ;)

Se me ocurre también que, aunque en el presente o en un futuro inmediato, no veamos aplicación práctica (profesional o no) para ese lenguaje, nunca podemos saber si más adelante surgirá la ocasión. Más aún, si no conocemos otros lenguajes, nunca podremos proponer utilizarlos, perdiendo así la posibilidad de crear ocasiones incluso antes de que ocurran. Si ya conocemos -algo, suficiente- de un lenguaje, podemos apreciar que quizá sea buena idea utilizarlo en determinada situación cuando surja. Y también, cuando cualquiera sabe Java/VisualBasic/C# ¿acaso no es más probable que se aprecie más un candidato que conoce otro lenguaje?

Personalmente creo que los beneficios son múltiples. Como pega, la única que puedo conceder es la del esfuerzo requerido. Sí, no siempre tenemos tiempo, ganas o capacidad, pero esto es sólo una pega del proceso, no es realmente una desventaja del hecho en sí de aprender.

Y entonces surge la pregunta... Bien, aprenderé un lenguaje, pero ¿cuál? (También suele surgir "pero ¿cómo?", pero esa pregunta me parece bastante menos interesante. Busca un buen manual, piensa un pequeño proyecto para hacer, blablabla)

La respuesta no sólo no es fácil, sino que no es única. Por un lado están las preferencias personales, el esfuerzo que queramos dedicar, el objetivo concreto al que demos más importancia... Por otro cada lenguaje tiene sus puntos fuertes y débiles.

Creo que lo que debemos plantearnos a la hora de decidir aprender un lenguaje es sobre todo:

  • Intentar aprender algo realmente nuevo. Si sabes Java no tiene demasiado mérito ponerte a aprender C# (o viceversa). Así que, si llevas años programando sistemas orientados a objetos, prueba por ejemplo a aprender un lenguaje funcional. Si conoces todos los secretos de los lenguajes de muy bajo nivel, prueba a buscar un lenguaje más abstracto. O al revés, si jamás te has acercado al metal, échale un vistazo a algún ensamblador, trata de comprender cómo funcionan las cosas ahí. ¿Nunca has usado un lenguaje declarativo? Quizá este sea el momento.
  • Elegir algo que nos guste. Todos lo sabemos, hacer algo que te gusta es mucho más fácil. Es más, si no te gusta no vas a querer hacerlo. Así que busca un lenguaje que te llame la atención por algo. Que te parezca interesante. Que sea chulo. Mira ese lenguaje del que un día leíste algo y pensaste "Mola!".

Bien, pero ¿qué lenguaje elijo? No lo sé, ya he dicho que depende de ti.

Yo puedo recomendar algunos que a mi personalmente me gustan o me parece que tienen algo que puede ser interesante aprender. O quizá que pueden serte útiles el día de mañana.

Lisp, por ejemplo. Deberías aprender algún Lisp, ya sea Lisp, Scheme, Clojure, Javascript... Oops, perdón Javascript va luego. Bueno, deberías aprender Lisp, pero aprenderlo de verdad, cuando quieras cambios radicales en tu cerebro.

Aprende Python. O Ruby. O aprende los dos. Ambos tienen su interés y ambos tienen aplicación práctica, así que te pueden servir.

Una muy buena opción es Scala. Todo el mundo habla de Scala. No te creas nada de que será el nuevo Java y tonterías de ese tipo. Pero Scala es un lenguaje interesante, con soluciones diferentes y con suficientes detalles como para aprender bastantes cosas.

Algún ensamblador. Si te da miedo, prueba con HLA (High Level Assembler), pero mejor no te dejes asustar. Por supuesto asumo que C ya sabes. Si no sabes C, pues vaya.

Ah, sí, Javascript. Este no te vendrá nada mal, pero sólo si lo aprendes bien. Bueno, vale, te será útil de cualquier modo, pero le sacarás más partido si lo aprendes bien que si no lo haces. Puedes aprender Javascript a la vez que aprendes Lua y comparar xD

Haskell también es buena idea. Sobretodo si no te importa demasiado el asunto de usarlo profesionalmente o no.

En fin, no sé, si ninguno te atrae, aprende Arduino/Wiring. Quizá no tenga ningún concepto particularmente distinto, pero al menos te puedes divertir haciendo cositas.

 

6 respuestas en "¡Aprende un nuevo lenguaje! ¡Ahora!"

victormna
victormna escribió
hace 1 años

#1   

Hola,

Muy interesante y bien descrito, me uno a tus postulados.

Este año yo he pensado en aprender python, aunque no lo necesitare para el trabajo!!!! jeje, pero como bien dices, nunca se sabe...

Quizás añadiría una recomendación si alguien quiere aprender ensamblador (a parte del HLA que comentas) mejor empezar por el del x86 o el de motorola, ya que son mas fáciles de comprender que otros como p.e. el del ARM o los PIC.

Y si ya no te queda ningún lenguaje por aprender, siempre puedes crear tu propio lenguaje ;)

Un saludo

 

vladdy
vladdy escribió
hace 1 años

#2   

Este debería haber sido un post.... esta muy bueno...

Para los javeros de toda la vida... intenten con JAVAFX está muy bueno aunque claro aveces impresiona demasiado...

Saludos... muy buen post

 

rugi
rugi escribió
hace 1 años

#3   

Desconocia el nombre "tecnico" de lo que comentas; pero, es algo que en algún momento me comentarón mis maestros.
Decian algo como: "La manera en que expresas una idea con palabras representa la manera en que generas la idea en tu mente".
Y luego decian:
"Si no lo puedes expresar adecuadamente con palabras hay problemas para generar la idea."

Bueno, me inclino por python :)

Saludos!!

 

Luix
Luix escribió
hace 1 años

#4   

¡Joder, qué parrafada! XDDDD Como alguien ha sugerido, esto debería ser un artículo, más que un hilo. No he leído todo, pero sé por dónde vas.

Personalmente, quiero aprender Lisp, Python y Perl. Como dices, los 3 lenguajes son muy diferentes a lo que conozco. Todo buen programador debería dominar algún lenguaje de cada paradigma de programación, no sólo lenguajes estructurados y O-O. Por ejemplo yo conozco Prolog bastante bien.

Pero hay que tener mucho cuidado con eso que dices (o que dijo no se quién) de que "el aprender más lenguajes influye en tu forma de pensar o programar". Esto puede llevar a un error muy común y grave en diseño. Algunos expertos gurús, como Steve McConnell (Code Complete, Software Estimation, Rapid Development...) dice que debe programarse en un lenguaje, no para un lenguaje (esta traducción es mía y podéis tomarla como tal, jeje; la expresión original es : "you must program into a programming language, not in it" ). Es decir: a la hora de diseñar una solución no pienses en las estructuras y facilidades que te aporta un lenguaje, sino que realiza el diseño independiente o tendrá baja calidad y luego utiliza las estructuras del lenguaje para implementar ese diseño.

Seguramente el aprender nuevos lenguajes y paradigmas aporte nueva riqueza intelectual al programador, nuevas ideas, técnicas, etc.; pero esta experiencia adquirida no debe influir en los futuros diseños, sino que se debe enfocar de otra manera.

 

ian_scho
ian_scho escribió
hace 1 años

#5   

Mi problema es conozco un lenguaje, vamos - Java, pero estoy usando menos que 5% de sus posibilidades. Java para la web - bien, pero con Swing estoy perdido.

OK. Estoy perdido por todos modos.

 

danilat
danilat escribió
hace 1 años

#6   

Ian, entiendo lo que quieres decir, java es enorme(web, escritorio, móviles, tv... montones de especificaciones y frameworks...), pero no deja de ser java. Las capacidades/sintaxis del lenguaje siguen siendo las mismas y la forma en la que termines programando será muy parecida (si no es la misma :P).

Lo de aprender lenguajes de programación, más que conocerlos al 100%, es tratar de conocer las capacidades que tengan. Por ejemplo, yo ahora mismo trabajando con ruby y groovy, que sigue siendo POO pero con capacidades dinámicas, me estoy interesando en temas de metaprogramación, DSLs... que es lo más interesante de conocer en estos lenguajes y lo que, al menos para mi, era más "desconocido".

 
 
 
 

© Copyright 2008-2009 debug_mode=ON | Aviso legal | Contacto | FAQ | ¿Quiénes somos? |