Cuando nos iniciamos en el mundo de la programación, una de las cosas que no nos preguntan es acerca del objeto por el cual queremos aprender a programar, para que así nos ayuden a elegir el camino correcto, sino que de inmediato empezamos a conocer muchas cosas, lenguajes, IDE's, editores, frameworks, librerías y demás. En el camino surge una gran pregunta, muy polémica y que tiene muchas respuestas, influenciadas por la edad o la región de quién responde, entre otros factores. La pregunta concreta es: ¿Cuál es el mejor lenguaje de programación?.
Hoy me embarco en este debatido tema, intentaré dar una posición imparcial y realista, en base a los años de experiencia en el lado oscuro.
Los lenguajes
Existen lenguajes compilados e interpretados, los compilados son lenguajes generalmente de bajo y medio nivel, los interpretados son de alto nivel. Algunos ejemplos de lenguajes compilados serían C/C++, C#, Objetive C, Java, Go. En los interpretados está Python, PHP, Javascript, Ruby y demás. De estos dos grupos se descompone la gran batalla: ambos alegan que tienen el mejor lenguaje, muchos argumentos y debates.
Pero, ¿cuál es el mejor?
La respuesta es simple y sencilla: No existe un mejor lenguaje de programación, al menos, a corto plazo no existe, ni existirá. Podríamos decir que C es el padre y madre de todos los lenguajes, y aunque es verdad, no lo hace el mejor. En realidad C se ha utilizado para construir todo lo que hoy se llama internet, PHP está escrito en C, igual que Python y Javascript. Esta declaración nos da una pista de cómo en realidad funcionan las cosas, capas de tecnología construidas en diferentes lenguajes.
El debate
Algunos programadores de lenguajes compilados, por lo general, se quejan de PHP, Python y Javascript, muy citados en este artículo pues son mis favoritos, alegando aspectos como el tipado, la seguridad, el rendimiento, y demás; y si exponemos argumentos nunca acabaría la discusión, lo mejor es observar el debate desde un punto neutro, analizando la herramienta y su utilidad, y con un agregado relacionado con el gusto.
La analogía del martillo
En la imagen hay varios tipos de martillos, aunque son muchos más, con todos puedes realizar actividades muy similares pero cada uno tiene su especialidad. Se puede clavar un clavo con un martillo de bola aunque no esté diseñado para tal fin, dicho fin determina cual es el adecuado y es la razón de que hayan diferentes tipos. En los lenguajes de programación ocurre lo mismo, aunque la descripción de utilidad en las páginas oficiales de cada lenguaje dice que son de propósito general, hay fortalezas y debilidades enmarcadas en el objetivo para lo cual se quieran emplear, las cuales determinan cuál debes elegir y aprender, porque será para toda una vida. En pocas palabras, no hay ningún lenguaje que satisfaga todos los requerimientos en el extenso mundo del software, en ese orden, primero se debe analizar la especialidad del lenguaje y luego elegimos en pos del objetivo trazado.
Utilidad de los lenguajes más populares
- El lenguaje C: Es mayormente usado en la construcción de sistemas operativos, controladores y cosas que requieran algo cercano al lenguaje maquina o de bajo nivel.
- El lenguaje C++: Es la evolución del lenguaje C con soporte de programación orientada a objetos (POO). Su aplicación es básicamente la misma, también se usa en desarrollo de vídeo juegos y aplicaciones de escritorio.
- Objetive C: Es el hermano de C++ bajo la tutela de Apple Inc.
- Java: Fue durante muchos años el lenguaje más popular, tiene una gran demanda laboral y es enseñado en las universidades como el lenguaje de introducción a la POO, su maquina virtual lo hace portable y multi-plataforma, usado para aplicaciones de escritorio, móviles, web y vídeo juegos.
- C#: Es el hermano de Java hecho por Microsoft, tiene sus mismas funcionalidades. Actualmente es popular en el desarrollo de vídeo juegos en la consola Xbox y por Xamarin, la tecnología que permite escribir aplicaciones multi-plataforma.
- Python: Es el lenguaje más popular del momento, es fácil de aprender y su sintaxis es limpia, se usa para el desarrollo de aplicaciones de escritorio, móviles con Kivy, web, sistemas embebidos, inteligencia artifical, investigación matemática, ciencia de datos, robótica, e Internet de las cosas. Python es totalmente genial.
- Javascript: Cuando hablaba de este lenguaje en la universidad, me decían: "Ah, si, ese que sirve para validar formularios". Me Permito decir un rotundo no, Javascript junto a Python, son los lenguajes con mayor popularidad. Este se usa para el desarrollo de aplicaciones de escritorio con Electron, móviles con React Native, web (backend con NodeJs y frontend con VueJs, Angular, React), inteligencia artificial, robótica e Internet de las cosas. Javascript es de los lenguajes más potentes gracias al motor V8 del navegador Chromiun.
- PHP: Es el rey de Internet, es fácil de aprender, el equipo tras PHP busca perpetrarlo en la cima de la web, no hay ningún lenguaje que permita el despliegue de aplicaciones tan fácil y rápido como PHP. Entre sus cosas maravillosas están el framework Laravel y su poderoso ecosistema, y Swoole, la extensión que le da súper poderes. Swoole es como NodeJS pero en PHP, tiene un rendimiento increíble. Por supuesto, no puedo olvidar a WordPress, Shopify, WooCommerce, Magento y OctoberCMS.
Hay otros lenguajes que han entrado al ruedo e impactan las comunidades de desarrollo como Go de Google, Rust de Mozilla, el lenguaje R y Swift de Apple.
Imagen tomada de Eetimes.
El tema del gusto
Todos los lenguajes son buenos, en cualquiera de los antes mencionados encontrarás mucho que hacer, pero acá el tema es qué tan cómodo y divertido te parece, obviamente como dije antes, enmarcado en un objetivo. Personalmente uso Python, PHP y Javascript, siento que son lenguajes para desarrollos rápidos, potentes y sirven para todo. Otro lenguaje que considero atractivo es C++, sus versiones modernas han cambiado mucho la forma en que se desarrollan programas. Otro recomendado es Java, pero recuerden usar la OpenJDK por el tema de licenciamiento.
Lo que aconsejo es que fijes tu meta, establecer qué quieres crear para seleccionar el lenguaje con mayor afinidad, prueba con los que te llamen la atención y profundiza con uno, pero sólo uno, cuando lo domines puedes intentar aprender otro.
Todos los lenguajes son geniales
Todos los lenguajes son geniales, no se trata de decir que hay uno mejor o peor, es cuál te gusta, te divierte y con cuál puedes alcanzar tus objetivos. Podemos usar lenguajes en conjunto, como el clásico caso de PHP y Javascript, de forma que funcionen en capas: Aplicaciones, microservicios, clientes de escritorio, servicios web/API's. Un ejemplo sería:
- Construir una API Rest ful en PHP o NodeJS o Python.
- Construir una aplicación web con Javascript usando ReactJS, VueJS o Angular para consumir la API.
- Se podría construir una aplicación para Android en Java para que consuma la misma API.
- Igualmente, una aplicación de escritorio en C# o Java, conectada otra vez a la API.
En cualquier caso, se pueden construir todas las capas, API REST y clientes web, móvil y de escritorio, usando el mismo lenguaje. Finalmente, debo mencionar que nunca debemos hablar mal de una tecnología que no conocemos a profundidad, muy seguramente tu crítica está fundamentada en falta de conocimiento. Escribiré artículos puntuales de las cosas maravillosas de Python, PHP y Javascript más adelante y al detalle, no te los pierdas.