Continuando lo que explicamos en la primera entrada sobre introducción a la programación, donde vimos que era la programación, hicimos un repaso por su historia y mencionamos conceptos generales como algoritmo, compilación, depuración, etc, ahora nos toca asentar un poco más esa base de conocimiento, ahondando en lo que suele llamarnos la atención al acercarnos al abismo del picacodismo: los lenguajes de programación.
Si hiciéramos una encuesta sobre cual es el primer paso que da la gente para aprender a programar, seguramente la respuesta con más votos sería que buscó sobre un lenguaje concreto o que ese fue el que enseñaban en su ciclo formativo o carrera universitaria. Y es que, por desgracia, esta sociedad tiene interiorizado que debe aprenderse programación a través de un lenguaje. Craso error, bajo mi punto de vista.
Cuando tienes una base sólida en cuanto a conceptos y lógica programática, el moverte entre lenguajes te resultará mucho más fácil, dado que solo debes adaptarte a la sintaxis. Es obvio que cada lenguaje puede tener una serie de características únicas, pero repito, la base es la misma: cuando aprendes como funciona un while, un for, una estructura if…else, has aprendido las herramientas lógicas. Ya solo te falta volcarlas en tu lenguaje favorito (o con el que trabajes, que no siempre van de la mano).
Veamos, aún así, algunos conceptos asociados a los lenguajes.
Lenguajes de programación. Clasificación.
Un lenguaje de programación es un conjunto de palabras y expresiones que conforman un idioma artificial y que sirven para expresar en lenguaje humano las operaciones y procesos que debe realizar un computador.
Podemos hacer varias clasificaciones de los lenguajes de programación, atendiendo a diferentes conceptos o características:
- Por su nivel de abstracción: lenguajes de bajo, medio o alto nivel.
- Por su traducción: lenguajes compilados o interpretados.
- Por su tipado: lenguajes de programación fuertemente o débilmente tipados.
- Por su paradigma: lenguajes de programación declarativos, imperativos, orientados a objetos, etc. A pesar de poder clasificar los lenguajes, lo extenderemos en el siguiente punto y no en esta clasificación rápida.
Según su nivel de abstracción
Esta clasificación atiende al nivel de las capas donde un lenguaje trabaja en el ámbito de una máquina. De esta forma, tenemos:
Lenguajes de bajo nivel
Están diseñados para dar instrucciones detalladas al hardware del equipo, utilizándose para controladores de dispositivos o sistemas operativos. Encontramos el lenguaje binario (compuesto únicamente por unos y ceros (1 y 0), el lenguaje máquina y el ensamblador. Estos lenguajes están muy lejos del humano.
Lenguajes de medio nivel
Aunque es un término que no aceptan algunos programadores y/o doctores de computación, estos lenguajes se encuentran, como su nombre indica, en medio. Es decir, entre los de bajo y alto nivel. Tienen un mayor nivel de abstracción, pero sigue contando con características del lenguaje a bajo nivel.
Un ejemplo de estos sería el lenguaje C, ya que es capaz de acceder a los registros del sistema y trabajar con direcciones de memoria, pero también permite realizar acciones de alto nivel.
Lenguajes de alto nivel
Estos lenguajes trabajan a nivel del software del equipo, por lo que su similitud al lenguaje humano es casi total. Cuando se programa con estos lenguajes, las instrucciones al hardware del equipo pasan a otro plano, ya que hay un gran nivel de abstracción. Además, permite ser usado en cualquier máquina, por lo que es independiente del hardware utilizado.
Lenguajes de alto nivel son PHP, Python o Java.
Según su traducción
A estas alturas ya tenemos claro que un ordenador no entiende directamente un lenguaje, si no código binario. Es decir, se debe traducir la sintaxis de un lenguaje de programación al código que si entiende la computadora. Este proceso se conoce como compilación. De esta forma, encontramos: lenguajes compilados y lenguajes interpretados.
Lenguajes compilados
En estos lenguajes, el código fuente será traducido completamente a código máquina en un solo paso mediante el compilador. Este proceso se realiza antes de ejecutarse el programa y nos genera un archivo ejecutable para la plataforma en la que queramos lanzarlo (un .exe
en Windows, por ejemplo). Encontramos a Java, C++ o Go.
Lenguajes interpretados
En los lenguajes interpretados, el código va directo a la máquina y un intérprete lo traduce en tiempo de ejecución. Podemos imaginar esta situación como cuando en la vida real estás hablando con alguien de origen chino y hay un intérprete que te va traduciendo a español todo lo que dice. Como ejemplo de lenguajes interpretados tenemos Python o PHP.
Según su tipado
El tipado de un lenguaje de programación es una forma de definir que tipos de datos pueden almacenarse en una variable. Así, encontramos el tipado estático y el tipado dinámico.
Tipado estático
En este tipo de tipado, el tipo de variable se va a determinar en tiempo de compilación. Los lenguajes tipados son C, C++ y Java.
Tipado dinámico
En este, el tipo de una variable se determina en tiempo de ejecución, como pasa en lenguajes como Python o Ruby.
Paradigmas de programación
Aunque podríamos haber englobado esta sección dentro de la clasificación anterior, he querido explicarlo a parte, dada su importancia y extensión.
Un paradigma de programación es una metodología que sigue unas pautas inmutables. Es decir, los lenguajes que están bajo un paradigma comparten entre sí conceptos fundamentales para su uso en la programación.
Programación imperativa
En este modelo, el código está formado por una serie de instrucciones para realizar una tarea, organizando o cambiando valores en memoria. Estás instrucciones se ejecutan de manera secuencial, es decir, una detrás de otra, siguiendo una estructura de control basada en asignaciones, bucles y condicionales.
Este enfoque siempre ha sido el más tradicional de programación, ya que tiene similitud a como funciona el hardware en las computadoras. Su principal ventaja es la eficiencia y control detallado de los recursos del propio sistema, aunque puede ser difícil de mantener en proyectos grandes debido a su dependencia de cambios en el estado del programa.
En este paradigma encontramos tres enfoques diferenciados a la hora de codear: la programación estructurada, la procedimental y la modular.
Dentro de este paradigma encontramos lenguajes como C, Pascal o Fortran.
Programación declarativa
En este, el programador declara lo que debe suceder, pero no como debe suceder. Se basa en un conjunto de condiciones, proposiciones, afirmaciones, restricciones, ecuaciones o transformaciones que describen el problema y detallan su solución. Es decir, se utilizan métodos lógicos y funcionales.
En este paradigma, el programador se centra en la lógica del algoritmo y no tanto en la secuencia de instrucciones para llevarlo a cabo. Como ventaja encontramos que permite escribir un código más conciso y fácil de entender, aunque por contra puede ser menos eficiente cuando necesitemos un control preciso durante su ejecución.
El lenguaje SQL (en un sentido amplio), Lisp o Haskell son ejemplos de este paradigma.
Programación orientada a objetos (POO)
La programación orientada a objetos nos introduce un nuevo paradigma totalmente distinto al que se usaba en su mayoría, el imperativo. Es decir, se pasa de tener un código de arriba hacia abajo y complicado de separar o escalar a una programación en la que cualquier elemento se trata como un objeto, los cuales tienen características y funciones. Esta nueva forma hace más fácil el manejar y mantener el código.
Y para explicar que es eso de objetos, te pongo el ejemplo que leerás en casi todos los manuales: piensa en un coche. Si, un coche. Ese coche va a tener una serie de características, las cuales en POO se conocen como atributos. Estos atributos pueden ser: marca, modelo, color, año de fabricación o matriculación, velocidad máxima, nº de marchas…
Por otro lado, ese mismo coche va a tener unas acciones, conocidas como métodos, con los que va a poder interactuar con el mundo y viceversa: arrancar, parar, frenar, acelerar, tocar claxon…
Algunos lenguajes que tienen orientación a objetos son: C++, Java o Python.
Programación reactiva
En este tipo de programación observamos un diseño para manejar flujos de datos y eventos asíncronos, adaptándose a los cambios en los datos en lugar de ejecutarse de manera secuencial.
Por mencionar algunos lenguajes que tienen implementaciones reactivas, encontramos: JavaScript, C# o Kotlin.
Programación multiparadigma
Esta clasificación ha surgido en los últimos tiempos para englobar lenguajes que pueden adaptarse a varios paradigmas, en función de como el desarrollador lo utilice.
Si, un programa informático puede utilizar uno o más paradigmas en su interior, al igual que un lenguaje puede considerarse multiparadigma en función del prisma con el que lo mires. Por ejemplo, Python o PHP son orientados a objetos, pero también son reflexivos, imperativos y funcionales. Otros, como C++, Visual Basic o Delphi, combinan la programación orientada a objetos con la programación imperativa.
El índice TIOBE
El índice TIOBE (o índice de la comunidad de programación TIOBE) mide la popularidad de los lenguajes de programación en base al número de resultados de los motores de búsqueda (Google, Bing, Wikipedia, etc) para consultas que están relacionadas con un lenguaje.
Este índice se actualiza mensualmente y solo tiene en cuenta los llamados Sistemas de Turing completos, por lo que descarta lenguajes de marcado como HTML.
¡Pero ojo! Este índice no te indica cual es mejor o peor lenguaje, solo recrea un ranking en función de las intenciones de búsqueda de los usuarios.
El top ten del mes de junio de 2025 en el índice TIOBE es el siguiente:

Como vemos, Python encabeza la lista, seguido por C++, C, Java y C#. Y aunque la tercera posición de C pueda sorprenderte, uno de los abuelos de la programación sigue siendo de los lenguajes más usados hoy en día. Recuerda que casi todas las librerías de UNIX están escritas en este lenguaje.
Que lenguaje elegir para aprender a programar
Si has llegado hasta aquí, leyendo la entrada completa, habrás visto que te recomendé empezar a aprender a programar por la base: la lógica programática. Y me reitero. Cuando adquieras los conocimientos generales de programación, te costará muy poco adaptarte a uno u otro lenguaje. Empezar por pseudocódigo, realizando previamente un esbozo de los algoritmos a implementar en papel y boli, siempre será mi consejo. Y si, papel y boli. No tendrás mejores compañeros al principio y, puede, que durante toda tu vida como programador.
Pero si insistes en empezar la casa por el tejado, por ver si realmente esto del código te llama la atención, te detallo a continuación los lenguajes más apropiados para dar tus primeros pasos según la opinión de los expertos.
Python
Como hemos visto en esta entrada, Python es un lenguaje de alto nivel y de propósito general. Podrás realizar tareas diversas, desde análisis de datos como desarrollo de IA, pasando por páginas webs o prototipos de automatización.
Es uno de los lenguajes que más auge ha experimentado en los últimos años, gracias al cariño que le ha cogido la comunidad de desarrolladores. Esto es gracias a que funciona genial como lenguaje de scripting, además de permitir varios paradigmas de programación como orientación a objetos, imperativo, procedimental y funcional.
Es de código abierto, lo que te permite modificar su código para adaptarlo a tus necesidades. Es especialmente fácil de aprender gracias a la familiaridad de su sintaxis en inglés, lo cual hace que su curva de aprendizaje sea beneficiosa para el principiante.
Así se escribiría el mensaje «Hola mundo» en Python.
print("Hola Mundo")
JavaScript
Combinado con HTML y CSS, es el mejor lenguaje de programación que puedes aprender si quieres enfocarte en el desarrollo web front-end, ya que la inmensa mayoría de las páginas webs lo usan del lado del cliente para los scripts.
Es importante diferenciar entre JavaScript y Java ya que, aunque compartan una parte del nombre, no tienen nada que ver el uno con el otro.
Su implementación está pensada para mejorar la interactividad de una web, ya que te permitirá añadir elementos dinámicos en tus páginas, aunque también podrás implementarlo en desarrollos de juegos o aplicaciones webs.
Así se escribiría el mensaje «Hola mundo» en JavaScript.
document.write("Hola Mundo");
Java
Es un lenguaje de alto nivel y de propósito general que permite crear aplicaciones con facilidad. Uno de los lemas más conocidos de Java es: «Escribe una vez, ejecuta en cualquier lugar«, apelando por su portabilidad entre máquinas y sistemas operativos, independientemente de donde se haya escrito.
Con orientación a objetos y una sintaxis amigable con el mundo real, Java se considera uno de los lenguajes más idóneos para empezar a desarrollar código.
Así se escribiría el mensaje «Hola mundo» en Java.
class HolaMundo
{
public static void main(String[] args)
{
System.out.println("Hola Mundo");
}
}
C
A título personal, es el lenguaje que más recomendaría para empezar a programar.
Tiene una sintaxis compacta, que facilita su aprendizaje. Además, te permite adentrarte en muchos conceptos básicos que son la base en muchos otros lenguajes: variables, estructuras de control, funciones y los odiados punteros.
C es la base de otros lenguajes como C#, C++ e incluso Java. A día de hoy se sigue utilizando para la programación de sistemas como UNIX, desarrollo de drivers para componentes de hardware, etc.
Así se escribiría el mensaje «Hola mundo» en C.
#include <stdio.h>
int main()
{
printf("Hola Mundo\n");
return 0;
}
Conclusión
Y aquí finaliza este post sobre los lenguajes de programación.
Es importante que adquieras e interiorices estos conceptos para así poder avanzar en el camino. Recuerda que hemos visto que es un lenguaje de programación, como se clasifican, los paradigmas de programación, el índice TIOBE o cual es el lenguaje más recomendado para empezar a programar.
Si quieres aportar/debatir, recuerda que tienes aquí abajo la caja de comentarios para ello. Y si quieres ayudarme a que este post y esta web llegue a más personas, no olvides compartir esta entrada en tus RRSS usando los botones. Y ya, para rematar la faena, no olvides suscribirte a mi newsletter, donde solo te mandaré correos para avisarte de nuevas entradas en el blog.
Hasta la próxima, ¡un saludo!