[!IMPORTANT] Este repositorio no reemplaza los cursos de cada lenguaje. Es el mapa de lo que permanece al cambiar de lenguaje.
Fluent Python,Effective Java,The Rust Programming Languagey compañía aparecen como referencias de profundización en cada clase, sin copiar ni falsear su contenido: la redacción aquí es original. Cada obra citada está en el registro de fuentes con su ISBN-13 o su DOI, para que cualquiera pueda ir a comprobarla.
| Superficie | Estado |
|---|---|
| Currículo | ✅ 176/176 clases construidas — 136 de código (Partes 3–11) y 40 de método (Partes 0–2) |
| Implementaciones | ✅ 1360 del núcleo (136 clases × 10 lenguajes), con el código a la vista en la clase |
| Equivalencia | ✅ verificada en CI: cada implementación se ejecuta contra el casos.json de su clase |
| Primos del Atlas | 🟡 2722 programas en 20 lenguajes; Ruby, Perl y Lua se ejecutan en CI, los otros 17 son lectura declarada |
| Lenguajes vivos | 🟡 1632 programas en las 136 clases de código (12 lenguajes antiguos × 136); COBOL, Fortran, Ada, Pascal, Lisp, Tcl, Perl y C++ se compilan y ejecutan en CI contra el mismo casos.json, RPG/JCL/VBA/AutoLISP declaran su adaptación del contrato y PL/I, MUMPS, Smalltalk y ensamblador van sin sello de máquina |
| Fichas de lenguaje | 🟡 60 fichas en el Atlas: historia, dónde vive hoy, lo que enseña, lo modernizado, cómo se ejecuta, el programa de la clase 041 explicado y bibliografía — material de lectura, no se ejecuta |
| Atlas de familias | ⚪ 39 cápsulas en 15 familias — material de lectura fechado (rev. 2026-07); no se ejecuta |
| Manual | ✅ 1150 páginas en PDF generadas desde las mismas clases (4094 con los vivos y los primos), más 238 del volumen del Atlas con las 60 fichas |
| Glosario | ✅ 424 términos derivados de las clases y enlazados a su clase de origen |
| Autoevaluaciones | ✅ 90 preguntas, batería por cada una de las 12 partes |
| Sitio | ✅ portal estático en GitHub Pages con índice, búsqueda y rutas |
| Apps | ✅ APK de Android y ejecutable de Windows, con el contenido contado dentro del binario en CI |
| Fuentes | ✅ toda obra citada tiene ISBN-13 o DOI en sources/bibliography.json, y cada cita declara para qué usa la clase esa obra |
| CI | ✅ estructura y manifest, markdownlint, fuentes y bibliografía, equivalencia por lenguaje, secretos (gitleaks) y SAST (bandit) |
| SQL | ⚪ declarativo: se marca como ilustrativo en el verificador, no se fuerza a imitar un lenguaje imperativo |
casos.json, mismas salidas, en CI.flowchart LR
A["🧠 00 Pensamiento<br/>computacional"] --> B["🌳 01 Atlas y<br/>genealogía"]
A --> C["🛠️ 02 Toolchains<br/>y comandos"]
B --> D["🔤 03 Valores, tipos<br/>y variables"]
C --> D
D --> E["🔀 04 Control del<br/>programa"]
E --> F["🧩 05 Funciones y<br/>modularidad"]
F --> G["🗃️ 06 Datos y<br/>estructuras"]
G --> H["🎭 07 Paradigmas"]
G --> I["⚙️ 08 Cómo funcionan<br/>los lenguajes"]
H --> J["🏗️ 09 Ingeniería de<br/>software políglota"]
I --> J
I --> K["🔌 10 Interoperabilidad<br/>y fronteras"]
J --> K
K --> L["🎓 11 Proyecto<br/>integrador"]
Cada parte tiene su propio README docente, y no un índice de enlaces: de qué trata, qué necesitas traer, qué sabrás hacer al terminar, qué se aprende en cada una de sus clases agrupadas por bloques, los malentendidos que corrige y los libros que la sostienen. La numeración es global y secuencial por diseño: lo que enseña cada parte es el prerrequisito real de la siguiente.
Cómo se compara un lenguaje con otro, de dónde vienen todos y con qué se ejecutan. Salida: leer código de un lenguaje que no conoces.
| # | Parte | Clases | Rango | Tipo | Horas |
|---|---|---|---|---|---|
| 0 | 🧠 Pensamiento computacional y el método políglota | 14 | 001–014 | método | ~21 |
| 1 | 🌳 Atlas y genealogía de los lenguajes | 14 | 015–028 | método | ~21 |
| 2 | 🛠️ Herramientas, toolchains y anatomía de comandos | 12 | 029–040 | método | ~18 |
Los tres ladrillos que todo lenguaje tiene: qué es un valor, cómo se decide y cómo se nombra un bloque de trabajo. Salida: escribir el mismo programa correcto en diez lenguajes.
| # | Parte | Clases | Rango | Tipo | Horas |
|---|---|---|---|---|---|
| 3 | 🔤 Valores, tipos y variables | 16 | 041–056 | código | ~40 |
| 4 | 🔀 Control del programa | 16 | 057–072 | código | ~40 |
| 5 | 🧩 Funciones y modularidad | 16 | 073–088 | código | ~40 |
De guardar un dato a elegir un estilo de resolver: OO, funcional, declarativo, concurrente. Salida: reconocer el paradigma detrás de una API y su coste.
| # | Parte | Clases | Rango | Tipo | Horas |
|---|---|---|---|---|---|
| 6 | 🗃️ Datos y estructuras | 18 | 089–106 | código | ~45 |
| 7 | 🎭 Paradigmas | 16 | 107–122 | código | ~40 |
Qué ocurre bajo el código (memoria, GC, propiedad, compilación) y cómo se construye software que otros mantienen. Salida: explicar el porqué, no solo el cómo.
| # | Parte | Clases | Rango | Tipo | Horas |
|---|---|---|---|---|---|
| 8 | ⚙️ Cómo funcionan los lenguajes | 16 | 123–138 | código | ~40 |
| 9 | 🏗️ Ingeniería de software políglota | 16 | 139–154 | código | ~40 |
Dónde se tocan dos lenguajes distintos y el trabajo que junta las once partes anteriores. Salida: montar un sistema real con más de un lenguaje y defenderlo.
| # | Parte | Clases | Rango | Tipo | Horas |
|---|---|---|---|---|---|
| 10 | 🔌 Interoperabilidad y fronteras entre lenguajes | 10 | 155–164 | código | ~25 |
| 11 | 🎓 Proyecto integrador políglota | 12 | 165–176 | proyecto | ~36 |
➡️ Ver el índice completo de las 176 clases · 📅 Cronograma de ~406 h / ~41 semanas
git clone https://github.com/vladimiracunadev-create/polyglot-programming-labs.git
cd polyglot-programming-labs
python scripts/validar_estructura.py # el repo cuadra con el manifest
python scripts/verificar_equivalencia.py 041 # una clase, en todos los lenguajes instalados
python scripts/verificar_equivalencia.py --all --lang go # solo un lenguaje, todas las clases
No hace falta instalar nada más para leer: cada clase muestra el código de los diez
lenguajes a la vista, en su README.md.
Sitio local:
python scripts/generar_sitio.py && python -m http.server 8080
Abre http://localhost:8080/site/.
El diferenciador del 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_primos.py --all --lang ruby # los primos del Atlas que sí se ejecutan
Los lenguajes cuyo toolchain no esté instalado se omiten e informan (degradación silenciosa, nunca un falso verde); SQL, al ser declarativo, se marca como ilustrativo.
El mismo contenido, generado siempre desde las mismas clases. Todo en el último release.
| Formato | Qué es | Dónde |
|---|---|---|
| 🌐 Web | El portal con búsqueda, rutas y progreso local. Siempre al día. | Sitio del curso |
| 📱 Android | Las 344 páginas embebidas, sin conexión ni cuenta. | .apk · cómo está hecha |
| 💻 Windows | Ejecutable único: sirve el curso en 127.0.0.1 y lo abre en tu navegador. |
.exe · cómo está hecha |
| 📕 PDF del curso | Para imprimir o leer de corrido, con el código de los diez lenguajes a la vista. | Manual (1150 pág.) · Completo, con vivos y primos (4094 pág.) |
| 🗺️ PDF del Atlas | Las 60 fichas de lenguaje en un volumen aparte, con sus dos índices. | Atlas (238 pág.) |
🔍 Las apps se verifican por dentro. Un APK sin curso compila igual y un
.exesin datos arranca igual: todas las señales de build quedan verdes. Por esoandroid.ymldescomprime el APK ydesktop.ymllee el índice del ejecutable, y cuentan las 176 páginas de clase y los 136 anexos antes de publicar nada.
Regenerar cualquiera de ellos desde el repositorio:
python scripts/generar_sitio.py # el portal HTML (site/), base de las apps
python scripts/generar_manual.py # manual/MANUAL.pdf
python scripts/generar_manual.py --atlas # manual/ATLAS.pdf, las 60 fichas
python scripts/generar_manual.py --con-vivos --con-primos --salida manual/MANUAL-COMPLETO.pdf
python scripts/generar_material.py --parte 3 # guías sueltas por clase en material/
classes/parte-N-slug/NNN-topic/
├── README.md ← la clase completa, con el código de los 10 lenguajes a la vista
├── concepto.md
├── comparacion.md ← sintáctica · semántica · paradigmática
├── reto.md ← reto de transferencia
├── primos.md ← el mismo programa en los lenguajes primos de cada familia
├── vivos.md ← el mismo programa en los 12 lenguajes que siguen en producción
├── casos.json ← la prueba común que ejecuta el verificador
└── implementaciones/<lenguaje>/...
Dentro del README.md de cada clase: 🎯 objetivo y resultados verificables · 🗺️ temas con
su porqué · 📖 definiciones · 🧮 modelo (entradas/salidas/reglas) · 📐 pseudocódigo neutral ·
🌐 las 10 implementaciones · 🔬 comparación · 🧬 el concepto en la familia · ✅ prueba común ·
🧪 reto · ⚠️ errores comunes · ❓ FAQ · 🔗 referencias a los libros del área y del lenguaje.
El contenido no sale de una plantilla: cada parte sigue la literatura de referencia de su tema. No se reproduce el contenido de ninguna obra: la redacción es original, cada clase cita el libro que corresponde y declara para qué lo usa —no basta con nombrarlo—.
Aquí están todas las obras, una por una, con su edición y su localizador, para que
cualquiera pueda ir a comprobarlas. El registro completo, con la lista de clases que citan
cada obra, está en sources/bibliography.json.
| Lenguaje | Obra rectora | Edición | Año | Editorial | Localizador |
|---|---|---|---|---|---|
| Python | Ramalho — Fluent Python | 2ª ed. | 2021 | O'Reilly Media | ISBN 9781492056355 |
| JavaScript | Haverbeke — Eloquent JavaScript | 3ª ed. | 2018 | No Starch Press | ISBN 9781593279509edición libre |
| TypeScript | Cherny — Programming TypeScript | — | 2019 | O'Reilly Media | ISBN 9781492037651 |
| Java | Bloch — Effective Java | 3ª ed. | 2017 | Addison-Wesley Professional | ISBN 9780134685991 |
| C# | Skeet — C# in Depth | 4ª ed. | 2019 | Manning Publications | ISBN 9781617294532 |
| Go | Donovan y Kernighan — The Go Programming Language | — | 2016 | Addison-Wesley | ISBN 9780134190440 |
| Rust | Klabnik y Nichols — The Rust Programming Language | 2ª ed. | 2023 | No Starch Press | ISBN 9781718503106edición libre |
| C | Kernighan y Ritchie — The C Programming Language | 2ª ed. | 1988 | Prentice Hall | ISBN 9780131103627 |
| SQL | Date — SQL and Relational Theory | 3ª ed. | 2015 | O'Reilly Media | ISBN 9781491941171 |
| PHP | Lockhart — Modern PHP | — | 2015 | O'Reilly Media | ISBN 9781491905012 |
| Obra | Edición | Año | Editorial | Localizador | Partes |
|---|---|---|---|---|---|
| Sedgewick y Wayne — Algorithms | 4ª ed. | 2011 | Addison-Wesley | ISBN 9780321573513 |
6 |
| Newman — Building Microservices | 2ª ed. | 2020 | O'Reilly Media | ISBN 9781492034025 |
10, 11 |
| Martin — Clean Code | — | 2008 | Prentice Hall | ISBN 9780132350884 |
0, 5 |
| McConnell — Code Complete | 2ª ed. | 2004 | Microsoft Press | ISBN 9780735619678 |
0, 5, 9 |
| Aho et al. — Compilers: Principles, Techniques, and Tools | 2ª ed. | 2006 | Pearson/Addison-Wesley | ISBN 9780321486813 |
8 |
| Bryant y O'Hallaron — Computer Systems: A Programmer's Perspective | 3ª ed. | 2015 | Pearson | ISBN 9780134092669 |
8 |
| Sebesta — Concepts of Programming Languages | 12ª ed. | 2018 | Pearson | ISBN 9780134997186 |
0, 1, 3, 4, 7 |
| Sebesta — Concepts of Programming Languages | 11ª ed. | 2015 | Pearson Education | ISBN 9780133943023 |
5 |
| Van Roy y Haridi — Concepts, Techniques, and Models of Computer Programming | — | 2004 | MIT Press | ISBN 9780262220699 |
0, 1, 7 |
| Nystrom — Crafting Interpreters | — | 2021 | Genever Benning | ISBN 9780990582939edición libre |
8 |
| Gamma et al. — Design Patterns | — | 1995 | Addison-Wesley Professional | ISBN 9780201633610 |
7, 9 |
| Kleppmann — Designing Data-Intensive Applications | — | 2017 | O'Reilly Media | ISBN 9781449373320 |
10 |
| Tanenbaum y Steen — Distributed Systems | 3ª ed. | 2017 | Maarten van Steen (edición de autor) | ISBN 9781543057386 |
10 |
| Polya — How to Solve It | — | 2004 | Princeton University Press | ISBN 9780691119663 |
0 |
| Cormen et al. — Introduction to Algorithms | 4ª ed. | 2022 | MIT Press | ISBN 9780262046305 |
0, 6 |
| Liskov y Guttag — Program Development in Java: Abstraction, Specification, and Object-Oriented Design | — | 2000 | Addison-Wesley Professional | ISBN 9780201657685 |
7 |
| Scott — Programming Language Pragmatics | 4ª ed. | 2015 | Morgan Kaufmann | ISBN 9780124104099 |
1, 3 |
| Fowler — Refactoring | 2ª ed. | 2018 | Addison-Wesley | ISBN 9780134757599 |
9 |
| Nygard — Release It! | 2ª ed. | 2018 | Pragmatic Bookshelf | ISBN 9781680502398 |
10, 11 |
| Tate — Seven Languages in Seven Weeks | — | 2010 | Pragmatic Bookshelf | ISBN 9781934356593 |
1 |
| Abelson et al. — Structure and Interpretation of Computer Programs | 2ª ed. | 1996 | MIT Press | ISBN 9780262510875edición libre |
0, 1, 5, 7 |
| Dahl et al. — Structured Programming | — | 1972 | Academic Press | ISBN 9780122005503 |
4, 7 |
| Beck — Test-Driven Development: By Example | — | 2002 | Addison-Wesley | ISBN 9780321146533 |
9 |
| Shotts — The Linux Command Line | 2ª ed. | 2019 | No Starch Press | ISBN 9781593279523edición libre |
2 |
| Hunt y Thomas — The Pragmatic Programmer | 2ª ed. | 2019 | Addison-Wesley | ISBN 9780135957059 |
0, 2, 5, 9, 11 |
| Kernighan y Pike — The Unix Programming Environment | — | 1984 | Prentice-Hall | ISBN 9780139376818 |
2 |
| Pierce — Types and Programming Languages | — | 2002 | MIT Press | ISBN 9780262162098 |
3, 5 |
| Artículo | Edición | Año | Publicado en | Localizador | Partes |
|---|---|---|---|---|---|
| Hoare — Communicating Sequential Processes | — | 1978 | Communications of the ACM 21(8) | DOI 10.1145/359576.359585 |
7 |
| Dijkstra — Go To Statement Considered Harmful | — | 1968 | Communications of the ACM 11(3) | DOI 10.1145/362929.362947 |
7 |
| Parnas — On the Criteria To Be Used in Decomposing Systems into Modules | — | 1972 | Communications of the ACM 15(12) | DOI 10.1145/361598.361623 |
5, 7 |
| Ungar y Smith — Self: The Power of Simplicity | — | 1987 | OOPSLA '87 (ACM) | DOI 10.1145/38765.38828 |
7 |
Estas tablas no se teclean: las escribe
scripts/verificar_fuentes.pyleyendo el registro y las 176 clases. En cada cambio, el CI comprueba que las 41 obras citadas están todas en el registro y que ninguna entrada sobra, y que cada una de las 1922 citas dice para qué sirve.
| Capa | Qué es | Alcance |
|---|---|---|
| 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, memoria, toolchain) | 39 cápsulas en 15 familias + 60 fichas de lenguaje, una por cada lenguaje del repositorio |
| Lenguajes vivos | Lenguajes antiguos que siguen en producción, con ficha propia y el programa de cada clase | 18 fichas y 1632 programas: COBOL, Fortran, Ada, RPG, PL/I, MUMPS, Smalltalk, Lisp, AutoLISP, Tcl, Perl, Delphi, VBA, Pascal, JCL, Assembler, C, C++ |
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.
🗂️ Cada lenguaje del repositorio tiene ficha propia. Las 60 fichas —los 10 del núcleo incluidos— siguen la misma anatomía: historia, dónde vive hoy, lo que enseña y no enseña ningún otro, lo que se ha modernizado, cómo se ejecuta con órdenes reales, el programa de la clase 041 explicado línea a línea y bibliografía.
No es nostalgia: es profundidad. Cada uno de esos dieciocho se incluye por dos motivos
verificables — que se ejecuta hoy en producción (banca, sanidad, aviónica, diseño de chips,
ERP, CAD, hojas de cálculo) y que deja a la vista un concepto que el núcleo esconde: la
aritmética decimal exacta en COBOL, el tipo que lleva una regla de negocio en
Ada, la base de datos que es el lenguaje en MUMPS, el if que
resulta ser un mensaje en Smalltalk, el código que es un dato en
Lisp, el bucle principal que escribe el runtime en RPG.
Y muchos se han actualizado para resolver problemas actuales: COBOL genera JSON con sentencias
del lenguaje, Fortran descarga bucles a la GPU, RPG consume APIs REST, Ada 2022 comprueba contratos,
Perl 5.40 tiene try/catch, Delphi compila para iOS y Android. Cada ficha lo detalla en su sección
🔄 Lo que se ha modernizado.
Donde un lenguaje no puede expresar el problema de una clase —JCL no calcula, VBA vive dentro de Excel, AutoLISP dentro de AutoCAD— el contrato se adapta y la adaptación se declara, en lugar de inventar un programa falso.
👉 Índice de lenguajes que siguen vivos
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 en 20 lenguajes, 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. Verificar tres de veinte no es verificarlos todos.
🌐 Todo navegable en el sitio del curso (GitHub Pages), y el mismo portal completo dentro de la app de Android y del ejecutable de escritorio, sin conexión.
classes/
_manifest.json # fuente de verdad (176 clases)
README.md # índice completo
parte-N-.../
README.md # README docente de la parte (generado desde scripts/guias.py)
NNN-.../ # la clase (ver «Contrato de una clase»)
atlas/ rutas/ autoevaluaciones/ glosario/ labs/ # portal
apps/android/ apps/desktop/ # el curso empaquetado
manual/ material/ docs/ site/ # PDF, guías y portal HTML
scripts/ .github/workflows/
Todo deriva de classes/_manifest.json, producido por
scripts/build.py a partir de scripts/curriculo.py
y scripts/guias.py. Re-ejecutar python scripts/build.py actualiza
índice y README de parte sin tocar las clases, que se escriben a mano. Qué se edita y qué
se genera está en la guía de contribución.
problema → concepto → pseudocódigo → implementaciones → comparación → transferencia
| Programa | Rol |
|---|---|
| Problem-Driven Systems Lab | Los mismos lenguajes, ya en producción: 12 problemas reales resueltos en 7 stacks |
| Computational Mathematics Program | La matemática y los algoritmos que las clases de datos y complejidad asumen |
| Python Data Science Program | Profundizar en uno de los diez: Python aplicado a datos, ML y MLOps |
| AI Evolution Program | La evolución de la IA, con el mismo criterio de material verificable |
| ### ✅ Lo que sí es - 🧬 un **currículo comparado completo**: 176 clases donde cada concepto se enseña una vez y se contrasta entre diez lenguajes; - 🧪 material **ejecutable y verificable**: 1360 implementaciones que CI corre contra un `casos.json` común hasta que coinciden; - 📖 contenido **abierto y gratuito en español**, legible en GitHub, en el sitio del curso o en un manual de ~1306 páginas; - 🌐 una capa de **amplitud honesta**: el Atlas explica ~40 lenguajes por sus características, sin fingir que se implementan; - 🔍 material **honesto sobre sus límites**: cada página declara si lo que lees se ejecuta o se lee. | ### ❌ Lo que no es - 🚫 una certificación: completar clases no acredita experiencia profesional en ninguno de los diez lenguajes; - 🚫 diez cursos en uno: no sustituye a un curso a fondo de Rust o de SQL — enseña lo que se transfiere entre ellos; - 🚫 un curso de frameworks: no hay React, Spring ni Django; el objeto de estudio es el lenguaje, no su ecosistema; - 🚫 verificación total: 17 de los 20 primos del Atlas son lectura, y el texto de las clases lo escribe una persona, no CI; - 🚫 la afirmación de que "todos los lenguajes son iguales": el programa existe justamente para explicar en qué no lo son. |
El valor de este programa no está en acumular lenguajes, sino en separar lo que se transfiere de lo que es accidente de sintaxis: cada clase produce el mismo resultado en diez lenguajes, demuestra por máquina que son equivalentes, y luego explica en qué se diferencian de verdad. Aprender el undécimo lenguaje deja de ser empezar de cero.
pnpm en todo componente JavaScript/TypeScript que requiera paquetes.python scripts/validar_estructura.py
python scripts/build.py --stats
python scripts/verificar_equivalencia.py --all
npx --yes markdownlint-cli2 "**/*.md"
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.
Código y documentación original bajo MIT. Los libros, lenguajes, toolchains y servicios externos citados conservan sus propias licencias y términos.