Elegir el “mejor” lenguaje de programación

Elegir el “mejor” lenguaje de programación

Ya lo mencioné anteriormente, no hay UN mejor lenguaje de programación, por más que alguien se empeñe en decir lo contrario. En todo caso habrá un mejor lenguaje de programación dependiendo de la tarea a programar, los recursos disponibles y el mercado al que se dirige la solución. Tomando estos aspectos y algunos otros podremos elegir uno u otro lenguaje. De hecho en proyectos grandes no es raro requerir de dos o más lenguajes para obtener una solución completa.

Dada la versatilidad de muchos de los lenguajes es casi imposible encasillar un lenguaje para una tarea especifica, por eso mismo, hacemos mención de algunos de los más populares así como su enfoque primordial. Recuerda, esta lista no es ni de lejos completa ni exhaustiva, lo ideal es que leas acerca de cada lenguaje que te llame la atención.

Tabla 1. Lenguajes de programación y aplicaciones
Lenguaje Plataforma Uso más frecuente Programas desarrollados con el lenguaje
Java Multiplataforma Aplicaciones Android Minecraft, Vuze, NASA World Wind, Android, 4SHared, Eclipse, Netbeans, Aptana, Curiosity (el que está en marte), Limeware, Open Office
C Multiplataforma Sistemas Operativos, Drivers, propósito general Kernel de Linux, Minix, FreeBSD, Mac OS X, etc., GIMP, Apache, Nginx, Emacs, VIM, Compiladores C, C++, Python, Perl, Ruby, etc.
C++ Multiplataforma Desarrollo de sistemas operativos, aplicaciones de escritorio, drivers, Aplicaciones Android, propósito general Windows, Los paquetes de Adobe, máquinas virtuales de Java y .NET
Python Multiplataforma Dropbox, SpamBayes, Calibre, GNU Mailman, Flumotion, Twisted, OpenERP, ClamWin, YouTube, Reddit
C# Windows Aplicaciones para .NET Umbraco CMS, Aplicaciones Empresariales para Windows
PHP Multiplataforma Desarrollo y aplicaciones Web Facebook, Wikipedia, WordPress, Drupal…
Visual Basic. NET Windows Aplicaciones para .NET Aplicaciones Generales para Windows
Javascript Multiplataforma Desarrollo Web Aplicaciones Móviles
Delphi/Object Pascal Windows Aplicaciones de escritorio Ares, ConTEXT, Feed Reader, icprog, Real Alternative, DevC, Skype,QuickTimePlayer, K-Lite Codec Pack (Partes)
Go (Golang) Multiplataforma Aplicaciones Web, Aplicaciones Móviles
Perl Multiplataforma Web, Sistemas, Aplicaciones de escritorio, Video juegos, Bioinformática
Swift OS X y Linux Apps de iOS, Mac, Apple TV y Apple Watch Lyft, Khan Academy, Clear, Sky Guide, Linkedin, Airbnb, Eventbrite, Hipmunk
Ruby Multiplataforma Desarrollo Web
Assembly language (ASL) NA Programación de sistemas, Drivers
R Análisis estadístico
Visual Basic Windows Aplicaciones de escritorio
MATLAB Aplicaciones científicas e ingeniería
Objetive C MacOS Programación de sistemas iOS
Scratch Desarrollo de Juegos, animaciones, historias interactivas
PL/SQL Programación para bases de datos Oracle, embebida en la misma DB
ASP.NET .Net Desarrollo y aplicaciones Web
ASP IIS Desarrollo Web
Kotlin Android Aplicaciones Android

La lista no abarca ni de lejos el universo de lenguajes disponibles para programar, pero sí muestra a los más influyentes en este momento (agosto de 2017), de acuerdo a lo expresado en la tabla 1 puedes darte una idea de qué lenguaje te puede ser de utilidad para iniciar el proyecto que tengas en mente o del objetivo que desees perseguir.

Recuerda siempre, la lista anterior es solo una sugerencia, si algo tiene la programación es que si algo no te gusta, o le falta, tú puedes programar ese faltante y aunque una lista te diga este lenguaje es para aplicaciones Web, llegado el momento nada impedirá que puedas hacer aplicaciones de escritorio con ese lenguaje diseñado para Web, por su puesto el tiempo y trabajo de desarrollo requeridos (Y por tanto la viabilidad), son otro tema a considerar.

He seleccionado los 20 lenguajes de programación más influyentes del momento a julio de 2017 (con algunos extras), puedes observar que dependiendo la tarea a realizar uno se ajustará más para ciertas tareas, La lección en este sentido es: no te cases con un solo lenguaje, claro siempre habrá un “lenguaje preferido” pero no seas dogmático, si otro lenguaje hace mejor lo que necesitas, utilízalo, aunque no sea tu preferido.

A continuación te presento el ranking utilizando 2 de las principales fuentes para este tipo de comparativas:

Tabla 2. Top 20 de lenguajes de programación
Lenguaje Ranking TIOBE (Jul/2017) Ranking según datos de GitHub y Stack Overflow (2017)
Java 1 2
C 2 9
C++ 3 6
Python 4 3
C# 5 5
PHP 6 4
Visual Basic. NET 7
Javascript 8 1
Delphi/Object Pascal 9
Go (Golang) 10
Perl 11
Swift 12
Ruby 13 7
Assembly language (ASL) 14
R 15
Visual Basic 16
MATLAB 17
Objetive C 18 10
Scratch 19
PL/SQL 20
ASP.NET
ASP
Kotlin

Esta información, junto a la de la tabla 1, te darán una idea más precisa de “qué lenguaje te puede convenir”, claro, suponiendo que te vayas a dedicar a programar como profesión. La ventaja de todo esto es que conociendo los fundamentos de un lenguaje de programación, cualquier otro lenguaje será más fácil de adoptar.

Ranking GitHub
Ranking GitHub

La siguiente gráfica te da una perspectiva de el lugar de los lenguajes de programación más representativos a lo largo de 3 décadas.

Lenguajes de programación a lo largo del tiempo
Lenguajes de programación a lo largo del tiempo

Entonces, ¿Cuál lenguaje de programación elegir?

Para responder esta cuestión vuelvo a aclarar, ninguna respuesta que te diga “éste es el mejor” es válida, bueno, ni la que a continuación daré. Todo es una sugerencia, tómala como tal.

Si es tu primer lenguaje y lo vas a adoptar de forma libre (es decir no por requerimiento laboral o de estudios) mi sugerencia es la siguiente:

  1. C++
  2. Python
  3. Java
  4. Swift

En ese orden, en esa prioridad. A continuación intentaré justificar mi respuesta.

C++

Como puedes apreciar de las tablas y gráficas de ésta y otras páginas hay una mano a mano Java vs. C++, hay una guerra de razones y sinrazones en cada bando que no es útil retomar. ¿Porqué C++ en lugar de Java en primer lugar?

  1. Al igual que Java, es multiplataforma, es poderoso y es de los más requeridos en la industria, se usa para programas personales y para el desarrollo de grandes sistemas. Si algo no existe lo puedes crear con C++, con Java empieza a haber restricciones a nivel de sistema.
  2. No es C, pero hereda casi todo el comportamiento de C, por lo que si llega el momento, puedes aprender C, quitando las particularidades de C++, aprendiendo las generalidades de C.
  3. La “familia C (C, C++, C#) tiene una estructura muy similar (aunque trabajen y se comporten distinto) por lo que la lectura y la transición a otro lenguaje “tipo C (JavaScript, Java, etc.) será relativamente accesible. Si conoces C++ mucho del software existente te será “familiar”.
  4. La facilidad de aprenderlo en cualquier equipo, en cualquier plataforma es, en la mayoría de los casos, más accesible que toda la estructura que requiere Java
  5. Sin llegar a la complejidad de C, podrás programar “casi todo” lo que necesites a nivel de sistema y hadware y lo que no puedas, lo puedes complementar con ensamblador… o con C creando las librerías necesarias.

Python

De hecho para muchos autores esta es la sugerencia inmediata para quien inicia, incluso para mí lo es en cierto modo, ¿Por qué la dejo en segundo lugar? Tal vez por que le doy preferencia a que el usuario entre por la puerta “difícil” (C++) pues (a falta de Pascal) es una de las mejores formas que tiene el usuario nuevo en obtener una formación en la ciencia informática. Sin embargo Python con justa razón puede ser el primero por muchas razones:

  1. Es fácil de aprender
  2. Soporta varios paradigmas de programación (Programación estructurada, imperativa, funcional, orientada a objetos)
  3. Se ejecuta en cualquier plataforma
  4. Amplia disponibilidad de bibliotecas
  5. Te permite desarrollar para Web, Escritorio y es ampliamente utilizado en el ámbito de la Seguridad Informática
  6. Es simple, limpio y potente

Java

Los “Javeros” se sentirán insultados de ver mi sugerencia en tercer lugar, debo señalar que bien pudo ir en el lugar uno. Sin embargo a mi modo de ver, las simplificaciones y abstracciones que tiene Java sobre C++, “ocultan” muchas cosas “complicadas” que tiene C++ que resultan importantes pedagógicamente hablando para quienes inician (por mencionar un par: no se puede “ver” la formación de las clases a partir de funciones, ni el manejo a bajo nivel que se hace de la memoria al manipular objetos). Sin embargo es innegable la potencia, difusión y preferencia de Java por parte de la industria.

  1. Es relativamente fácil de aprender
  2. Es multiplataforma
  3. Permite desarrollo para aplicaciones Web, de escritorio o para móviles por igual
  4. Amplio conjunto de entornos de desarrollo
  5. Por más de 10 años ha estado en los lugares 1-2 de penetración
  6. El manejo de Java está incluido dentro de las 20 habilidades más valoradas por los empleadores en 2016, según un estudio elaborado por LinkedIn.

Así que empezar con Java, es una apuesta segura.

Swift

En lugar de Swift (que reemplaza a Objetive C) pude haber puesto Go (Para Android), PHP o Ruby, sin embargo me inclino por esta opción básicamente por el respaldo de Apple con que cuenta. Todos los sabemos, Apple es un mercado que no se debe subestimar. Además hay otros factores que resultan interesantes:

  1. Es una plataforma de desarrollo de código abierto
  2. Te permite desarrollar las aplicaciones para todo el ecosistema Apple reemplazando  y usando herramientas antiguas-Objective C)
  3. El desarrollo de aplicaciones se mueve a plataformas móviles, con Java cubres Android, para iOS swift es la apuesta.

El dinero importa, claro, sino como pagamos la luz…

No menos importante resulta tener una referencia del salario que un lenguaje de programación nos puede proporcionar, aunque considera que esta tabla solo es una referencia.

Lenguajes de programación mejor pagados al 2015
Lenguajes de programación mejor pagados al 2015

Por otra parte, tu lugar de residencia puede determinar el tope promedio de ingreso, variado mucho de región en región.

Salario de programadores en el mundo
Salario de programadores en el mundo

Conclusión

Más allá de si te vas a dedicar a programar de forma profesional o como pasatiempo debes considerar que la programación si bien todo mundo la puede aprender, no es para todos. A mi modo de ver debes sentir pasión por el hardware que quieres programar. De otro modo solo codificarás sin encontrarte mucho sentido a lo que haces.

Realmente tu eliges con cuál lenguaje empezar, si quieres empezar con Basic, está bien, lo importante es que tengas presente que si vas a aprender a programar sistemas, seas metódico, ordenado y sobre todo, que tengas siempre presente que conocer y aprender un lenguaje de programación, es solo el primer paso.

Unas últimas palabras si pretendes a aprender a programar: Es válido preguntar cualquier cosa, siempre y cuando hayas buscado la respuesta por tí mismo. Es lamentable la cantidad de preguntas en foros y blogs pidiendo ayuda para instalar un compilador, recuerda el camino del programador empieza por ser un camino en solitario. Aprende a buscar y a encontrar y solo al final, preguntar.

Como postdata te invito que revises éste artículo la casuística de los programadores principiantes y aunque lo describe con humor, es una lamentable realidad en muchos aprendices de la actualidad..

Por Roberto C. González
Para Ethical Hack


¿Deseas participar en nuestro grupo de estudio para aplicar la certificación CEH? 

Aplicación de medidas para la implantación de la L.O.P.D. en las empresas

Obtendrás información ampliada a la que has leído en este artículo, y material adicional, visita https://ehack.mx/portfolio-view/material-de-estudio-ceh-online/ para más información o ecríbenos a ceh@ehack.mx

Ethical hack
Ethical hack

Fuente Imágenes:
“Lenguajes de programación a lo largo del tiempo”: by TIOBE
“Ranking GitHub”: by Campusmvp
“Elección de un lenguaje de programación”: by artmonkey / Freepik
“Lenguajes de programación mejor pagados al 2015”: by Instituto Foc
“Salario de programadores en el mundo”: by Instituto Foc

 

Referencias

 

Licencia de Creative Commons Elegir el "mejor" lenguaje de programación by Roberto C. González para Ethical Hack is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional License.
Comentarios de Facebook

Leave a Reply

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