Tema 2. Lenguajes de programación
Conceptos básicos
Lenguajes de programación
Es un conjunto de reglas y sintaxis que permite a los programadores escribir instrucciones que una computadora puede entender y ejecutar. Facilita la comunicación entre humanos y máquinas.
Código y traducción
Código fuente
Es el código que escribe el programador, que se convierte en un programa ejecutable por un compilador o intérprete. Por ejemplo, un archivo .py que contiene código Python.
Tipos de traductores
- Compilador: Traduce todo el código de una vez antes de ejecutarlo (como en C, C++, Rust, Go).
- Intérprete: Traduce y ejecuta el código fuente línea por línea (Python, JavaScript, Ruby, PHP, Perl).
- Híbrido: Combina compilación a bytecode e interpretación en tiempo de ejecución (Java, C#).
- Ensamblador: Convierte código en lenguaje ensamblador a código máquina.
Estructura y semántica
Sintaxis
Sintaxis son las reglas que definen la estructura de un lenguaje de programación, las cuales deben ser seguidas estrictamente para que el código funcione.
Semántica
La semántica se refiere al significado de las instrucciones en un lenguaje de programación. Es crucial para comprender cómo las instrucciones se ejecutan.
Importancia de los lenguajes de programación
Los lenguajes de programación son esenciales porque permiten a los programadores desarrollar software que da soluciones a problemas complejos. Un buen conocimiento de la sintaxis y semántica de un lenguaje es clave para escribir código eficiente y libre de errores.
Herramientas
Algoritmo
Un algoritmo es una secuencia de pasos para resolver un problema. Debe ser:
- Definido: Sin ambigüedades.
- Finito: Debe terminar en algún momento.
- Entrada y salida: Recibir valores de entrada y producir resultados de salida.
- Efectivo: Los pasos deben ser ejecutables en un tiempo razonable.
Compiladores
Es un programa que traduce el código fuente de un lenguaje de alto nivel (como C, C++ o Java) a código máquina, que puede ejecutar la computadora.
Tipos de compiladores
- Compilador Nativo: Genera código máquina para la misma arquitectura donde se ejecuta.
- Compilador Cruzado: Crea código para una arquitectura diferente a la del sistema que ejecuta el compilador (por ejemplo, de x86 a ARM).
- Transpilador: Traduce el código de un lenguaje de programación a otro lenguaje de alto nivel (como de Java a Kotlin).