Algol, Simula y Prolog con Hanna Oktaba
4 Mar 2025 · 68 min
En este episodio del programa Codeadores, el anfitrión Manuel Rubio entrevista a Hanna Oktaba, pionera de la informática nacida en Polonia en 1951 y ahora docente en México. Hanna narra sus primeros contactos con la computación en la Universidad de Varsovia, donde programó en Algol 60 en la computadora danesa GIER y, tras traducir un informe ruso, descubrió Simula 67, el primer lenguaje con clases, objetos, herencia y corutinas. Junto a una colega, tradujo y enseñó Simula, escribió un libro y realizó su doctorado sobre punteros. En los años 70 diseñó y compiló su propio lenguaje, Loglan, incorporando conceptos de concurrencia y mapeo de memoria para la computadora polaca Mera. Hanna relata la histórica reunión de 1968 organizada por la OTAN/DoD que marcó la transición de la informática como ciencia a la ingeniería de software, y menciona la evolución de los procesos de desarrollo (requisitos, diseño, pruebas). Discute la convergencia de paradigmas: procedural, orientado a objetos, funcional y lógico, y su visión de que la programación lógica se integrará en el futuro. Sobre la IA generativa, afirma que la programación no desaparecerá; los programadores seguirán verificando código generado por herramientas como Copilot. En la enseñanza, reflexiona sobre la dificultad de elegir el primer lenguaje (Algol, BASIC, Pascal, Java, Python, Scheme, Julia) y cómo los cambios tecnológicos obligan a actualizar los planes de estudio. Finalmente, explica su migración a México tras el estado de sitio en Polonia, su incorporación a la UNAM y su influencia en la difusión de Simula y conceptos de concurrencia en América Latina. Concluye animando a los jóvenes a conocer la historia de los lenguajes, pues muchos conceptos actuales tienen raíces en esas primeras investigaciones.
Chapters
Pues bienvenidos otra tarde más a otro programa de Codeadores. Hoy tengo el honor de tener conmigo a una persona que conozco, bueno, conocía principalmente a través de Twitter. Habíamos intercambiado algunos mensajes, pero ahora he tenido el honor y el placer de conocerla un poco así online. He estado hablando con ella un poco. Es Jana Octava, trabaja principalmente en el terreno de la docencia. Y la parte que más me ha sorprendido es que comparte orígenes con Marie Curie, por lo que yo creo que es, vamos, una gran, una gran coincidencia. Ambas nacisteis en Polonia, tuvisteis que emigrar a diferentes sitios, habéis crecido en la ciencia, ella en la parte de la química y tú en la parte de informática. Y bueno, yo empiezo siempre con la misma pregunta de cómo os introdujisteis en el mundo de la informática, cuáles fueron vuestros principios, pero también iniciar un poco para decir algo sobre ti que yo no haya dicho, porque he dicho muy poco. Así que te dejo que te presentes y nos cuentes un poco cómo iniciaste en el mundo de la informática.
Muchas gracias, Manuel, por esta invitación. Estoy muy orgullosa que una abuelita polaco-mexicana del área de ingeniería de software en sus últimos, bueno, años, en las últimas décadas, está invitada a un programa, bueno, una entrevista contigo donde sé que principalmente trabajas y platicas con gente que sí hace sistemas de software, programadores de carne y hueso. Entonces, te lo agradezco mucho. Bueno, nací efectivamente en 1951 en Varsovia, Polonia, al igual que Marie Curie, Y por qué, qué me llevó a estudiar, a fin de cuentas, computación, informática, como se llamaba en esa, bueno, y en Europa, en varios países se acostumbra a la palabra informática más que la computación. Pero cuando yo estuve escogiendo en el año 69 qué estudiar, y en la escuela no tenía grandes problemas, y lo que más me— con las matemáticas y con física, y fueron las áreas que más me han gustado, pero En la Universidad de Varsovia, donde pretendía estudiar, existía nada más la Facultad de Matemáticas y Mecánica, pero me enteré que ya tenían la primera, ya consiguieron una primera computadora. Y esta computadora fue una computadora danesa que se llamaba Gjer. Ahorita, jóvenes, ni se imaginan que en los años 50, 60, 70, prácticamente todos los países hacían esfuerzos para construir sus propias computadoras. Luego, por razones que no voy a meterme con eso, el mercado se achicó en cierto sentido con respecto a los propios productores de computadoras. Pero en ese momento, cuando escuché que sí tenían una computadora, y la verdad, en el año 69 en Polonia nadie había visto una computadora. Entonces, entre la facilidad de matemáticas y esta idea de que podría ver y eventualmente usar una computadora fue fantástico, aunque desde inicio nos dijeron que el acceso a la computadora va a ser hasta el tercer año de estudios. Entonces, los primeros 2 años fueron puras matemáticas y matemáticas. Pero efectivamente, a partir del tercer año, tuve la oportunidad de hacer mi primer programa en el lenguaje Algol 60, que esta computadora ya tenía el compilador. La computadora tenía 4K de memoria, y aunque las palabras fueron de 42 bits, pero bueno, el compilador necesitaba 8 vueltas para compilar programitas de tamaño de una cuartilla, y por supuesto, no había editores de texto, ni nada que se parezca, aunque los jóvenes no lo crean, Todos saben de tarjetas perforadas, pero la Gier tenía cintas perforadas. Entonces, uno escribía su programa en una, como en una máquina de escribir, y del lado derecho salía cinta rosa con 8 hoyitos o no hoyitos en cada línea, Y si uno se equivocaba, imagínense, si uno se equivocaba, bueno, tenías que volver a pasar la cinta automáticamente hasta el momento en el cual te equivocaste y empezar de nuevo. Bueno, fue, lo cuento porque muchos han escuchado las historias de dramáticas de editor de texto de tarjetas perforadas, pero creo que pocos han oído de las cintas con hoyitos. Pero bueno, pero tuvimos, esto fue 71, las primeras clases con programación fueron con Algol 60. Pero en el año 72 tuve la enorme suerte que uno de mis profesores fue a un congreso en la Unión Soviética en ese entonces y trajo desde ese congreso el reporte del lenguaje Símula 67 en ruso y llegó al seminario en el cual participé yo y una amiga mía y dijo, ustedes dos, por favor, aquí traigo un reporte de un lenguaje de programación nuevo. Pero bueno, 72, Simula fue 67, pero bueno, mientras traducían al ruso teníamos acceso. Ustedes traten de traducir del ruso al polaco lo que dice allá y nos explican dentro de un mes en el seminario. Esta fue una suerte que tuvimos yo y Wisia Bartol, mi amiga, pues porque tuvimos la oportunidad de conocer el primer lenguaje que no se llamaba así, pero introdujo el concepto de clases, objetos, herencias, procedimientos virtuales, concepto de files, clase de file system definido dentro del lenguaje de programación. Y concepto de corrutinas. ¿Cuál fue la, bueno? Fue dramático entender de qué se trataba porque todos esos conceptos fueron totalmente nuevos comparando con, por ejemplo, Algol 60, a pesar de que Simula 67, como muchos lenguajes de finales de los años 60, se formaban como extensiones de algo, unas con nuevos conceptos, y simular. Y bueno, una cosa más que les quiero comentar es que este lenguaje fue creado por noruegos. Ole Johann Dahl y Mírhauk fueron los autores precisamente de este lenguaje. ¿Y cuál fue la sorpresa y la diferencia y suerte que les estoy contando que tuve? Es que los lenguajes anteriores, empezando por Fortran, fueron creados en los años 50, fueron creados con el objetivo de cálculos numéricos. Allá todos los conceptos y tipos de datos, todo fue para que se— fue calculadora, ¿no? Para hacer cálculos. Luego, también en los años 50, basándose en conceptos matemáticos pero de cálculo lambda, se propuso el lenguaje Lisp, que fue el primer lenguaje que hoy en día, de los lenguajes que se llaman funcionales, pero su propósito fue procesamiento de símbolos. Aquí datos numéricos no eran, bueno, existían pero no eran tan importantes. La importancia fue procesamiento simbólico de secuencias de símbolos y por eso hoy en día, bueno, lo que se propuso como objetivo de para qué se diseña y se aplica a un lenguaje de programación fue para precisamente manejo fácil o más fácil de los símbolos y por eso luego, bueno, textos y luego dio la base para lo que hoy en día es auge de inteligencia artificial. Bueno, otra propuesta basada también en cálculos matemáticos de los años principios de los 60 fue el lenguaje hoy en día olvidado que fue Prolog, que estaba más bien diseñado para simular razonamiento lógico, razonamiento humano. Entonces, fueron diferentes propuestas de lenguajes de programación para manipular distintas cosas, o números, o símbolos, o ayudar a razonar. También puede ser sobre números o sobre símbolos, pero fue la base Bueno, conceptualmente fue poder simular razonamiento humano en la computadora. Y de repente llega Simula 67 con el concepto de clases de objetos y herencias de estas clases, posibilidad de crear estructuras arbolescentes de herencia de cosas, pero el propósito principal de estos conceptos fue poder expresar lo que pasaba en el mundo real, y el mundo real, bueno, lo que pasa en el mundo real, y el mundo real es lleno de objetos que tienen características parecidas, y entonces fue para poder modelar los propios autores del lenguaje, y por eso el nombre de Símula fue Símula, porque ellos decían que buscaban poder simular sistemas discretos en la computadora. Pero esta idea de que se podía representar el mundo real en términos de clases de objetos y objetos que además, clases que además pueden extenderse con diferentes propiedades, etcétera, etcétera, etcétera, eso fue algo, como sabemos, muy impactante y muy importante y Y prácticamente hoy en día, bueno, luego en los años 70 y 80, prácticamente todos los lenguajes que ya existían, empezando por C, por Pascal, por el lenguaje, inclusive el propio Fortran, fue dotado de clases y objetos para poder incluir en lenguajes de programación la posibilidad de este modelado de lo que está pasando en el mundo real. Entonces, bueno, así, con mi suerte de que en ese momento me parecía mala suerte, porque traducir 100 páginas de ruso a polaco, de conceptos como clase y objeto que no sabíamos ni con qué se coman, fue algo, pues, que me dio a mí mucha fuerza de tener que entender para qué y qué hacer con eso. Y bueno, con mi amiga Wisia hemos convencido por un lado y transmitido ese conocimiento a nuestros colegas a tal grado que luego nos pidieron que escribiéramos un libro sobre Símula 67 todavía en polaco y que fue publicado en el año 80. Y gracias a este trabajo y nuestros trabajos de tesis en ese momento, que hicimos yo sobre corrutinas, el concepto de corrutinas, que también fue un concepto pre concurrente, bueno, un concepto importante en el lenguaje de programación relacionado con la ejecución concurrente en lenguajes de programación. Entonces, bueno, esto nos dio no solamente temas para tesis, luego nuestro profesor que nos trajo este libro este reporte nos invitó a trabajar en el grupo de computación que se formaba en este momento en la Facultad de Matemáticas, y pues nos obligaron a hacer doctorados, a las dos hicimos doctorados, relacionados con esos conceptos. En particular, yo, mi doctorado se tituló, se titula Formalización del concepto de apuntador en los lenguajes de programación. Así fueron mis inicios en México, Manuel.
Básicamente comenzaste con Algol, después Simula, si recuerdo bien, y Simula, pero incluso Simula no la versión original sino la que llegaba desde Rusia. ¿Era exactamente igual a la que se distribuía o tenía algunos cambios?
No, no, fue traducción solamente traducción al ruso del reporte original que estaba en inglés, hecho el lenguaje hecho por noruegos, tenía el reporte escrito en inglés y los rusos que traducían todo para saber qué pasaba, lo tradujeron al ruso y mi profesor lo trajo consiguió en Rusia y lo trajo y lo hicimos como que retraducción, ¿no? Entonces, por eso lo estoy comentando, porque fue en esa época, no fue fácil desde Polonia tener acceso a las cosas, bueno, originales, que digamos, Pero en el caso de Simula, luego, después de Gier, compraron otra computadora en mi facultad y en esa computadora ya teníamos también el compilador de Simula 67. Entonces, no fue nada más teoría, sino que lo, bueno, pudimos experimentar y los investigadores y también los alumnos de que ya como joven investigadora yo ya tenía obligación de dar clases también y, por supuesto, programaban en Simulac 67 mis alumnos.
Leí hace poco que en el caso de BASIC, cuando lo crearon en la Universidad de Dartmouth, Ellos compraron la máquina, pero ellos se encargaron de programar el sistema operativo y el lenguaje. En principio iban a hacer una implementación del compilador de Fortran, pero después dijeron que mejor algo más simple para los estudiantes, porque había muchos que no eran informáticos ni científicos, y entonces querían hacerlo más simple. En el caso de las computadoras estas que dices que adquirió el departamento de matemáticas de la universidad, ¿Ya venían con el compilador o tuvisteis que implementarlo vosotros?
No, ya venía con el compilador, pero te voy a decir que precisamente por la fascinación con Símula y además un auge a finales de los años 70 de conceptos para lograr concurrencia en los lenguajes de programación, entonces estuvimos estudiando también a Dijkstra, bueno, varios para sistemas operativos precisamente en los años 70, porque bueno, regreso, la computadora GEER que estoy comentando fue una computadora, bueno, esas computadoras fueron de que solamente un solo programa se ejecutaba a la vez. Entonces, la idea, bueno, de los años 70 sobre todo fue cómo aprovechar el procesador porque mucho tiempo se ocupaba en la lectura de datos de las cintas o tarjetas y el procesador medio dormido, y luego en la impresión, bueno, impresión física de los resultados. Entonces, la idea fue de que hay que aprovechar para que el procesador, mientras se dedica a una cosa con un programa, pueda Bueno, lo que mientras no se da cuenta el usuario de que lo está, no lo están atendiendo, que se ocupe de ejecutar cosas de otro usuario. Y así la parte de la concurrencia en los lenguajes de programación, pero principalmente para sistemas operativos, Fue algo muy importante. Y entonces, mi grupo de investigación de la Universidad de Varsovia, desde finales de los 70, decidimos diseñar un lenguaje de programación nuestro que se llama Loglan. Se puede buscar, todavía creo que hay en el espacio documentos de Loglan. Loglan, su primer reporte lo publicamos Loglan 80 y fue precisamente combinación de conceptos de objetos, clases, todo lo que traía Simula y más conceptos de concurrencia que combinamos con todo lo que aprendimos de estas cosas relacionadas con dar acceso a una computadora a la vez de varios usuarios. Entonces, ese fue también nuestro intento de desarrollar, no un sistema operativo o algo así, pero sí un compilador, diseñar un compilador de este lenguaje, y además hicimos la primera implementación de este compilador para una computadora polaca Mera, que Polonia en los años 70 también producía computadoras. Una se llamaba, un grupo se llamaba Odra y otro Mera. Y nosotros tuvimos un proyecto con Mera para hacer el compilador de Loglan, y esa también fue, yo participé en el diseño de cómo mapear a la memoria, bueno, cómo crear varios objetos de la misma clase en la memoria y además cuando se trata de herencia, cómo estructurar la memoria para que estos objetos hereden y todo esto. Eso fue también un trabajo teórico, teórico pero muy práctico, cercano al uso de la memoria durante la Runtime System. Ahorita me estoy acordando. Fue cómo implementaron no solamente la parte de compilación, que es revisión sintáctica de corrección de si es correcto o no un programa, sino luego en runtime system fue cómo se interpreta este código compilado con unas estructuras tan complejas como son las estructuras de clases con herencias y procedimientos virtuales y cosas por ese estilo, que bueno, que fue realmente, creo que hasta publicamos algunos artículos en Italia, me acuerdo que fui una vez a Italia a presentar algo de esto, todavía desde Polonia.
Recuerdo también que leí no hace mucho que Es que no recuerdo si fue en los 60 o 70 que Dijkstra fue invitado a una conferencia en la OTAN donde, bueno, aparte de Dijkstra fueron muchos otros más para poner sobre la mesa el problema de la crisis del software, de que se tomaba mucho tiempo.
Oh, sí.
Yo eso lo veo como un cisma entre lo que se consideraba como la ciencia computacional y la ingeniería del software, que es casi como su nacimiento. ¿Tú notaste el cambio ese de considerar la informática como una ciencia a ahora intentar considerarlo como una ingeniería?
Mira, esta reunión fue en Alemania en el año 68, Y fue el llorar y llorar del, bueno, organizada por la OTAN, pero principalmente Departamento de Defensa de Estados Unidos, llorando que estos programadores para sus misiles y bueno, para todo lo que hay que programar, pues en esa época se tenía que programar para el Departamento de Defensa, que los de hardware cumplen más o menos con tiempo y forma y costos, pero los de software nunca, nunca. Entonces, invitaron a varios en Alemania, invitaron a varios, no solo de su lado los quejosos, pero buscaron investigadores europeos, principalmente de esos de las buenas universidades, para que les ayudaran. El reporte de esta reunión de 68 también se puede conseguir y yo lo en los últimos años lo he estudiado mucho con mis alumnos de maestría, sobre todo porque todo lo que se han quejado allá en este momento, que las cosas no salen a tiempo, que salen con errores, y que bueno, todas las quejas que administrar un proyecto de este tipo es súper complicado. Todo lo que se han quejado sigue siendo válido hasta el día de hoy. Entonces, bueno, la verdad fue una— pero efectivamente hubo, realmente fue una discusión. El reporte no es una telenovela, bueno, no es un reporte técnico o de esta reunión, sino es registro de las discusiones. Y este es lo que es muy valioso de este reporte de esta reunión en Múnich, como es en Alemania. Y bueno, lo que quería, ya se me fue la onda. Pero bueno, lo que quería decir de que efectivamente unos participantes dijeron, ok, si el problema es controlar grupos de desarrollo, entonces usemos como ejemplo y a ver si se adopta y adapta a esta área lo que hacen otras ingenierías. Y otras ingenierías, bueno, también primero hacen planos, en forma abstracta hacen cálculos y luego estiman cuánto va a costar, qué necesitan, qué productos se necesitan y para cuándo, para cuándo lo pueden hacer. Entonces dijeron, pues intenten ver qué ingenierías clásicas les pueda servir al desarrollo de software. Y gracias a esto, en los años 70 se empezaron a definirse las primeras fases de procesos de desarrollo de software, empezando por especificación de requerimientos. Antes no, no estaba tan claro. Y especificación de requerimientos, diseño, y después toda la fase de programación y pruebas, etcétera, etcétera. Entonces, Toda esa discusión precisamente de esta reunión del 68 sí dio resultados en años posteriores en el desarrollo de software, pero basado en ingeniería y Por eso el término ingeniería de software, que bueno, que yo de alguna manera, de mi amor hacia lenguajes de programación y sus paradigmas y sus conceptos, en los años 90, cuando ya surgió también la propuesta de procesos para lenguajes orientados a objetos, que fue la propuesta hecha por Jacobson, Busch y Rumbaugh, primero con UML como lenguaje de notación gráfica para poder hacer la parte de modelado, de diseño de forma abstracta antes de pasar a programación, y a la vez el proceso unificado de cuáles, qué hay que hacer para poder, no solamente del punto de vista técnico, para poder desarrollar un sistema, sino también en la parte de cómo organizar equipos de trabajo y administración de proyectos y cosas por el estilo. Entonces, bueno, esa es la parte, y como nuestro Nuestra ingeniería es una ingeniería que siempre me he reído con mis alumnos de que cuando les preguntaba, ¿y dónde está la materia prima para ingeniería de software? ¿Qué se necesita para hacer ingeniería de software? Y por supuesto la respuesta es que La materia prima está en las cabezas humanas de los que solicitan y de los que desarrollan el software. Entonces, somos una ingeniería que de lo que tenemos las personas en las cabezas, lo que podemos expresar en lenguaje natural y luego traducir al lenguaje de programación lo más fiel posible. Y además colaboran varias personas, cada cual, cada persona con su cabeza. Entonces, comunicar, sabemos de la vida real, es difícil la comunicación entre seres humanos para que se pongan de acuerdo y esa dificultad también en el desarrollo de software, por supuesto, persiste.
Los lenguajes de programación, porque desde que salió la orientación a objetos ha estado bastante fuerte y presente en muchos lenguajes y en muchas áreas, y ahora empezó hace unos años a mezclarse un poco con la programación funcional. Recuerdo que has mencionado también Prolog, que es otro tipo de programación que se parece a la funcional pero tiene sus diferencias. ¿Tú crees que llegará un momento en el que además de la orientación a objetos y funcional se mezcle todo con la programación lógica?
Sabes que programación lógica es a otro nivel, diría otro nivel de abstracción. Yo creo que sí llegará este momento porque desde los años 50 los lenguajes que he mencionado que estaban introduciendo por primera vez ciertos conceptos han, que digamos, hemos, han evolucionado en términos de juntar cada vez más conceptos que necesitamos o tipos de datos o, bueno, las propias bases de datos, la persistencia, que no fue tan importante al principio, persistencia de datos y cosas por su estilo. Todo esto de alguna manera ha evolucionado en los lenguajes de programación y en las herramientas que, bueno, que digamos se crearon en torno de, para facilitar el uso de estos lenguajes de programación, pero esos conceptos no han subido de nivel de abstracción. El Prolog, el lenguaje con razonamiento lógico, dejó de ser, que digamos, fue utilizado por, en un momento de los años 80 sobre todo, para diseñar sistemas expertos. Que sistemas expertos fue como agarrar axiomas cosas que suceden en algún contexto y son verdaderos, y empezar a razonar sobre ellas para, para dar a la gente herramienta. Precisamente ese fue, fue como que lo más fuerte en inteligencia artificial en su momento, sistemas expertos. Pero cuando surgió para también ya en años muy, creo que por ahí por cuarentas, surgió la idea de que para calcular las cosas podemos tomar ejemplo de no tanto de razonamiento humano sino cómo funcionan nuestras redes neuronales. Entonces, el concepto de redes neuronales como otra idea para que afortunadamente se puede expresar prácticamente en en cualquier lenguaje de programación que permite representar árboles y algunos tipos de datos que digamos normales, clásicos, esta idea de hacer cálculos utilizando modelo matemático de nuestra red neuronal ganó, ganó no de inmediato con ideas de razonamiento para sistemas expertos, pero para procesamiento de textos y hoy en día de imágenes, prácticamente de todo lo que podemos representar digitalmente, Pues, ganó, y ahorita, bueno, revivió de manera impresionante, también gracias al avance de los procesadores, ¿no? De disponibilidad, y la rapidez, y todo esto, ¿no? Que ya no me meto en eso, pero de alguna manera, la seguimos manejando datos numéricos, simbólicos, y bueno, imágenes y todo esto, pero para Que digamos, yo creo que para subir de nivel del uso de todo esto vamos a otra vez referirnos a cambiar el nivel de abstracción basado en algún área de matemáticas, ahorita ya no sé cuál, pero bueno, Creo que puede ser así.
Tocando un poco el tema este que ha sacado de las redes neuronales, ahora mismo hay muchos modelos de lenguaje que realmente no estoy muy puesto de si descienden directamente de las redes neuronales, pero creo que sí. Y ahora mismo están casi como O sea, ¿tienen miedo las personas que empiezan ahora en la programación? Sobre todo por testimonios como el CEO de NVIDIA, que nos decía de no os metáis en la programación porque esto es un negocio que se va a acabar. ¿Tú cómo ves este tipo de declaraciones?
No, no, no, es bueno. El negocio se va a acabar en el sentido clásico. Pero bueno, regresando, tomando a la idea que intenté transmitir, es que todo se hace con cabezas humanas en esta área. Precisamente hoy en día los programadores, bueno, pueden usar desde copiloto y a cualquier sistema de estos de inteligencia artificial, llamen como se llamen, y decirles que el código y te lo escupe. Sí, el chiste es revisar con la— no creer que esto que te escupen seguramente es correcto y tienes que verificarlo con tu cabeza porque hay ambigüedad en lo que tú expresas como requerimiento. Si tú lo haces ahorita con lenguaje natural y nos los va a pasar a los desarrolladores, o está pasando lo mismo que pasaba precisamente en los años anteriores, donde todos los desarrolladores decían que el cliente no sabe qué quiere, ¿no? Porque nos dice cosas que no entendemos y nosotros tenemos que saber qué dice. Y ahorita pasa lo mismo, que si tú explicas expresas a un, cualquiera de estas herramientas de inteligencia artificial, si tú te expresas en lenguaje natural, claro que te pueden entregar código, pero tú tienes que otra vez con tu cabeza o con cabeza de otra gente, antes de ponerlo en uso, asegurarse qué es lo que realmente quieres. Y aquí está, creo que la seguridad que vamos a necesitar el trabajo de programadores, bueno, de gente que entiende los códigos, Porque esto no se va a acabar, y más bien yo creo que puede hacer el trabajo de programación mucho más atractivo, porque ya, como pasó con editores de texto, para lenguajes de programación que ya les soplaban muchas cosas, ya no tenías que teclear cada simbolito, pero ahorita les va a soplar el código entero, pero tú tendrás la responsabilidad de asegurarte que este código realmente va a hacer lo que se necesita que haga. Entonces, intelectualmente, el trabajo puede que sea más atractivo que hoy en día. Esa es mi opinión.
Y en tema de enseñanza, porque me dijiste que te dedicabas ahora sobre todo a la parte de enseñanza, Todas las herramientas y la evolución que han ido teniendo estos lenguajes, la aparición de tantos y tantos lenguajes, ¿cómo se lleva en el terreno de la enseñanza? Porque creo que tendréis que estar como locos cada año intentando renovar y cambiar cosas, ¿no?
Sí, sobre todo en toda mi trayectoria la discusión fue cuál es el primer lenguaje de programación que deberíamos enseñar. ¿Por dónde? ¿Por cuál lenguaje empezar? Yo, como ya comenté, empecé por Algol 60, luego BASIC, justamente que mencionaste, mencionaste que entró por un momento como el lenguaje, el primer lenguaje, y luego con la aparición de— luego apareció Pascal. Niklaus Wirth hizo una cosa fantástica, diseñó precisamente basándose en Algol 60 un lenguaje, él lo hizo para que sea más fácil de entender porque hasta las palabras estaban completitas, begin, end, Procedure, como que cualquiera podía leer y entender. Y entonces, y además inventó el concepto de compilación al lenguaje intermedio de Pascal, que fue como precursor de las máquinas virtuales. Bueno, luego la máquina virtual de Java, que permitió que fue mucho más fácil hacer desde este lenguaje intermedio implementaciones sobre diferentes sistemas operativos, bueno, computadoras y todo. Entonces se propagó Pascal como lenguaje de programación para los años 80 y en gran medida los años 90, pero cuando salió Java y empezó a ganar terreno, igual porque los compiladores de Java se hacían para máquinas virtuales, bueno, para máquinas virtuales, y estas más o menos se propagaban, implementaban rápido. Entonces, Java, con toda la dificultad y complejidad para como primer lenguaje de programación, pero varias carreras, incluyendo nosotros en la UNAM, a finales de los 90 pasamos a Java como primer lenguaje de programación. Hoy en día, la verdad, yo me rindo para sugerir, porque bueno, unos dicen que Julia, otros dicen que... Bueno, Julia es el nombre de mi nieta, entonces me encanta la idea, pero bueno, la verdad, seleccionar primeros lenguajes de enseñanza, bueno, el primer lenguaje para enseñar, está bastante complejo.
De hecho, tanto BASIC como Pascal, y más recientemente creo que Go, fueron diseñados específicamente para tener una curva de aprendizaje muy, muy pequeña. O incluso Lua, que fue diseñado en una universidad de Brasil para ser un lenguaje muy fácil de aprender por cualquiera. Entonces, Python no fue una opción en la universidad.
No, Python claro que entró de moda, pero bueno, Python ya no me acuerdo en qué. También es uno de los lenguajes viejitos, viejitos, pero revivió en las últimas décadas, bueno, precisamente por la combinación de funcional, lenguaje funcional y lenguaje orientado a objeto en uno. Entonces, aquí se podría enseñar uno y enseñar otro y combinarlo, y además creo que se Bueno, desarrollaron muy buenas herramientas para programación con Python. Entonces, también hasta en mis últimas clases de ingeniería de software, mis ayudantes me obligaban a usar Python como lenguaje de programación. Pero bueno, ya fueron cursos avanzados de ingeniería de software y la verdad creo que Java seguía siendo el primer lenguaje donde se enseña a los alumnos de licenciatura los conceptos de lenguajes de programación. Luego Scheme, como para ver la parte precisamente esta de simplicidad, pero lenguaje funcional, y luego ya combinaban lo que quería cada profesor.
Yendo a la parte de investigación, porque al principio tengo entendido que Algol fue diseñado principalmente para tener un lenguaje único en los documentos, en los papers que se publicaban por parte de las universidades, pero ¿eso sigue siendo así hoy en día?
Mira, el lenguaje Algol 60 fue como respuesta a lo que hicieron en los años 50 en Estados Unidos los fabricantes de IBM y de otras primeras computadoras, precisamente con unos con Fortran, otros Lisp y COBOL también. Entonces, Algol 60 fue realmente un esfuerzo donde los creadores iniciales, sobre todo de Fortran y de Lisp, John Backus y John McCarthy, hasta me apunté esos datos, en 57 y 58 que nacieron, fueron creadores de Fortran y de Lisp. Luego, a finales de los 70s, invitaron, crearon un grupo con investigadores de algunas universidades de europeas, y entonces se juntaron y decidieron hacer un lenguaje que tuviera una formalidad, por lo menos en la definición de la sintaxis. Ese fue el gran esfuerzo, porque antes esos primeros lenguajes de programación, la sintaxis, bueno, ¿Cómo combinamos qué con qué? No quedaba formalmente definido. Y en el esfuerzo de Algol 60, Backus y Knauer hicieron una propuesta de gramática para la definición de sintaxis de lenguajes de programación, y entonces de alguna manera fue la mayor aportación, y por supuesto de unificar ciertos conceptos de que, bueno, que ya aparecían en esos lenguajes y unificarlos en esa propuesta de Algón 60, pero la parte más valiosa fue la forma gramatical de la definición de de este lenguaje de programación que luego fue utilizada para definir sintaxis y creo que debe de usarse hasta el día de hoy como forma BNF, notación BNF, para definir la sintaxis del lenguaje, de cualquier lenguaje de programación formalmente definido.
Y entonces, en la parte de investigación, en esos años sí se utilizaba cuando salió Algol, ¿no?
Pues sí, sí, más bien. Bueno, yo como académica, luego cuando estábamos definiendo Loglan, pues fue obvio que necesitamos definir la sintaxis de cómo combinar qué símbolos. Y qué palabras, en qué orden se combinan, esa parte tuvo que ser definida con esa anotación formal.
Volviendo a eso, al lenguaje este que hicisteis en la universidad, ¿tuvo mucho recorrido? ¿Se estuvo utilizando durante mucho tiempo en las computadoras de la universidad?
No, fíjate que como ya comenté, que en el 80 sacamos la primera versión de este lenguaje formalmente definida y en papel, y empezamos a desarrollar el compilador, que fue un trabajo bastante bueno, conceptual primero, y luego ya la propia programación, y lo terminamos en el año 81. Y en diciembre de 81, yo 4 de diciembre me titulé de doctora, y 13 de diciembre de 81 nuestro general Jaruzelski decidió introducir estado de sitio en Polonia. Entonces se cerró todo, aeropuertos, comunicación, nadie se podía mover. Y bueno, yo me acuerdo que los primeros días cuando podríamos llegar a nuestro lugar de trabajo Lo primero que hicimos en la universidad, lo primero que hicimos fue agarrar un disco, disco duro de esta época de los 80, tenía como 1 metro de diámetro, y agarramos este disco duro y lo llevamos a mi casa para esconderlo, porque no sabíamos qué iba a pasar. Entonces, la verdad está ahí. Y luego, bueno, yo en 83 decidimos con mi esposo y con nuestra hijita emigrar. Bueno, fue por un año, pero finalmente nos quedamos en México. Y entonces toda esta, todo este trabajo de investigación en la Universidad de Varsovia con este lenguaje de programación fue interrumpido de manera, bueno, bastante desagradable, y muchos colegas de este grupo, igual que nosotros, emigraron entonces. También se deshizo el propio grupo de investigación. Esas son las cosas que, para finalizar, estamos ahorita en una situación políticamente también muy, muy, muy fuerte, y creo que pues les recomiendo mucho que tengan precaución, que respalden sus tesis que no confíen tanto en las nubes, nubes, nubes de todo, porque realmente no sabemos ahorita qué puede pasar. Bueno, no quería terminar con este acento tan pesimista, pero lo he vivido en 81, 82. Entonces sí, sí, mucho ojo, como dicen en México.
¿Cómo te dio por decidir ir a México específicamente? ¿Tenías ya contacto con el español de antes o habías escuchado algo sobre México?
No, bueno, bueno, la historia es que en 81, cuando yo estaba terminando doctorado, a mi esposo, que es ingeniero electrónico, lo invitaron a México por unos meses. Y bueno, y él estuvo en México y yo iba a terminar mi doctorado e iba a acompañarlo por un año, y pues nos separó el estado de sitio y hasta 83 él pudo regresar, pero tenía trabajo en México. Entonces yo en mi universidad solicité un año de permiso y había una oportunidad. Bueno, tuve la suerte que una de las directoras de de nuestra facultad, en los años 70 visitó a la UNAM y firmó un convenio de intercambio de profesores. Entonces, mi esposo tenía trabajo en México y yo vine como profesora a la UNAM, invitada por un año, y como empecé a dar clases en la maestría de cosas que les conté que yo sabía desde Simula y todo esfuerzo de concurrencia y lenguajes de programación y sintaxis y formalidades y todo esto. Nadie lo tenía, bueno, ese conocimiento no lo tenía otro profesor en la universidad, en la UNAM, y pues me invitaron a dar clases y dijeron, no, pues quédate aquí, y Y así nos quedamos. Pero siempre, a los, bueno, a los que me preguntan por qué México, también todavía en Polonia, en los años 70, pues, mi amor total de música fue Carlos Santana, y los libros, no de mexicanos, pero en ese momento vivía en México, García Márquez, Cien años de soledad, que afortunadamente nos tradujeron la literatura iberoamericana al polaco, y teníamos en los años 70 una biblioteca fantástica, en particular, Cien años de soledad fue algo que, bueno, aunque Colombia, pero para mí en ese momento, La verdad me daba igual que si el sol y colores, eso fue lo que causó que sí nos quedamos en México.
Fue un enamoramiento progresivo a través de la cultura y después de las condiciones de vida allí.
Sí, sí, es otra cultura, pero una cultura que la verdad A mí me cayó muy bien. No, no tengo quejas. Al contrario, yo creo que es un país maravilloso a pesar de todos sus problemas. Pero bueno, ¿cuál país ahorita no tiene problemas?
Completamente de acuerdo. Pues llevamos ya una hora. Ha sido una— se me ha pasado muy rápido. La verdad que estamos disfrutando mucho. Me he quedado con la idea de que casi que ha sido la precursora de Simula en México.
Sí, mi primer curso en 83 fue de Simula 67 y tengo mis notas de este primer curso aquí en mi escritorio.
Pues si quieres decir algo para despedirte.
No, pues, agradecerte y espero que para los jóvenes que me vayan escuchando, pues, que estos cuentos arqueológicos de la abuelita de ingeniería del software, por lo menos, les despierten el interés por que muchas cosas que están usando hoy en día ya fueron inventados hace mucho y que nada más se están enriqueciendo o reviviendo en momentos en los cuales o la tecnología lo permite o el tipo de aplicaciones que se busca los requiere. Entonces, bueno, eso de que revivió la Los lenguajes funcionales revivieron, es también la arquitectura de microservicios y la posibilidad de tener n procesadores de de veras en un solo espacio. Entonces, bueno, son, y las nubes y todo esto. Entonces, Hay conceptos que son anticuitos, que se durmieron por un ratito y ahorita están reviviendo cuando, cuando hay oportunidad de aprovecharlo. Bueno, eso es para que vean que lo viejito vale la pena entender de dónde viene y por qué por qué usamos, más bien que piensen por qué usan ciertas cosas en sus aplicaciones hoy en día y realmente entiendan la razón y valor. Bueno, creo que ya con esto cierro mi poquita.
Ha sido muy educativo y la verdad es que me quedo con mucho aprendizaje. De todo lo que hemos hablado, y seguramente los que nos escuchen también. Así que muchas gracias por haber estado esta tarde aquí, y vosotros ya sabéis que podéis escucharnos otra tarde más en Codeadores. Y hasta la semana que viene.










