1. Contenidos
1.1 Lenguajes de programación
Un lenguaje de programación es un sistema formal que permite expresar algoritmos e instrucciones que podrán ser procesados por un sistema informático.
Existen muchos lenguajes porque los problemas, plataformas y objetivos son diferentes. Un lenguaje puede priorizar rendimiento, productividad, portabilidad, seguridad, facilidad de mantenimiento o control del hardware.
Un mismo lenguaje puede pertenecer simultáneamente a varias categorías. La clasificación depende del criterio que estemos utilizando.
1.2 Clasificación según el nivel de abstracción
El nivel de abstracción indica, de forma general, cuánto se aleja el lenguaje de los detalles concretos del hardware.
Más próximo al hardware
Lenguaje máquina
↓
Ensamblador
↓
Lenguajes de alto nivel
Más próximo al programador
- Lenguaje máquina: instrucciones que ejecuta directamente una arquitectura de procesador.
- Ensamblador: utiliza mnemónicos para representar instrucciones máquina.
- Alto nivel: ofrece construcciones más abstractas y próximas a la forma de expresar algoritmos de una persona.
Ejemplos habituales de alto nivel: C, Java, Python, JavaScript, PHP o C#.
1.3 Clasificación según la forma de ejecución
De forma didáctica podemos distinguir:
- compilados a código nativo: por ejemplo C o C++;
- interpretados: por ejemplo Python, en una descripción simplificada;
- código intermedio y máquina virtual: por ejemplo Java.
En la práctica, las implementaciones modernas pueden combinar interpretación, compilación previa y compilación JIT.
1.4 Propósito general y propósito específico
Los lenguajes de propósito general permiten resolver problemas muy variados. Ejemplos: Java, Python, JavaScript, C o C#.
Los lenguajes de propósito específico se diseñan para un dominio concreto. Un ejemplo fundamental es SQL:
SELECT nombre, stock
FROM productos
WHERE stock < 3;
SQL está especializado en definir y manipular información de bases de datos relacionales.
1.5 No todo lenguaje informático es un lenguaje de programación
En desarrollo web trabajamos con tecnologías que tienen finalidades diferentes:
- HTML: lenguaje de marcado para estructurar contenido.
- CSS: lenguaje de hojas de estilo para describir presentación.
- JavaScript: lenguaje de programación.
<h1>El Emporio Arcano</h1>
h1 {
font-size: 2rem;
}
if (stock === 0) {
alert("Producto agotado");
}
1.6 Paradigmas de programación
Un paradigma es una forma general de organizar y expresar la solución de un problema.
- Imperativo: describe una secuencia de operaciones que modifican el estado.
- Procedural: organiza el programa mediante procedimientos o funciones.
- Orientado a objetos: organiza el sistema alrededor de objetos que agrupan datos y comportamiento.
- Funcional: enfatiza funciones y transformaciones de datos.
- Declarativo: expresa principalmente qué resultado se desea.
1.7 Lenguajes multiparadigma
Muchos lenguajes modernos son multiparadigma. Por ejemplo:
- Java permite programación imperativa, orientada a objetos y características funcionales;
- Python permite programación imperativa, procedural, orientada a objetos y funcional;
- JavaScript permite programación imperativa, orientada a objetos y funcional.
1.8 Selección de un lenguaje
No existe un lenguaje universalmente mejor. La selección debe considerar criterios como:
- tipo de aplicación;
- plataforma de ejecución;
- rendimiento y consumo de recursos;
- ecosistema de bibliotecas y frameworks;
- experiencia del equipo;
- mantenibilidad;
- comunidad y soporte.
Una aplicación como El Emporio Arcano puede utilizar varias tecnologías: HTML y CSS para la interfaz, JavaScript para interacción, Java o PHP para servidor y SQL para acceso a datos.
1.9 Tabla resumen
| Tecnología | Nivel | Ejecución aproximada | Tipo / propósito |
| C | Alto | Compilado | Propósito general |
| Java | Alto | Bytecode + JVM | Propósito general |
| Python | Alto | Interpretado, simplificación | Propósito general |
| JavaScript | Alto | Motor JS / JIT | Propósito general |
| SQL | Alto | Procesado por SGBD | Propósito específico |
| HTML | Alto nivel de abstracción | Procesado por navegador | Lenguaje de marcado |