¿La creación de mi propio lenguaje / compilador me hace mejor en el desarrollo de software? Si es así, ¿cómo?

Si lo hace.

  1. La complejidad de crear incluso un compilador restringido pequeño es fácil de subestimar. Hacerlo en la práctica le brinda experiencia sobre cómo atacar un proyecto de mayor alcance que la mayoría de los ejercicios, a medida que descubre todos los aspectos básicos de la vida en la teoría correspondiente.
  2. Le brinda una comprensión más profunda de la semántica de su idioma de origen cuando tiene que encontrar una manera de implementarlos.
  3. Enfrentarse a los desafíos de su propio compilador y comprender las restricciones que imponen a su solución, lo convierte en un mejor usuario de los compiladores de otras personas.
  4. Si hace todo más o menos desde cero, lo familiariza íntimamente con un conjunto de técnicas para manejar el ingreso de texto, la manipulación de algunas estructuras de datos comunes (árboles, tablas hash, listas dinámicas, pilas, colas, gráficos, todo los clásicos), detalles de hardware de bajo nivel y todo tipo de cosas que puedes usar también en programas que no son compiladores.

Su idioma de origen no tiene que ser particularmente novedoso para que esto valga la pena. Incluso si usted es el único usuario que tendrá su compilador, creo que es un ejercicio importante desmitificar personalmente exactamente cómo un compilador toma un lenguaje con un significado comprensible y lo prepara para ejecutarse en una máquina que no entiende nada.

Ciertamente alteró mi perspectiva la primera vez, y la mayoría de los estudiantes que he visto experimentan que la epifanía nunca vuelve a verse de la misma manera en la programación, o eso me han dicho.

Si esto es todo lo que tiene que decir sobre estos idiomas (sin mencionar, digamos, mecanografía, alcance o máquinas virtuales), entonces sí, tendrá una experiencia de aprendizaje épica en la creación de su propio idioma, al menos porque Será un proyecto masivo que le dará práctica y requerirá que tome decisiones de diseño extremadamente complejas.

Si puedes escribir un lenguaje / compilador medio decente, entonces eres un buen programador por cualquier definición razonable. También obtendrá una mejor comprensión de lo que un compilador comercial le está haciendo a su código, lo que lo convertirá en un mejor programador.

Además, la mayoría de los lenguajes no se basan en grandes ideas, se crean porque algunas grandes organizaciones quieren un entorno de desarrollo para alguna plataforma que no tenga uno. El lenguaje generalmente está conformado por las opiniones de los desarrolladores sobre lo que constituye un buen código, y también por las necesidades de la organización, pero los buenos lenguajes generalmente son muy pragmáticos.

Diseñar un buen lenguaje de programación es una habilidad poco común, que lleva años de estudio de lo que ya se ha hecho y tener un concepto claro de lo que desea mejorar. Inventar un nuevo idioma no le enseñará nada más que el diseño del lenguaje, y probablemente no tendrá mucho uso a menos que tenga una idea verdaderamente novedosa.

Mejor aún sería implementar un compilador o intérprete para un lenguaje que ya existe. Hay muchas estructuras y tipos de datos que necesita saber para implementarlos de manera efectiva. En The Unix Programming Environment , Kernighan y Pike muestran el desarrollo de 5 versiones cada vez más complejas de una calculadora (lo llaman “hoc”) que finalmente termina usando un analizador completo y tablas de símbolos y demás. Hasta que comprenda y pueda explicar cómo funciona hoc, cualquier otra cosa sería demasiado ambiciosa.