Esta entrevista fue originalmente realizada en inglés por email. Por tanto, primero se ofrece una traducción al español, y al final, se encuentra la versión original.
This interview was originally conducted in English by email. The Spanish translation is provided first, followed by the original version.
Chris Lattner nació el 30 de junio de 1978 en San José, California, Estados Unidos. Se graduó en la Universidad de Portland con una licenciatura en Informática y Matemáticas. Posteriormente, completó su maestría y doctorado en Ciencias de la Computación en la Universidad de Illinois en Urbana-Champaign.
Lattner es un extraordinario ingeniero de software, y sus creaciones han tenido un impacto fundamental en el ecosistema de la programación y el desarrollo de lenguajes de programación. Es ampliamente reconocido por su contribución al desarrollo de LLVM (Low Level Virtual Machine), un conjunto de tecnologías de compilación que se ha convertido en un estándar de la industria para la compilación de código abierto. Fue el creador original de LLVM y también contribuyó al diseño de su lenguaje de programación, LLVM IR (Intermediate Representation).
Además de su trabajo en LLVM, Lattner es conocido por su participación en el diseño y desarrollo de otros proyectos influyentes. Fue uno de los desarrolladores principales de Clang, un compilador de código abierto que se utiliza en conjunto con LLVM y que se ha convertido en una alternativa a GCC. También desempeñó un papel esencial en la creación del lenguaje de programación Swift en Apple, que se ha convertido en un lenguaje popular para el desarrollo de aplicaciones en la plataforma iOS.
Actualmente, su principal proyecto es Mojo, un lenguaje de programación que busca ser un aliado de Python.
En esta entrevista, Chris Lattner, nos dirá por qué Mojo es importante y cuál es el rol de éste en el ecosistema de Python.
Además me gustaría darle las gracias por su rápida respuesta a mis preguntas.
¡Espero la disfruten!1

Versión traducida
(1) Has desempeñado un papel fundamental en el diseño de LLVM, Clang, Swift y MLIR, y más recientemente Mojo, todos los cuales han tenido un profundo impacto en el campo de la programación. Con una amplia gama de áreas de programación, ¿cómo surgió tu interés en el diseño e implementación de lenguajes de programación?
He hablado un poco sobre esto, por ejemplo, esta entrevista podría ser de ayuda:
https://nondot.org/sabre/2013-11-07-LLVMDevMtg-LLVMEarlyDays.pdf
Puedes ver muchas más charlas aquí: https://nondot.org/sabre/Resume.html#talks
(2) ¿Cuáles fueron las principales motivaciones detrás de la creación del lenguaje Swift y qué limitaciones esperabas abordar en comparación con Objective-C?
Por favor, consulta:
(3) LLVM ha dejado una huella sustancial en la industria de la compilación y optimización de código. ¿Cuáles son tus reflexiones sobre el futuro de LLVM y su relevancia para el desarrollo de lenguajes de programación?
Creo que LLVM como proyecto tiene un largo camino por delante. El proyecto LLVM incluye una amplia gama de tecnologías de herramientas, así como MLIR, y subyace en muchos lenguajes de programación en la actualidad, incluyendo Clang/Rust/Swift/Julia, entre otros. Creo que LLVM como proyecto paraguas está prosperando, pero considero que LLVM IR está desactualizado y necesita una actualización utilizando tecnologías de MLIR.
(4) Tu proyecto más reciente es Mojo, un esfuerzo por combinar la facilidad de uso de Python, utilizando su sintaxis, con un rendimiento superior. Hemos visto lenguajes como Julia intentando competir con Python en el ámbito de los sistemas de inteligencia artificial. ¿Cómo se diferencia Mojo de estas otras iniciativas?
Existen diversas mejoras técnicas (respondidas a continuación), pero la diferencia más grande con respecto a cosas como Julia, Swift o Rust es que Mojo es un miembro del ecosistema de Python, no un nuevo lenguaje. Esto significa que está muy centrado en los usuarios existentes de Python, encontrando a las personas donde están y potenciándolas, en lugar de forzar a las personas a reaprender cómo escribir constructos básicos para comenzar.
(5) Las pruebas de rendimiento muestran que Mojo tiene una ventaja significativa sobre Python. ¿Qué subyace en la velocidad excepcional de Mojo?
Comparar Mojo con Python no es muy «justo» porque las tecnologías son muy diferentes: Mojo es compilado, la implementación estándar de Python («CPython») es interpretada.
Es mucho más interesante comparar Mojo con cosas como Swift, Python o Julia. En este sentido, Mojo sobresale de varias maneras:
Tiene un buen control a bajo nivel como Rust.
Tiene buena facilidad de uso como Swift o Python.
Tiene características avanzadas como la sintonización automática (autotuning) que ningún lenguaje ampliamente utilizado admite.
Puede admitir la generación de código para GPUs y otros aceleradores.
Está construido sobre una plataforma tecnológica novedosa basada en MLIR, que es una primicia en la industria.
Por supuesto, hay muchos detalles que entran en juego.
(6) ¿Cuál consideras que es el principal desafío para popularizar Mojo como un lenguaje de programación y cómo ves la relación entre Mojo y Python en el futuro?
La relación es sencilla, nos gustaría que Mojo crezca para ser un superconjunto de Python con el tiempo, de la misma manera en que C++ es un superconjunto de C. Esto no significa que los lenguajes sean exactamente iguales; C++ toma nuevas palabras clave que C te permite usar, por ejemplo. Dicho esto, C y C++ han logrado coevolucionar durante muchos años, y creo que lo mismo sucederá con Mojo y Python.
No preveo un desafío significativo para popularizar Mojo, ya tenemos más de 150,000 personas que han utilizado Mojo. El principal problema con Mojo en este momento es que todavía está en una etapa muy temprana y necesita madurar :-)
(7) Dado tu gran éxito en estos proyectos, ¿cómo gana popularidad un lenguaje de programación (o herramienta de compilación)? ¿Es una combinación de experiencia técnica junto con una comunidad de apoyo, o entran en juego otros factores?
Esto es diferente para cada sistema, por ejemplo, Swift claramente se benefició de que Apple posee el ecosistema de iOS.
En el caso de Mojo, realmente se reduce a brindar a los programadores de Python existentes superpoderes, desbloquear la innovación en una comunidad importante (desarrolladores de IA) y alinearse con los cambios en los hardware impulsados por el fin de la ley de Moore.
Original
(1) You've played a pivotal role in designing LLVM, Clang, Swift, and MLIR, and most recently Mojo, all of which have had a profound impact on the field of programming. With such a wide array of programming areas, how did your interest in programming language design and implementation come about?
I’ve spoken about this a bit, e.g. this interview might be helpful:
https://nondot.org/sabre/2013-11-07-LLVMDevMtg-LLVMEarlyDays.pdf
(You can see many more talks here: https://nondot.org/sabre/Resume.html#talks)
(2) What were the primary motivations behind creating the Swift language, and what limitations were you aiming to address in comparison to Objective-C?
Please check out:
(3) LLVM has left a substantial mark on the compilation and code optimization industry. What are your thoughts on the future of LLVM and its relevance to the development of programming languages?
I think that LLVM as a project has a long life ahead of it. The LLVM project includes a wide range of toolchain technologies as well as MLIR, and underlies many programming languages today, including Clang/Rust/Swift/Julia/etc. I think that LLVM as an umbrella project is going strong, but I think that LLVM IR is dated and needs to be upgraded using MLIR technologies.
(4) Your latest endeavor is Mojo, an effort to blend the user-friendliness of Python, utilizing its syntax, with superior performance. We've seen languages like Julia attempting to compete with Python in the realm of AI systems. How does Mojo set itself apart from these other initiatives?
There are various technical improvements (answered below) but the biggest difference from things like Julia or Swift or Rust is that Mojo is a member of the Python ecosystem, not a new language. This means that it is very existing-Python user centric, meeting people where they are and lifting them, rather than forcing people to relearn how to write basic constructs to get going.
(5) Performance benchmarks show Mojo having a significant edge over Python. What underlies Mojo's exceptional speed?
Comparing Mojo to Python isn’t very “fair” because the technologies are so different: Mojo is compiled, Python’s standard implementation (“CPython”) is interpreted.
It is far more interesting to compare Mojo to things like Swift or Python or Julia. Here Mojo excels in a few ways:
It has good low-level control like Rust.
It has good usability like Swift or Python.
It has advanced features like autotuning that no widely used language supports.
It can support code generation for GPUs and other accelerators.
It is built on a novel technology platform built on top of MLIR, which is an industry first.
There are also many details that go into it of course.
(6) What do you consider the primary challenge in popularizing Mojo as a programming language, and how do you foresee the relationship between Mojo and Python in the future?
The relationship is straightforward, we’d like Mojo to grow to be a superset of Python over time, in the same way that C++ is a superset of C. This doesn’t mean that the language is exactly the same — C++ takes new keywords that C allows you to use, for example. That said, C and C++ have managed to co-evolve for many years, and I think the same will happen with Mojo and Python.
I don’t foresee a significant challenge popularizing Mojo we already have >150K people who have used Mojo. The major problem with Mojo right now is that it is still very early and needs to grow up :-)
(7) Given your substantial success in these projects, how does a programming language (or compiler tool) gain popularity? Is it a blend of technical expertise along with a supportive community, or do other factors come into play?
This is different for every system, e.g. Swift clearly benefited from Apple owning the iOS ecosystem.
In the case of Mojo, it really comes down to giving existing Python programmers superpowers, unlocking innovation in an important community (AI Developers), and aligning with changes in hardware driven by the end of Moore’s law.
La traducción del inglés al español fue realizada usando ChatGPT (GPT-3.5).
¡Gracias por hacer estas entrevistas!