Lenguajes de programación
Un lenguaje de programación es un lenguaje formal que permite escribir instrucciones para que un ordenador ejecute tareas concretas.
Estas instrucciones, denominadas programas, deben traducirse a un lenguaje que la máquina pueda comprender mediante un compilador, un intérprete o una combinación de ambos.
Conceptos fundamentales
Para comprender los lenguajes de programación es imprescindible conocer los siguientes conceptos:
- Código fuente: programa escrito por el desarrollador.
- Código máquina: instrucciones binarias ejecutadas por la CPU.
- Compilador: traduce el código fuente antes de ejecutarlo.
- Intérprete: traduce y ejecuta el código línea a línea.
- Sintaxis: reglas para escribir correctamente un programa.
- Semántica: significado de las instrucciones.
Evolución de los lenguajes
Los lenguajes de programación han evolucionado para facilitar el desarrollo de software.
Lenguaje máquina (1ª generación)
Está formado exclusivamente por unos y ceros.
Características
- Máximo rendimiento.
- Total dependencia del hardware.
- Muy difícil de programar.
Lenguaje ensamblador (2ª generación)
Utiliza instrucciones simbólicas que representan instrucciones máquina.
Características
- Más legible que el lenguaje máquina.
- Muy eficiente.
- Dependiente de la arquitectura del procesador.
Lenguajes de alto nivel
Se aproximan al lenguaje humano y son independientes del hardware.
Características
- Mayor productividad.
- Más fáciles de aprender.
- Mayor portabilidad.
- Facilitan el mantenimiento.
Ejemplos
- Java.
- C.
- C++.
- C#.
- Python.
- JavaScript.
- PHP.
- Go.
- Rust.
Compiladores e intérpretes
Existen dos formas principales de ejecutar un programa.
Compilación
El compilador traduce todo el programa antes de ejecutarlo.
Ventajas
- Mayor rendimiento.
- Detección previa de errores.
- Genera ejecutables.
Ejemplos
- C.
- C++.
- Go.
- Rust.
Interpretación
El intérprete analiza y ejecuta el código durante la ejecución.
Ventajas
- Mayor flexibilidad.
- Facilita las pruebas.
- Desarrollo más rápido.
Ejemplos
- Python.
- JavaScript.
- PHP.
Paradigmas de programación
Un paradigma define la forma de organizar y desarrollar un programa.
Programación imperativa
El programa describe paso a paso las instrucciones que deben ejecutarse.
Ejemplos
- C.
- Pascal.
Programación orientada a objetos (POO)
Organiza el software mediante objetos que contienen datos y comportamiento.
Conceptos principales
- Clase.
- Objeto.
- Encapsulación.
- Herencia.
- Polimorfismo.
- Abstracción.
Ejemplos
- Java.
- C#.
- C++.
Programación funcional
Se basa en funciones puras y evita modificar el estado de los datos.
Ejemplos
- Haskell.
- Elixir.
- Scala (parcialmente).
Programación declarativa
El programador describe qué desea obtener, sin especificar exactamente cómo conseguirlo.
Ejemplos
- SQL.
- Prolog.
Tipado
Los lenguajes pueden clasificarse según cómo gestionan los tipos de datos.
Tipado estático
El tipo de las variables se conoce antes de la ejecución.
Ejemplos
- Java.
- C#.
- C++.
- Go.
Ventajas
- Menos errores en ejecución.
- Mayor seguridad.
Tipado dinámico
El tipo se determina durante la ejecución.
Ejemplos
- Python.
- JavaScript.
- PHP.
Ventajas
- Mayor flexibilidad.
- Desarrollo más rápido.
Lenguajes más utilizados
| Lenguaje | Uso principal |
|---|---|
| C | Sistemas operativos y software de bajo nivel |
| C++ | Aplicaciones de alto rendimiento |
| Java | Aplicaciones empresariales |
| C# | Aplicaciones .NET |
| Python | IA, automatización y ciencia de datos |
| JavaScript | Desarrollo web |
| PHP | Desarrollo web del lado servidor |
| Go | Servicios y aplicaciones cloud |
| Rust | Software seguro y de alto rendimiento |
Ciclo de ejecución de un programa
Código fuente
↓
Compilador / Intérprete
↓
Código máquina o Bytecode
↓
Sistema Operativo
↓
CPU
↓
Resultado
Caso práctico
Situación
Una empresa necesita desarrollar una aplicación web corporativa con una interfaz moderna, un servidor robusto y una base de datos.
Solución
Una arquitectura habitual podría utilizar:
- JavaScript para el desarrollo del cliente (Frontend).
- Java o PHP para la lógica del servidor (Backend).
- SQL para consultar la base de datos.
Cada lenguaje desempeña una función distinta dentro de la aplicación.
Ventajas e inconvenientes
Ventajas
- Automatización de procesos.
- Desarrollo de aplicaciones complejas.
- Reutilización de código.
- Portabilidad entre plataformas.
- Amplio ecosistema de bibliotecas y herramientas.
Inconvenientes
- Curva de aprendizaje.
- Errores de programación (bugs).
- Necesidad de mantenimiento.
- Obsolescencia de algunos lenguajes o tecnologías.
Errores habituales
- Confundir compilador con intérprete.
- Pensar que Java y JavaScript son el mismo lenguaje.
- Creer que todos los lenguajes funcionan igual.
- Confundir paradigma con lenguaje.
- Pensar que el código fuente es ejecutado directamente por la CPU.
Cómo evitarlos
- Diferenciar claramente compilación e interpretación.
- Identificar el paradigma principal de cada lenguaje.
- Recordar que el procesador solo ejecuta código máquina.
- Comprender el papel del compilador, el intérprete y la máquina virtual.
Relaciones con otros temas
Los lenguajes de programación están estrechamente relacionados con:
- Algoritmos.
- Estructuras de datos.
- Compiladores.
- Sistemas operativos.
- Bases de datos.
- Desarrollo web.
- APIS.
- Ingeniería del software.
- Control de versiones.
Conceptos clave para recordar
[!NOTE]
- Un lenguaje de programación permite desarrollar programas mediante instrucciones formales.
- El código fuente debe traducirse antes de ser ejecutado por la CPU.
- Los compiladores traducen el programa completo; los intérpretes lo ejecutan instrucción a instrucción.
- Los principales paradigmas son imperativo, orientado a objetos, funcional y declarativo.
- Los lenguajes pueden ser de tipado estático o tipado dinámico.
- Los lenguajes de alto nivel son los más utilizados por su productividad y portabilidad.
- Es habitual combinar varios lenguajes en una misma aplicación (por ejemplo, JavaScript, Java y SQL).
- El procesador únicamente ejecuta código máquina.