2010-09-11 10 views
7

Muy bien, creo que esta pregunta se ha hecho muchas veces aquí.Creación de lenguajes de programación y diseño de compiladores. ¿Están relacionados?

Quiero crear un lenguaje de programación, no necesariamente a partir de hoy, sino en un lapso de 2-3 años. No soy un programador muy bueno, pero estoy mejorando. Lo que quería preguntar es qué tan cerca está la creación de un lenguaje y la escritura de un compilador?

Dado que un compilador traduce un idioma de una forma a otra, creo que se trata de escribir un compilador para una determinada pieza de texto. Entonces, si aprendo el diseño del compilador, ¿podré escribir mi propio lenguaje de programación?

Respuesta

4

Puede diseñar un lenguaje de programación sin saber nada sobre la implementación de compiladores, y viceversa. El diseñador del lenguaje puede escribir una especificación para el idioma, y ​​un implementador del compilador puede tomar eso y crear el compilador.

Sin embargo, si se trata de un proyecto personal, entonces probablemente tendrá que aprender a hacer ambas cosas. Un lenguaje de programación para el que no existe un compilador es puramente teórico, y es difícil determinar qué tan bueno es un lenguaje de programación sin escribir y ejecutar programas reales con él. Incluso si encuentras a alguien dispuesto a implementar el compilador para ti, es posible que no quieras tener que esperar a esa persona cada vez que tengas una nueva idea para probar, por lo que querrás saber cómo hacerlo tú mismo.

La implementación de un compilador es un proyecto de programación bastante avanzado, por lo que si recién está empezando como programador, tiene una gran curva de aprendizaje por delante. Es posible que desee comenzar mirando los tutoriales y ejemplos para LLVM, aunque esa podría no ser una infraestructura de compilador adecuada para su idioma.

2

Naruto, depende del tipo de "Idioma" que desee crear. Si se trata de un lenguaje simple de aprendizaje, y eliges la gramática, etc., no necesitarás saber mucho sobre programación. PERO, si va a tratar con uno serio, tendrá que estudiar al menos un lenguaje de programación de computadora profundo no solo para usarlo, sino para tratar de alcanzar varios de sus conceptos, por ejemplo, como OO, genéricos, lambda expresiones, etc., etc.

Créanme, esta no es una tarea de meses, sino un viaje serio. De todos modos, te deseo suerte;)

+0

Quiero desarrollar un lenguaje simple, solo para aprender. –

2

Íntimamente relacionado. Realmente no tienes un lenguaje a menos que tengas una forma de interpretarlo/compilarlo en un formato ejecutable.

1

Depende de lo que quiere decir con "compilador". Los compiladores/intérpretes generalmente constan de dos partes grandes: una parte analizadora, que lee un texto en su idioma y construye una estructura interna (AST) y una parte de interpretación/generación de código, que lee el AST y lo traduce en máquina o códigos de bytes. Aunque definitivamente necesitará saber cómo escribir un analizador sintáctico para su idioma, la generación de código es menos importante, al menos, en las primeras etapas. Puedes comenzar simplemente traduciendo tu idioma a C y ver a dónde vas desde allí.

+0

Esto es lo que estaba pensando hacer. Compré compiladores: principios, técnicas y herramientas de Aho, Lam, Sethi y Ullman. Veamos qué tan lejos llego de allí. –

Cuestiones relacionadas