¿Cuál es la ventaja de aprender y comprender la construcción del compilador?

10

Soy estudiante de tercer año de la carrera de Ingeniería de Software. A partir de este año, mi universidad ha introducido un nuevo curso llamado 'Construcciones de compiladores', que le enseña los conceptos básicos de la teoría de construir un compilador.

¿Cuál sería la ventaja del mundo real para un ingeniero de software de aprender sobre la construcción de compiladores?

Nipuna
fuente
2
Aunque no me arrepiento de haber tomado el curso de compiladores, fue el más difícil que he tenido. La mayoría de los cursos de CSci tenían una teoría importante que había que aprender, o mucha programación, no ambas. Los compiladores tenían ambos.
David Thornley
1
Lo hice en la universidad en mi tercer año también. - Fue el segundo mejor módulo que tomé en todo el curso (después de AI).
TWith2Sugars
@ TWith2Sugars: ¿Por qué dirías que CC es uno de los mejores?
Nipuna
1
el centavo cayó varias veces para mí en la clase, además de un profesor atractivo y compañeros decentes lo hicieron algo que realmente disfruté. Recuerdo que en un momento empezamos a hacer expresiones gramaticales al principio y el profesor dijo: "Esto no tendrá sentido hasta el segundo término". El segundo término es cuando comenzamos a construir el resto del compilador (primero término construimos un analizador / tokeniser). Eso para mí lo convirtió en un gran módulo.
TWith2Sugars

Respuestas:

12

Hay un lado práctico para aprender la construcción del compilador. Ha habido varias ocasiones en las que he necesitado crear analizadores para implementar algún lenguaje de comando específico de la aplicación. Me permitió crear interfaces flexibles y programables para la aplicación.

También le da una mejor idea de por qué algunos idiomas están diseñados de la manera en que están, y por qué ningún idioma es perfecto.

Es un curso difícil, uno de los más difíciles en el plan de estudios. Cometí el error de tomarlo durante una sesión de verano; nunca tome un curso de compiladores en una sesión de verano, su cerebro explotará.

John Bode
fuente
55
+1 por explosión de cerebro. Además, ¡nunca pospongas la escritura de tu compilador hasta el final del semestre! Sé por experiencia ...
Jeremy Heiler
20

Oh es una buena Tómalo, no te arrepentirás.

Obtiene información sobre la magia de los lenguajes de programación, sus características comparativas, la transformación del código de alto nivel en su forma ejecutable. Comprenderá mejor muchas características del lenguaje, tendrá una visión más amplia de lo que es posible y cómo se hacen esas cosas. Lo verás todo con otros ojos.

Es aconsejable pasar tiempo en la universidad para aprender cosas fundamentales de CS. Lenguajes de programación concretos, herramientas y bibliotecas, todos van y vienen, pero la base permanece.

Además, si sobrevive al curso (siempre que sea grave), puede felicitarse por tener el cerebro adecuado para la programación. Realice algún proyecto práctico con esta teoría, menciónelo en su currículum y despertará mucho interés con buenos empleadores.


fuente
2
Además, te da una idea de cuál es el lenguaje bueno / malo, que es un tema habitual aquí.
JBRWilkinson
8

¡Seguro!

Puede que no sea un tema que usaría diariamente como una clase de bases de datos, por ejemplo, comprender los compiladores le dará una buena base.

Un ejemplo similar sería una clase de sistemas operativos. Puede que sea un programador y no piense en cómo funciona un sistema operativo todos los días, pero tener la base en él lo ayudará a largo plazo.

ozz
fuente
2
Mi curso de OS de pregrado fue el primer lugar donde tuve que entender realmente la concurrencia. Fue muy práctico. Mi curso de idiomas de programación para estudiantes universitarios fue mejor cuando escribíamos analizadores sintácticos.
justkt
Por alguna razón en mi tercer año
eliminé
6

¡Si! El curso le dará una comprensión mucho más profunda sobre el análisis del lenguaje de programación, los tipos de datos y las funciones y cómo traducirlo al código de máquina para CPU específicas: s.

Esto, por sí solo, puede no ser de mucho uso diario práctico, pero le dará la confianza de que realmente sabe cómo funcionan las cosas . Esto es muy útil (hablando con experiencia aquí) cuando tienes que hacer una optimización de bajo nivel y encontrar esos errores realmente desagradables, lo que tiene a todos los demás perplejos.

Martin Wickman
fuente
4

Hay muchos rumores sobre los Idiomas específicos de dominio hoy en día. Y realmente valen la pena, su verdadero potencial aún no se ha explorado . Por lo tanto, las habilidades de construcción de los compiladores se volverán no solo importantes sino esenciales en el futuro. Paso aproximadamente el 60% de mi tiempo de desarrollo implementando compiladores eDSL, incluso si el problema actual no está directamente relacionado con los compiladores.

SK-logic
fuente
¿Qué quieres decir con compiladores eDSL?
Nipuna
1
Como estoy usando lenguajes que admiten metaprogramación, cada lenguaje específico de dominio incorporado que implemento es prácticamente una macro compiladora. Algunos son bastante complicados, con su propio sistema de tipos y numerosos pases de traducción, algunos son triviales, pero todos son compiladores. No tienen sentido los intérpretes a menos que sean realmente necesarios.
SK-logic
1

Vale la pena tomar un curso para comprender cómo se construyen las herramientas que utilizará durante toda una carrera de programación (por ejemplo, compiladores, intérpretes, analizadores) y cuáles son sus limitaciones.

También vale la pena hacerlo en un contexto académico, ya que expone los fundamentos interesantes y no las muchas complejidades del mundo real, que es complicado y está empantanado al tratar con lenguajes y arquitecturas heredadas, es decir, mucha complejidad. También es más probable que trabajes en todos los aspectos de un compilador en la construcción de uno completo para un curso, que en trabajar en uno en la industria.

grussel
fuente