# Introducción a la programación

## Introducción a la Programación

***

### ¿Qué es un lenguaje de programación?

Imagina que tienes un robot que puede hacer cualquier cosa: cocinar, limpiar, bailar. Pero... solo si le dices exactamente qué hacer. Un **lenguaje de programación** es la manera en la que los humanos hablamos con esos robots (computadoras). Es como enseñarle a tu perro comandos: "sienta", "ven", "quieto". Solo que en vez de ladridos, usamos palabras como `print`, `if`, `while`, etc.

***

### Compilado vs Interpretado vs Híbridos

* **Lenguaje compilado**: se traduce todo el código de una vez antes de ejecutar. Ejemplo: C, C++.
* **Lenguaje interpretado**: se traduce y ejecuta línea por línea. Ejemplo: Python.
* **Híbrido**: combina ambos mundos. Java, por ejemplo, compila a bytecode que luego se ejecuta en un runtime (JVM).

#### ¿Qué es un runtime como el de Java?

Es el entorno que ejecuta el bytecode. Pensa en la JVM como un "intérprete especializado".

#### ¿Y un compilado en C#?

C# compila a un bytecode llamado IL (Intermediate Language), que se ejecuta en el .NET runtime (CLR).

***

### Archivos especiales

* `.pyc`: Es el código Python ya compilado a bytecode para que se ejecute más rápido.
* `.so`: Son bibliotecas compartidas en sistemas Unix/Linux, como los `.dll` en Windows.

***

### Lenguajes: Nativos, Funcionales, OO, Procedurales, Imperativos

* **Nativo**: genera binarios que se ejecutan directamente en el hardware. Ej: C.
* **Funcional**: se basa en funciones puras y evita estados. Ej: Haskell.
* **Orientado a Objetos (OOP)**: organiza el código en objetos con atributos y métodos. Ej: Java.
* **Procedural**: secuencia de instrucciones. Ej: C.
* **Imperativo**: describe _cómo_ hacer algo (cómo cocinar con receta).

***
