[♪ música ♪ He sido desarrollador durante unos 25 años. Soy el director de educación para el grupo SMYTH, S-M-Y-T-H, y he enseñado a unos 350,000 estudiantes los fundamentos web en mis cursos en Udemy, Pluralsight y otros lugares, y actualmente puedes encontrarme en understandingreact.com para profundizar en el código fuente de React.
Y la charla de hoy se titula, Si Fueras un Compilador de React. ¿Cuál es la herramienta más poderosa en el cinturón de herramientas de un desarrollador? Bueno, muchas personas podrían tener diferentes respuestas a eso, pero creo que la herramienta más poderosa en el cinturón de herramientas de un desarrollador es un modelo mental preciso, lo que significa que tienes una comprensión razonable de cómo funcionan las herramientas que usas. Porque si tienes una comprensión razonable de cómo funcionan las herramientas que usas, tomas buenas decisiones arquitectónicas. Tienes confianza al usar la herramienta. Y eres capaz de depurar cuando las cosas no van como se espera.
Así que en esta charla, el objetivo es construir un modelo mental preciso de cómo funciona el nuevo compilador de React. Y para hacer eso, vamos a pretender que somos el compilador de React. Vamos a tomar un ejemplo de código que es lento, e intentaremos hacer lo que hace el compilador. Así que si vamos a ser el compilador, tenemos que tener algunas reglas básicas. ¿Cuál es nuestro enfoque y cuáles son nuestros objetivos? Bueno, sabemos que React por diseño llama a las funciones que le damos, es decir, nuestros componentes, una y otra vez. Ahora, a React le gusta llamar a eso re-renderizado de componentes. Pero realmente, le damos a React nuestros objetos de función, y luego React elige cuándo ejecutar y re-ejecutar esas funciones. Y eso significa que el rendimiento de React puede estar ligado a la frecuencia con la que se llaman nuestras funciones, y cuánto trabajo hacen nuestras funciones.
Entonces, ¿cuáles son nuestros objetivos? Bueno, nuestros objetivos como compilador son minimizar los re-renderizados, es decir, minimizar con qué frecuencia, cuántas veces, se llaman nuestras funciones que le damos a React una y otra vez, y omitir cálculos costosos si no necesitamos ejecutarlos. Y eso mejorará nuestro rendimiento. Ahora, ha habido cierta controversia en línea sobre si el compilador de React es un compilador, así que saquemos eso del camino. En los currículos de ciencias de la computación, a menudo se introduce a las personas a los compiladores cuando se habla de convertir lenguajes de programación de alto nivel en lenguaje de máquina, y eso es cierto. Pero también siempre ha sido cierto que existe algo llamado un compilador de fuente a fuente. A veces lo llamamos un transpiler. Y eso es esencialmente lo que es el compilador de React. De fuente a fuente, toma el código como entrada y genera un código equivalente, código que hace lo mismo que nuestro código original, pero con algunos extras. Y eso es lo que hace el compilador de React. Así que si somos el compilador, vamos a hacer lo mismo que hace el compilador de React.
Ahora, cuando un programa que funciona como compilador se ejecuta, analiza el texto del código. Así que eso es lo que haríamos. Ahora, en el caso de un compilador real, podría convertir el texto en algo llamado un árbol de sintaxis abstracta. Así que podría tomar una línea de código que escribimos y luego convertirla en algún tipo de estructura de objeto, que luego puede ser recorrida, razonada, etcétera, y luego generar nuevo texto, nuevo código. De fuente a fuente.
Comments