Así que si muchas cosas son compiladores, creo que hay mucho espacio para que seamos realmente creativos al respecto. Y no importa si eso es, por ejemplo, lo que hace Middenland, donde usan compiladores para inyectar instrumentación que capturará información sobre tu código en tiempo de ejecución, y luego alimentar eso a un LLM que te dirá cómo optimizar el rendimiento de React de tu código. O si eso es lo que hace Astro, donde el compilador de Astro realmente divide tu código basado en directivas, y te permite resolver problemas de hidratación de muchas maneras diferentes. O lo que hace Mitosis de Builder.io, que también es muy complejo, porque transforman componentes JSX en componentes para Angular, React, Quake, Vue, Veltas, Solid, y demás. Y estos tres últimos ejemplos, pueden haber sonado demasiado complejos, y también pueden caer bajo este paraguas de no eres Facebook, ¿por qué te molestarías? Pero de nuevo, podemos encontrar ejemplos con los que podemos relacionarnos. Como esta herramienta de Rangle, básicamente ejecutan un análisis estático para entender cómo su sistema de diseño está siendo utilizado por su equipo.
Así que ese es un problema que nosotros como desarrolladores front-end podríamos enfrentar, como entender si las bibliotecas que estamos construyendo para nuestros equipos están siendo utilizadas por nuestros equipos, e incluso usan TS-Morph, por cierto. La segunda cosa es, realmente creo que entender los compiladores puede hacernos mejores desarrolladores de JavaScript, o desarrolladores front-end. Así que de nuevo, no necesitamos escribir uno, pero solo teniendo una idea general de cómo funcionan, pueden ayudarnos a evaluar mejor los frameworks, depurar casos límite, e incluso influir en nuestras decisiones arquitectónicas en nuestros proyectos. Y encontré esto el otro día en Reddit, y es una publicación que dice así. Realmente no hay mejor educación sobre estructuras de datos complejas y procesamiento de datos y tipos de datos en sí mismos que el diseño de compiladores. Con la posible excepción de la programación de redes, diría que todo el desarrollo de software puede verse como una especie de subconjunto del diseño de compiladores, y no tendrás la imagen completa si no lo entiendes.
Y, para mí, eso es realmente interesante porque podemos abstraer el compilador como un pipeline de a veces incluso transformaciones relativamente simples de un dato a la siguiente forma de dato. Así que creo que realmente podemos aprender mucho de cómo se construyen los compiladores, y eso puede cambiar la forma en que vemos nuestro software JavaScript y front-end en general. Así que para concluir, el título de la charla es Compiladores, Interfaces de Usuario, y el Resto de Nosotros. Pero probablemente la principal conclusión es que en realidad los compiladores, el análisis estético, y todo eso, son para el resto de nosotros, y podemos empezar a usarlos hoy. Las diapositivas de esta sesión están disponibles en este código QR y otras sesiones que tengo sobre los internos de herramientas y navegadores y demás. Y creo que todavía tenemos tiempo para algunas preguntas, así que muchas gracias por tenerme hoy. Sí. Me encantaría saber. Así que como alguien como yo que no tiene un trasfondo en ciencias de la computación, ¿hay algunos recursos que recomendarías para desarrolladores que buscan aprender más sobre compiladores o tal vez comenzar su inmersión profunda en compiladores? Sí. Así que hay muchos cursos en línea gratuitos de MIT, Stanford, y otras universidades por ahí, que son básicamente subconjuntos de sus cursos de CS que tomarías. También leer cómo esos frameworks están usando, por ejemplo, Sakya, quien solía estar en el equipo de compiladores de React en Meta, escribe mucho sobre cómo el compilador de React usa esos conceptos. Y lo mismo sobre Marco, por ejemplo, Ryan acaba de mencionar cómo organiza muchas transmisiones en vivo. Así que en algunas de estas transmisiones en vivo, realmente compilan la charla sobre compilar eso. Así que sí, leer los clásicos, también algunos libros como Structure and Interpretation of Computer Programs y todo eso y ver cómo todo esto se aplica en herramientas front-end. Genial. Me encanta.
Comments