Skip to content

Mapa de Lenguajes de Programacion

Prologo

Por que hay tantos lenguajes de programacion? Cual deberia aprender? Este capitulo te lleva desde la "evolucion de los lenguajes" hasta los "paradigmas de programacion" hasta "como elegir", construyendo una comprension completa del panorama de los lenguajes de programacion. Conclusion anticipada: no existe el mejor lenguaje, solo el mas adecuado para cada escenario.

Que aprenderas en este articulo?

Despues de completar este capitulo, obtendras:

  • Capacidad de seleccion racional: al enfrentar "que lenguaje aprender", poder juzgar segun las necesidades del proyecto
  • Profundidad en paradigmas: entender que "orientacion a objetos" y "programacion funcional" son formas de pensar diferentes
  • Perspectiva historica: ver mas de 70 anos de evolucion -- de escribir 0 y 1 a codigo generado por lenguaje natural
  • Base para aprendizaje futuro: fundamentos para disenar lenguajes y tomar decisiones tecnologicas
CapituloContenidoConcepto clave
Capitulo 1Evolucion de lenguajesDe lenguaje maquina a lenguaje de alto nivel
Capitulo 2Paradigmas de programacionImperativo, orientado a objetos, funcional
Capitulo 3Eleccion de lenguajeMetodo de seleccion basado en escenarios

0. Como los humanos "hablan" con las computadoras?

Imagina que necesitas comunicarte con un robot que solo entiende binario:

  • Escribir 0 y 1 directamente -- Lo mas primitivo, eficiencia extremadamente baja (lenguaje maquina)
  • Usar mnemotecnicos -- MOV AX, 1 es mucho mas reconocible que 10110000 00000001 (lenguaje ensamblador)
  • Usar lenguaje cercano al natural -- int sum = 1 + 2; los humanos pueden leerlo directamente (lenguaje de alto nivel)

Los lenguajes de programacion son el puente entre humanos y computadoras, evolucionando durante mas de 70 anos hacia algo "mas cercano al pensamiento humano".


1. Evolucion de los lenguajes de programacion

Explora la evolucion de los lenguajes de programacion desde los anos 1940 hasta hoy:

Programming Language MapEvolution · paradigms · type systems · language comparison
1940s
Machine language
Binary
1950s
Assembly and early high-level languages
AssemblyFortranLispCOBOL
1970s
Systems programming era
CPascalSmalltalk
1980s-90s
OOP and the Internet
C++JavaPythonJavaScript
2000s
Modern languages
C#GoScalaRuby
2010s+
Next-generation languages
RustSwiftKotlinTypeScript
2000sModern languages
Language design focused more on developer productivity and safety. Go was created for cloud-native infrastructure.
GoConcurrency-friendly and used to build Docker and Kubernetes
RubyRails brought a major productivity boost to Web development
Core idea:Programming languages have evolved from machine code to modern high-level languages, steadily moving closer to human thinking.

Resumen en una frase

La tendencia evolutiva de los lenguajes: cada vez mas cercanos al pensamiento humano, mas seguros, mas eficientes.


2. Paradigmas de programacion: Formas de pensar

Los paradigmas de programacion no son caracteristicas de lenguajes, sino formas de pensar -- como la escritura tiene poesia, novelas y ensayos.

2.1 Imperativo -- "Decir a la computadora paso a paso como hacerlo"

c
int sum = 0;
for (int i = 0; i < n; i++) {
    sum += arr[i];
}

2.2 Orientado a objetos -- "Encapsular datos y comportamiento en objetos"

python
class Dog:
    def __init__(self, name):
        self.name = name
    def bark(self):
        print(f"{self.name} says woof!")

2.3 Funcional -- "Componer con funciones puras, sin modificar estado"

haskell
sum = foldl (+) 0
-- La misma entrada siempre produce la misma salida

2.4 Declarativo -- "Solo decir que hacer, no como"

sql
SELECT name FROM users WHERE active = true
-- La base de datos decide como buscar mas rapido

En el desarrollo real

Los lenguajes modernos son en su mayoria multiparadigma. Python soporta tanto orientacion a objetos como programacion funcional; JavaScript igual. No te obsesiones con "cual paradigma es mejor", elige el mas adecuado segun el problema.


3. Sistema de tipos: Reglas de transito de los datos

Fuertemente tipadoDebilmente tipado
EstaticoJava, Rust, TypeScript -- Lo mas seguroC, C++ -- Eficiente pero cuidado
DinamicoPython, Ruby -- Flexible y seguroJavaScript, PHP -- Flexible pero propenso a errores

Pregunta clave: "1" + 1 igual a que?

  • JavaScript (debil): "11" -- Te lo convirtio silenciosamente
  • Python (fuerte): TypeError -- Te hace pensar

Profundiza en sistemas de tipos -> Introduccion al Sistema de Tipos | Introduccion a Compilacion


4. Compilado vs Interpretado

CompiladoInterpretadoJIT
ProcesoTraducir todo primero, luego ejecutarLeer y ejecutar linea por lineaInterpretar primero, compilar lo caliente
VelocidadMas rapidoMas lentoMedio
DepuracionEsperar compilacionRetroalimentacion inmediataInmediata + optimizacion
RepresentantesC, Rust, GoPython, RubyJava, JavaScript

5. Como elegir un lenguaje de programacion?

Seleccion por escenario

EscenarioLenguaje recomendadoRazon
Frontend WebJavaScript, TypeScriptEl navegador solo entiende JS
Backend WebGo, Java, Python, Node.jsEcosistema maduro
Desarrollo movilSwift (iOS), Kotlin (Android)Recomendacion oficial
IA / DatosPythonPyTorch, Pandas estan en Python
Programacion de sistemasC, RustControl directo del hardware
Cloud nativeGo, RustDocker/K8s estan escritos en Go

Ruta de aprendizaje recomendada

  1. Python -- Sintaxis mas simple, puerta de entrada en la era de la IA
  2. JavaScript -- Esencial para desarrollo Web, frontend y backend
  3. TypeScript -- Agregar sistema de tipos a JS, experimentar tipado estatico
  4. Go o Rust -- Entender lenguajes compilados y conceptos de bajo nivel

6. Resumen

Puntos clave

  1. Evolucion de lenguajes: del lenguaje maquina al de alto nivel, cada vez mas cercano al pensamiento humano
  2. Paradigmas: imperativo, orientado a objetos, funcional, declarativo -- cada uno con sus escenarios
  3. Sistema de tipos: estatico/dinamico, fuerte/debil -- afecta seguridad y flexibilidad
  4. Modo de ejecucion: compilado rapido, interpretado flexible, JIT equilibra ambos
  5. No hay bala de plata: elegir segun el escenario, no buscar "el mejor lenguaje"

Proximos pasos: