¿Que lenguaje de programación conviene aprender hoy?

Si uno es un programador experimentado, es probable que a lo largo de su carrera haya tenido que aprender más de un lenguaje de programación.

Es que a lo largo del tiempo, o bien debido a demanda de aprender x lenguaje para x desarrollo, o bien debido a modas, o debido a nuestra curiosidad de conocer nuevas tecnologías (mágicas aparentemente), nos hemos puesto a aprender otros lenguajes.

Pero aprender un lenguaje, y dominarlo, no es fácil para todos ni en todos los casos. Requiere dedicación y muchas horas para aprender las particularidades que tiene, y en muchos casos, aprender cómo *%# hacer lo que hacía con X lenguaje.

Pero para quien recién se inicia el desafío es elegir aprender el lenguaje correcto. ¿Vale la pena dedicar tiempo a un lenguaje que sólo te servirá para programar micro controladores? ¿Es necesario un lenguaje para web, otro para móviles y otro para desktop?

Si bien elección del lenguaje muchas veces depende de lo que vayamos a realizar, si recién empezamos, es conveniente elegir un lenguaje versátil y que nos permita poder programar diferentes cosas sin la necesidad de aprender otro lenguaje para otro fin.

Por esa razón, doy mi recomendación de 3 lenguajes que, a mi entender, vale la pena aprenderlos hoy día, particularmente, porque pueden utilizarse en varios escenarios.

Adicionalmente, enumero una breve lista de herramientas, IDEs y librerías, que extienden el uso a numerosos escenarios.

Es una lista arbitraria, obviamente, no pretende ser la verdad absoluta, pero, intento de sugerir aquellos que, a mi entender, son los más aptos para aprender si uno recién se inicia.

py-header

Python

Este hermoso lenguaje tiene un largo tiempo a nuestro lado y ha evolucionado sin parar hasta nuestros días.

Si uno viene del mundo de los lenguajes basados en C, la indentación y la carencia de llaves puede que los ponga un poco nerviosos al principio, pero con el tiempo todo tiene sentido y se produce un código muy legible y portable.

5ZV9IX3 - Imgur

Hoy es posible hacer prácticamente lo que se nos ocurra con Python, desde páginas web, aplicaciones de escritorio, línea de comandos, móviles, etc. De modo que el tiempo invertido en aprender este lenguaje, es un tiempo bien invertido, pues podemos aplicarlo en numerosos escenarios.

Editores / IDEs

Eric Python Ide – http://eric-ide.python-projects.org/
PyCharm – https://www.jetbrains.com/pycharm/
PyDev – http://www.pydev.org/
Visual Studio Code – https://www.visualstudio.com/en-us/features/python-vs.aspx

Para programar juegos

PyGame – http://www.pygame.org/

Para hacer Páginas Web

Flask – http://flask.pocoo.org/
Django – https://www.djangoproject.com/

Para hacer Aplicaciones Móviles

Kivy – https://kivy.org/

Para hacer Aplicaciones Desktop

Camelot – http://www.python-camelot.com/
Dabo – http://dabodev.com/

js-header

Javascript

Uno de los lenguajes que más han crecido en estos últimos años, ha sido Javascript.

Originalmente pensado para ser un lenguaje de scripting en páginas web, desde hace unos años, y gracias al proyecto NodeJS, su uso de ha generalizado.

Con pocas líneas podemos escribir un servidor web para servir nuestra página web, unas aplicación de línea de comandos, o incluso, aplicaciones móviles.

Tal vez hayas escuchado cuestiones relacionadas con la lentitud de Javascript. Si bien es cierto que corre interpretado, gracias a las nuevas tecnologías, la velocidad de ejecución es increíblemente rápida. De hecho el motor V8, que equipa al famoso google Chrome, es el motor detrás de NodeJS, lo que permite velocidades de ejecución excelentes.

Y el hecho de que numerosas empresas usen Javascript/ NodeJS para desarrollos muy conocidos, debería convencerte que no es lo lento que te lo han vendido.

Algo que es de agradecer, es el hecho de que existan miles de librerías escritas en Javascript que podemos utilizar. Y gracias a NPM, el gestor de paquetes de NodeJS, podemos instalar y actualizar librerías de forma sencilla.

Le versatilidad y facilidad de aprendizaje (tal vez el más simple de aprender de los tres) hacen que su uso sea muy generalizado y que sea recomendable aprenderlo.

Editores / IDEs

Visual Studio Code – https://www.visualstudio.com/features/node-js-vs
Atom – https://atom.io/
Brackets – http://brackets.io/
Sublime Text 3 – http://www.sublimetext.com/3

Para programar juegos

Crafty.JS – http://craftyjs.com/
Phaser – http://phaser.io/
melonJS – http://melonjs.org/

Para hacer Páginas Web

ExpressJS – http://expressjs.com/
Angular – https://angular.io/

Para hacer Aplicaciones Móviles

NativeScript – https://www.nativescript.org/
Cordova – https://cordova.apache.org/
Ionic – http://ionicframework.com/
Fuse Tools – https://www.fusetools.com/

Para hacer Aplicaciones Desktop

NS.js – http://nwjs.io/
Electron – http://electron.atom.io/

cs-header

C#

Estamos ante un lenguaje muy poderoso, versátil y que, al igual que los otros tres, esta en constante evolución.

Al día de hoy permite realizar casi cualquier cosa que queramos y al ser multi plataforma al igual que los otros dos, podemos usar y reutilizar nuestro código en diversos proyectos.

Desde su concepción, es un lenguaje maduro y con características avanzadas y con el respaldo de una gran empresa, como lo es Microsoft. Eso permite que existan días IDEs muy poderosas, visual Studio y Xamarin Studio, que nos permiten crear aplicaciones de escritorio y móviles, y en el caso del primero además, aplicaciones web.

Ya desde las primeras versiones se destacó por su velocidad de ejecución, y eso se ha ido incrementando en la nuevas versiones. De hecho, varios test de estrés de aplicaciones web muestran las estabilidad y confiabilidad que está plataforma posee con justa razón.

A diferencia de otras plataformas, en Visual Studio particularmente, ya tenemos incorporadas herramientas para Web, Desktop y Mobile, por lo que ya viene preparado para empezar en todos estos frentes.

Al igual que en el caso de Javascript/NodeJS con NPM, la distribución de paquetes con librerías se agiliza con NuGet, pues permite instalar y actualizar librerías de forma muy simple. De hecho, es de agradecer esta herramienta, pues existen miles y miles de librerías que podemos utilizar en nuestros proyectos. Encontrarlas de otra forma, sería imposible.

Editores / IDEs para Web / Mobile y Desktop

Visual Studio Community Edition (Windows / Mac) – https://www.visualstudio.com/
Visual Studio Code – https://code.visualstudio.com/
Monodevelop (Linux) – http://www.monodevelop.com/

Para programar juegos

http://www.monogame.net/
http://xenko.com/
https://waveengine.net/
https://unity3d.com

Donde aprender

Existen numerosos cursos en diversos lugares. les enumero algunos a continuación que les pueden ser de utilidad para aprender sin gastar un centavo.

Como la mayoría de recursos, la gran mayoría está en inglés. De paso un recordatorio: Si quieren aprender a programar no está de más saber inglés, pues el 90% de las librerías y códigos de ejemplo están en ese lenguaje.

Python

Curso de Python
Introduction to Programming with Python
Learn to Program Using Python
Python en español
Beginning web sites with Python and Flask
Developing Websites Using Python and Django

Javascript

C#

¿Y porque no X lenguaje?

Nope-Meme-13

Ok, seguro alguien me dirá que hay otros lenguajes, y los hay. A continuación mi explicación de porqué no entraron en la selección.

Java: es un lenguaje muy difundido. Y también es posible crear aplicaciones para web, desktop, móvil e incluso juegos con este lenguaje. Y existen IDEs muy buenas para este lenguaje. Los únicos problemas son que, al menos a mí, no me convence. Lo intenté. Lo juro, lo intenté. Pero fue un sufrimiento. El otro problema, es que, los tiempos ejecución (en frio particularmente, son muy largos). No digo que Java sea lento, pero esa característica (que también tienen otros lenguajes) me molesta aún más en Java. Ah y lo otro, es que me parece un engendro del demonio. Perdón, es broma, es un buen lenguaje, solo que no tenemos feeling. Si les intriga y quieren aprender, no es una mala opción.

nMnx7P5 - Imgur

Swift/Objetive-C: Sólo sirven para programar cosas que van a correr sólo en dispositivos Apple (Mac, iPhone, iPad, etc). Si lo que deseas hacer es eso, y no piensas en expandirte a otras plataformas a futuro, adelante. En otras noticias Objetive-C es una aberración de la naturaleza que merece la extinción.

Ruby: para mi es una materia pendiente. He leído muchas cosas buenas de Ruby, y muy malas también, como que es terriblemente lento, pero no he podido darme el tiempo de probarlo. Si les intriga, adelante.

Pascal: que quede claro: amo Pascal. Sólo que ha perdido relevancia al no tener una evolución en los últimos años. Para colmo de males, Borland, la empresa que más evolución brindó al lenguaje, cayó en desgracia, y quienes continuaron con Delphi, tuvieron más idas y vueltas que una telenovela mexicana. Al día de hoy tienen una herramienta muy cara que sólo se justifica en casos muy puntuales. Existe una ide gratuita llamada Lazarus, basada en el proyecto Free Pascal Compiler, a la que vale la pena seguir, pues es multiplataforma y en los últimos años ha logrado ser muy estable.

PHP: Me resistí por años a utilizarlo y hoy día lo uso casi a diario (por decisión de otros claro esta). No es un mal lenguaje y, bien usado, hasta puede ser uno bueno. Su habitad natural es la web y aunque hay engendros para tratar de hacerlo funcionar para hacer aplicaciones de escritorio y móviles, la respuesta a tales iniciativas es siempre no. Si piensan dedicarse a Web, es un lenguaje a tener en cuenta pues su uso aun hoy en día está muy extendido.

Conclusión

Si bien la elección del lenguaje y tecnología a utilizar, pude depende de un montón de factores, la versatilidad de un lenguaje como los que recomendamos , pueden ayudar a simplificar desarrollos, reutilizar código, y reducir tiempos, así como reducir la curva de aprendizaje de nuevas tecnologías.

Sea cual sea el lenguaje que decidan aprender, nunca se olviden que lo más importante, es estar a gusto con el mismo.


Publicado originalmente en mi blog personal.

Dejá un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *