¿Para que sirve o es más usado cada lenguaje de programación?

 

Muchos de los lenguajes de programación más populares son mastodontes que han incursionado en múltiples ramas aplicativas. Si bien trataré de describir los usos principales que se les da hoy en día, toma en cuenta que muchos de ellos pueden aplicarse en más áreas de las que nuestro cerebro puede nombrar sin hacerse un lío. Así que, ya avisado entremos al asunto…

(¡A caray! ¿Qué no eran 12 universos y nosotros eramos el séptimo?), que es el reporte anual de Github —la plataforma más popular de alojamiento de repositorios de software—, los lenguajes más populares de el último año han sido: JavaScript, Python, Java, PHP, C#, C++, TypeScript, Shell, C y Ruby. Vamos a limitarnos a esos de momento aunque pueden solicitarme otro en los comentarios si gustan y yo editaré la respuesta para añadirlo.

JavaScript

Nuestro querido y desastroso lenguaje escrito originalmente en 10 días ha logrado, contra todo pronóstico, posicionarse en los escaparates del mundo de la programación con increíble frecuencia últimamente. En un principio, este lenguaje tenía el único propósito de dar la cara al usuario en las páginas web, sirviendo para controlar los elementos con los que interactúa el usuario, hacer animaciones y demás cosas agrupadas en aquel buen mozo que llamamos “front-end”. Pero todo cambio cuando Node.js atacó…


Node.js añadió una posibilidad simple pero contundente: Ejecutar JavaScript en el gemelo oscuro y malvado del desarrollo web, mejor conocido como back-end. Más allá de la consecuencia básica de que ahora JavaScript podía controlar íntegramente la lógica de una página web, esto permitió crear una gran entorno de aplicaciones y componentes para automatizar tareas a los programadores, ya sea que trabajasen o no en este lenguaje. Tiempo después, aquí nos tienes escribiendo programas multiplataforma, aplicaciones para celular y hasta controlando drones mediante este lenguaje.

Y su evolución continúa, pues tras los grandes cambios al lenguaje introducidos en ECMA Script 6 (Más tarde conocido como ECMA Script 2015), JavaScript ha estado dando pasos más contundentes que nunca con el fin de sobreponerse a las características que lo hicieron tan infame tiempo atrás. Muchos desarrolladores de software ahora tenemos que admitir que JavaScript hoy por hoy es…[traga saliva]…un buen lenguaje de propósito general.

Python

Bello es mejor que feo.

Explícito es mejor que implícito.

Simple es mejor que complejo.

….

Con estas palabras comienza el Zen de Python, núcleo de la filosofía que se ha aplicado en la creación de este maravilloso lenguaje. Su sintaxis enfocada en la legibilidad de código y su capacidad de hacer tareas medianamente complicadas en unas pocas líneas le abrió paso poco a poco dentro la automatización de tareas del sistema operativo, allá donde lenguajes como PERL o BASH eran tan populares. A pesar de que la vida de Python se acerca a los 30 años de estar en el radar de los programadores, no fue sino hasta hace poco que este lenguaje empezó a ganar su inmensa popularidad, rebasando a Java como el segundo lenguaje más activo en este recién terminado 2019.

¿Qué no se puede hacer en Python? Sería una pregunta mucho más retante de contestar que simplemente describir una lista elegida con las puntas de los dedos de aquello relevante que se pueda crear en este lenguaje. Desde programación de escritorio y desarrollo web hasta programar una Raspberry Pi o crear videojuegos de sencillos , Python está ahí para ti.

Este lenguaje ha resonado especialmente por su gran relación con el reciente boom del aprendizaje automático, ciencias de datos y todo lo referente a la inteligencia artificial. Con sus bibliotecas como TensorFlow , pandas o numpy este viejito le hace competencia acérrima a grandes lenguajes como R, Julia o Scala.

Hablando de Python, tengo una incapacidad innata para resistirme a recomendar el excelente Curso de Socratica,

en YouTube. No es simplemente el hecho de que la producción y el guion estén exquisitamente construidos, o que sus vídeos entremezclen conceptos avanzados de ciencias de la computación con los propios conceptos de python mientras continúan siendo fáciles de entender…sino que la razón principal de que debas verlo es que ¿En que otro lugar de internet puedes recibir clases de una cyborg carente de emociones que te habla de manera arrogante mientras hace chistes malos sobre informática?

Java

El viejo, robusto y excesivamente verboso compañero que nos acompaño a la gran mayoría cuando aprendíamos programación orientada a objetos.

Aunque para nada es un concepto difícil de encontrar hoy en día, Java es quizá el lenguaje más famoso de aquellos que «rompen las reglas» por ser compilados e interpretado a la vez. Es compilado porque tiene un programa (javac) que transforma su código en una forma de instrucciones de bajo nivel, llamadas bytecode, pero también es interpretado porque ese bytecode no está compuesto de instrucciones que pueda ejecutar ninguna máquina concreta, en su lugar todas las instrucciones resultantes son ejecutadas por la maquina virtual de Java (JVM), Esta famosa combinación resulta en que el código compilado de Java puede ejecutarse en cualquier plataforma que disponga de la máquina virtual, teóricamente sin diferencias. La JVM también es culpable de que este lenguaje sea tan infame por ser «lento» dado el considerable tiempo que tarda inicializar la misma—y que en un pasado distante las implementaciones su máquina virtual eran muy lentas. No obstante, tampoco nos dejemos llevar de inmediato por esas críticas puesto que, una vez superado ese tiempo de carga, Java ha demostrado ejecutarse más rápido que casi cualquier lenguaje interpretado e incluso llegando a la velocidad de algunos lenguajes compilados.

zzz

Bueno, a lo que vamos… ¿Para qué se usa Java?

Uno de los campos más obvios es en la programación de aplicaciones para celular. Java fue durante mucho tiempo el lenguaje de facto para hacer aplicaciones en el sistema operativo Android, por lo que todavía la mayor parte de las aplicaciones nativas están creadas mediante este lenguaje. La famosa frase que te aparece al instalar Java (3 billion devices run Java – Tres mil millones de dispositivos ejecutan Java) se debe en parte al uso que se le da a este lenguaje en el sistema operativo más popular para móviles.

Debido a su gran rendimiento, Java también es usado con frecuencia en cuestiones que requieran mucha eficiencia como en Big Data o Machine Learning en las que representa una alterativa fácilmente portable y más mantenible que sus competidores de más bajo nivel como C o C++, pero aún más veloz que lenguajes como Python.

Y definitivamente sin ser la última cosa digna de mención, Java se usa enormemente como parte de la industria de servicios financieros, gobierno, bancos, etc. Algunos dicen que Java está en camino de convertirse en el próximo COBOL: Un lenguaje muy presente en el corazón de las operaciones financieras más delicadas y que tiene expectativa de durar por décadas (si es que algún día muere) aun cuando su popularidad flaquee entre los programadores más jóvenes.

A si, casi lo olvidaba: Minecraft está hecho en Java.

Fallo en conectarse al servidor

Excepción Interna: java.lang.NullPointerException

PHP

Finalmente llegamos al lenguaje responsable de un 70% de las páginas que visitamos en internet día con día. PHP comparte con JavaScript el hecho de tener una historia oscura y un diseño caótico que ha ido mejoran increíblemente con el tiempo. Quizá no se le ha dado uso en tantos campos como a JavaScript, pero con su dominio casi hegemónico de los servidores, este lenguaje cuenta con influencia más que de sobra.

Casi todo en PHP parece diseñado alrededor de la idea de facilitar el trabajo páginas web del lado del servidor. Desde su sintaxis que facilita el envío de salidas de texto compatibles con HTML, la interpretación automática de las variables recibidas por GET y POST, las funciones integradas para mandar cabeceras HTTP, para sanitizar datos ingresados por el usuario y para conectarse con distintos tipos de bases de datos. PHP además forma, junto con MySQL y Apache, el stack clásico de tecnologías de los programadores Backend.

zzz

Si usas cualquiera de los Servicios de Manejo de Contenido (CMS) más populares como WordPress, Joomla o Drupal, PHP estará trabajando por debajo aunque no se te muestre directamente. No obstante, si eventualmente tienes la necesidad de refinar un detalle de una plantilla o algún Plugin, PHP se presentará directo ante tí por lo que es recomendable irlo aprendiendo al menos superficialmente.

Es cierto que antes dije que los PHP ha mejorado con el tiempo (y las versiones), pero aun así los memes no dejan de ser divertidos:

C#

Y después de alfin habíamos pasado brevemente por un lenguaje que sabía cual era su propósito, volvemos a los todo terreno. C#, a veces referido como el «Java hecho bien» es un lenguaje de programación creado por Microsoft para hacer aplicaciones en torno a su plataforma. Con este lenguaje podrás crear aplicaciones para escritorio o para teléfonos móviles, aplicaciones web, servicios en la nube, creación de videojuegos y demás.

Aunque el motor y plataforma de desarrollo de videojuegos Unity permite usar JavaScript como lenguaje en que programar la lógica, lo cierto es que el uso de C# está mucho más documentado por lo que suele ser más apto para proyectos complejos. Los juegos que realices en Unity pueden ser exportados a múltiples plataformas y dispositivos, como por ejemplo Xbox.

En lo referente al .NET Framework, C# era solo una alternativa entre varias (Como Visual Basic, C++, etc.) para hacer uso de las funciones y utilidades. No obstante, desde que Microsoft sacó la nueva versión multiplataforma y de código abierto, llamada .NET Core, se ha visto un continuo enfoque en C# por encima de las otras alternativas. Igualmente para desarrollar aplicaciones para dispositivos Android y IOS con Xamarin solo se permite usar C#.

C++

C pone fácil dispararte a ti mismo en el pie; C++ lo pone más difícil, pero cuando lo haces te vuelas el pie entero

Bjarne Stroustrup – Creador de C++

Originalmente llamado C con clases, el lenguaje C++ fue pensado como un superconjunto del lenguaje C que añadía a esta capacidades de programación orientada a objetos, pero eventualmente se separó ligeramente de este concepto cuando los comités encargados de C y C++ estaban peleados en el 99 (eventualmente se reconciliaron y trataron de mejorar de vuelta la compatibilidad entre estos dos lenguajes, pero eso es otra historia). A lo largo de los años C++ ha ido integrando las herramientas que su austero predecesor no se ha atrevido a incluir, y con ello se ha ido convirtiendo en un lenguaje con una monstruosa cantidad de capacidades, sintaxis, algoritmos, y en general herramientas básicas a la disposición de los programadores experimentados. Especial énfasis en herramientas básicas ya que C++, a diferencia de otros lenguajes que constantemente añaden cosas como Python, Java o C#, no suele añadir módulos «deslumbrantes» que te hagan algún proceso complejo de manera muy sencilla; En su lugar, C++ añade solo herramientas conceptuales y bloques para plantear los algoritmos de mejor manera.

Este lenguaje además tiene la filosofía de «lo que no usas no te cuesta», que en pocas palabras significa que por más que añadan cosas nuevas, estas no afectan el rendimiento de los programas preexistentes a menos que las usen. Usar todas sus características puede resultar en programas pesados, pero también es posible hacer uso del mínimo y tener programas tan ligeros como si hubieran sido escritos en C. Eso si, lo único que C++ no parece poder equiparar es la simplicidad de los errores de compilación en C. Parece que una de las formas en que C++ te «vuela el pie entero cuando te disparas» es haciendo que cualquier pequeño error genere cientos de líneas de mensajes indescifrables.

C++ sirve para todo, pero nada es lo suficientemente fácil de hacer en C++. Generalmente careces de Frameworks «famosillos» que te permitan hacer desarrollo web, creación de aplicaciones, desarrollo de videojuegos. Se puede hacer, pero generalmente no es la herramienta más adecuada para ello

Por otro lado, lo que pierde C++ por no tener cosas que hagan el trabajo por ti, lo gana en forma de una increíble velocidad y un gran control por parte de los programadores, lo cual hace que este lenguaje sea muy apto para desarrollar la infraestructura interna de muchos otros campos. Si bien C++ no es usado tanto de forma directa en el desarrollo web, creación de aplicaciones o desarrollo de videojuegos, si que se usa fuertemente tras bambalinas en todos estos campos. ¿En qué está hechos los motores de JavaScript, HTML y CSS del navegador? Probablemente en C++ (puede depender de tu navegador), ¿Como accedes al nivel más profundo para sacar provecho a los dispositivos Android? Pues usando el NDK que hace permite usar C o C++ para desarrollar código nativo, ¿En qué está programado la plataforma de desarrollo videojuegos que te permite «arrastrar y soltar objetos»? Nuevamente, en C++.

zzz

En fin, aunque aprender a programar en C++ puede ser tan fácil o difícil como hacerlo en otros lenguajes de la familia de C, llegar a conocerlo bien puede ser bastante más difícil que la mayoría. Aunado a que tienes que tener habilidades de programación avanzadas para hacer cosas significativas en este lenguaje mientras que en otros lenguajes puedes lograr cosas interesantes con solo conocerlos a medias, pienso que especializarte en C++ en un principio no es lo más recomendable. No obstante sostengo que aprenderlo enfocándote en los conceptos puede ayudarte a entender muchas cosas que en otros lenguajes no se suelen aprender.

TypeScript

¿Qué podría ser mejor que usar JavaScript? Respuesta: No usarlo, y en su lugar usar un mejor lenguaje que después sea transformado a JavaScript… No ya, dejando las bromas, JavaScript se ha convertido en un buen lenguaje como dijimos antes; Solo le falta un pequeño empujoncito más.

TypeScript es un superconjunto de JavaScript creado por Microsoft y que resulta más apto para proyectos grandes. Básicamente consiste en tomar JavaScript, añadirle un sistema de tipos más estricto y ademas incluye características futuras del propio JavaScript que podrás usar antes que nadie. Dado que tanto los navegadores como Node.js entienden JavaScript, pero no TypeScript, este último se tiene que transpilar en JavaScript antes de usarse por medio del TypeScript Compiler (tsc).

El sistema de tipos estricto permite detectar muchos más errores mientras se escribe el código en lugar de esperarse hasta la fase de ejecución. Fuera de eso, sigue teniendo esencialmente las mismas capacidades y todo lo que se ha dicho de JavaScript vale también para este.

Shell

Shell no es realmente un lenguaje, sino un grupo de lenguajes muy similares que se usan para automatizar tareas del sistema operativo. Estos lenguajes suelen estar optimizados para leer y escribir archivos, manejar permisos, ejecutar programas, redirigir entradas y salidas, etc.

zzz

Suelen ser lenguajes interpretados que se usan con frecuencia en modo interactivo. Siempre que estás usando una «terminal», «consola» o «línea de comandos» estás usando uno de estos lenguajes. Pocas cosas definen mejor la imagen de un hacker de la cultura popular que una pantalla negra y alguien escribiendo incansablemente en ella con letras subiendo a gran velocidad.

Si bien no hay muchas cosas que se suelan desarrollar enteramente en lenguajes de Shell, estos siguen siendo parte de la automatización de tareas repetitivas en muchos proyectos de software. También es usado extensamente en servidores básicamente con la misma finalidad.

C

Todo lo que vale la pena está escrito en C

– Dicho popular en mi universidad

Hola mundo señoras y señores, es hora de hacer reverencia, pues ahora mismo nos encontramos posiblemente ante el lenguaje más influyente de todos los tiempos, así como el padre y abuelo de la gran mayoría de los lenguajes de programación que usamos hoy en día.

C nace, crece y se desarrolla como un lenguaje de programación pequeño, fácil de aprender pero difícil de dominar. Su sintaxis fue pensada para ser fácilmente interpretada por un analizador léxico, pero no es tan fácil de interpretar por los humanos —A veces de se que es «fácil de leer para el compilador, no para los programadores». Además, este lenguaje define muy pocas restricciones para su implementación, dando gran oportunidad de optimización para quienes implementan compiladores. Hay dos principales resultados de todos los factores anteriores:

  1. El lenguaje C es rápido. Este lenguaje se suele usar como regla para medir la velocidad de otros lenguajes. «{lenguaje A} es 2 veces más lento que C, mientras que {lenguaje B} es 3 veces más lento que C», «El lenguaje Go es solo 1.1 veces más lento que C, por lo que es increíblemente rápido», «C++ puede, en cierta situaciones, superar la velocidad de C». En fin, siempre que se dice que tal o cual lenguaje se acerca a C en velocidad, se asume como algo impresionante porque C mismo se considera muy rápido.
  2. El lenguaje C está bastante limitado. Cuando hablamos de C++ mencionamos como dicho lenguaje solo tenía herramientas básicas. Pues el lenguaje C lleva esa limitación a un nivel completamente distinto. No es solo ya que carezcas de una forma estándar de crear interfaces gráficas, de hacer transmisión de datos por red, o que no disponga de recolector de basura, sino que en C ni siquiera cuentas con algunas cosas consideradas herramientas básicas como tener listas dinámicas, un tipo de datos especial para las cadenas o verdaderas referencias en lugar de tener que simularlas mediante apuntadores. Esto tiene sus ventajas, como el hecho de que C requiera muy pocos recursos de memoria o lo mencionado en el punto anterior, pero en la mayoría de ocasiones es detrimental a la hora de usarlo en proyectos comunes.

Mucho de lo que mencionamos sobre C++ es válido también al hablar de C. El lenguaje C no se usa con frecuencia para crear la parte de los programas que es directamente visible o directamente usable, pero si se usa para crear infraestructura. Se suele usar en la programación de sistema operativos, en la creación de compiladores para lenguajes de programación, en la programación de sistema embebidos, y en general en cosas que requieran mucha eficiencia o que dispongan de limitada memoria. Casi todos los lenguajes en esta lista, como JavaScript, Python, PHP, C++, Shell o Ruby, tienen sus implementaciones más importantes escritas en lenguaje C. El sistema operativo Unix se fue reimplementado en lenguaje C en su momento, y sus sucesores como Mac OS, Linux (Que da soporte a las distribuciones GNU/Linux y al sistema operativo Android), también están mayormente programados en C. Importantes herramientas para programadores como el sistema de control de versiones git también lo están.

zzz

Aprender C de manera básica te puede abrir la puerta a la sintaxis de toda su familia de lenguajes, pero aprenderlo a profundidad tampoco es necesario a menos que a la larga te quieras enfocar en algo que lo requiera. Además los beneficios de aprender su sintaxis también son validos si aprendieras otros lenguajes del mismo grupo, así que empezar con C tampoco es un requisito. Lo que si has de tener por seguro, es que sin importar lo que decidas aprender en el mundo de la programación, tarde o temprano terminaras usando parte del legado de este gran lenguaje.

Ruby

You are going to object, even if you object

¡Vas a usar objetos, incluso si te objetas!

Ruby es un lenguaje interpretado de propósito general, que intenta ser fácil de entender y entretenido de usar como Python, y que tomó una aproximación más radical a los conceptos de orientación a objetos que Java. Mientras que en Java hay tipos de datos primitivos que se salvan de ser objetos, en Ruby absolutamente todo es un objeto.

Como buen lenguaje de alto nivel y de propósito general, Ruby puede usarse para multitud de cosas, desde automatización y trabajo con base de datos, hasta aplicaciones web.

Ruby también tiene su buena lista de herramientas para programadores. Por ejemplo, el compilador de SASS, que es un preprocesador de CSS, tiene su implementación más importante escrita en Ruby. Muchas de las herramientas escritas en ruby se pueden instalar como mediante su sistema de «gemas».

Hoy en día se le conoce principalmente por su framework Ruby on Rails, para el desarrollo de páginas web.

Deja un comentario