🧭 Estado del programa. Las 176 clases en 12 partes están construidas. Las clases de código (Partes 3–11) traen sus 10 implementaciones del núcleo con el código a la vista y verificadas en CI contra su
casos.json; las de método (Partes 0–2) son las clases conceptuales de pensamiento, familias de lenguajes y toolchains.Qué verifica una máquina y qué no, para que sepas de qué te fías: el verificador de equivalencia ejecuta en CI las implementaciones de cada clase de código contra su
casos.jsony comprueba que todas producen la misma salida. El texto de las clases y el Atlas son material de lectura escrito a mano, apoyado en los libros de referencia: no se ejecutan en CI. Si el badge de CI está verde, garantiza que las implementaciones equivalentes lo son de verdad.
Un currículo modular y secuencial que enseña los conocimientos transferibles de la programación: no diez cursos aislados, sino cada concepto (una variable, un bucle, una función, un tipo) mostrado una vez y luego comparado entre lenguajes. La pregunta que responde cada clase no es "¿cómo se escribe en X?", sino "¿qué permanece y qué cambia —y por qué— al pasar de un lenguaje a otro?".
Cada clase es una carpeta con un README.md completo que incluye:
casos.json) · 🧪 reto de transferencia · ⚠️ errores comunes · ❓ FAQ.El contenido no sale de una plantilla: cada parte sigue la literatura de referencia de su tema. Estos son los libros que sostienen el programa (las referencias apuntan a las obras; no se reproduce su contenido, la redacción es original).
| Área | Libros de referencia |
|---|---|
| Pensamiento y algoritmos | Polya — How to Solve It · Abelson/Sussman — SICP · Cormen et al. — Introduction to Algorithms · Hunt/Thomas — The Pragmatic Programmer |
| Lenguajes y paradigmas | Sebesta — Concepts of Programming Languages · Scott — Programming Language Pragmatics · Van Roy/Haridi — Concepts, Techniques, and Models… · Tate — Seven Languages in Seven Weeks |
| Tipos y semántica | Pierce — Types and Programming Languages · Dahl/Dijkstra/Hoare — Structured Programming |
| Datos y estructuras | Cormen et al. — Introduction to Algorithms · Sedgewick/Wayne — Algorithms |
| Runtime y compilación | Nystrom — Crafting Interpreters · Aho et al. — Compilers («Dragon Book») · Bryant/O'Hallaron — Computer Systems: A Programmer's Perspective |
| Ingeniería de software | McConnell — Code Complete · Martin — Clean Code · Fowler — Refactoring · Gamma et al. — Design Patterns (GoF) · Beck — TDD by Example |
| Interoperabilidad y sistemas | Kleppmann — Designing Data-Intensive Applications · Newman — Building Microservices · Tanenbaum — Distributed Systems · Nygard — Release It! |
| Toolchains y entorno | Shotts — The Linux Command Line · Kernighan/Pike — The Unix Programming Environment |
| Por lenguaje (núcleo) | Ramalho — Fluent Python · Bloch — Effective Java · Donovan/Kernighan — The Go Programming Language · Klabnik/Nichols — The Rust Programming Language · Kernighan/Ritchie — K&R · Haverbeke — Eloquent JavaScript · Cherny — Programming TypeScript · Skeet — C# in Depth · Date — SQL and Relational Theory · Lockhart — Modern PHP |
Cada clase cita, en su sección de 🔗 Referencias, los libros de su parte y el libro del lenguaje.
| Capa | Qué es | Lenguajes |
|---|---|---|
| Núcleo | Se implementa, se muestra a la vista y se verifica en CI | Python, JavaScript, TypeScript, Java, C#, Go, Rust, C, SQL, PHP |
| Atlas | Se comprende por características (historia, paradigma, toolchain, primos) | ~40 familias: Ruby, Kotlin, Haskell, Elixir, Lisp, Prolog, Bash, Zig, Lua… |
La idea: aprende el representante, reconoce la familia entera. Si dominas C, ya lees el 80 % de la sintaxis de Java, C#, JS, Go y PHP. El Atlas cubre esa amplitud sin multiplicar el mantenimiento.
| # | Parte | Clases | Rango |
|---|---|---|---|
| 0 | Pensamiento computacional y el método políglota | 14 | 001–014 |
| 1 | Atlas y genealogía de los lenguajes | 14 | 015–028 |
| 2 | Herramientas, toolchains y anatomía de comandos | 12 | 029–040 |
| 3 | Valores, tipos y variables | 16 | 041–056 |
| 4 | Control del programa | 16 | 057–072 |
| 5 | Funciones y modularidad | 16 | 073–088 |
| 6 | Datos y estructuras | 18 | 089–106 |
| 7 | Paradigmas | 16 | 107–122 |
| 8 | Cómo funcionan los lenguajes | 16 | 123–138 |
| 9 | Ingeniería de software políglota | 16 | 139–154 |
| 10 | Interoperabilidad y fronteras entre lenguajes | 10 | 155–164 |
| 11 | Proyecto integrador políglota | 12 | 165–176 |
➡️ Ver el índice completo de las 176 clases
¿Prefieres el curso entero en un solo sitio, para leer de corrido o estudiar sin conexión? El manual consolida las 176 clases en orden, con portada e índice enlazado, y con el código de los 10 lenguajes a la vista, que es lo que hace que valga la pena en papel: se comparan sin saltar entre archivos.
Se genera con
python scripts/generar_manual.pya partir de las clases, así que siempre refleja el contenido actual del repositorio. Para guías sueltas por clase:python scripts/generar_material.py --parte 3deja los PDF enmaterial/(no se versionan).
Cada muestra de código del núcleo enlaza, justo debajo, a las versiones del mismo programa en los lenguajes primos de su familia. Si lees el bloque de Python, ves de inmediato cómo lo escribirían Ruby, Perl, Lua, Tcl o R:
🧬 El mismo programa en la familia Scripting dinámico: Ruby · Perl · Lua · Tcl · R
Son 2722 programas repartidos en las 7 familias del Atlas, y lo que da valor a cada página no es el código sino el párrafo «Qué reconocer» que la cierra: que 0 es verdadero en Lua y Clojure, que Lua hace herencia por __index —el mismo modelo de prototipos de JavaScript—, o que el name mangling de C++ no está estandarizado entre compiladores.
Ruby, Perl y Lua se ejecutan en CI contra el mismo casos.json que el núcleo (workflow Labs); los otros 17 primos son material de lectura y así se declara en cada página.
El diferenciador de este programa: cada clase de código define un casos.json (entradas y salidas comunes), y el verificador ejecuta todas las implementaciones alimentándolas por stdin para comprobar que coinciden. No es teoría: es equivalencia demostrada por máquina, en paralelo por lenguaje en CI.
python scripts/verificar_equivalencia.py 041 # una clase
python scripts/verificar_equivalencia.py --all # todas las clases
python scripts/verificar_equivalencia.py --all --lang go # solo un lenguaje
Los lenguajes cuyo toolchain no esté instalado se omiten e informan (degradación silenciosa); SQL, al ser declarativo, se marca como ilustrativo.
🌐 Todo navegable en el sitio del curso (GitHub Pages).
classes/
_manifest.json # fuente de verdad (176 clases)
README.md # índice completo
parte-N-.../
README.md # README de la parte (con sus libros de referencia)
NNN-.../
README.md # la clase, con el código a la vista
concepto.md comparacion.md reto.md casos.json
implementaciones/<lenguaje>/...
atlas/ rutas/ autoevaluaciones/ glosario/ labs/
scripts/ docs/ .github/workflows/
problema → concepto → pseudocódigo → implementaciones → comparación → transferencia
pnpm en todo componente JavaScript/TypeScript que requiera paquetes.Lee la guía de contribución y la política de seguridad. El repositorio escanea secretos con gitleaks y el tooling con bandit en cada push.
MIT. Consulta LICENSE.