Cómo crear un lenguaje de programación

Muchas personas tienen dificultades o frustraciones con los lenguajes de programación que usan todos los días. Algunos quieren que las cosas se manejen de manera más abstracta, mientras que otras personas no les gustan las características de implementación que desean eran "estándar". Si usted es un profesional de TI o simplemente un aficionado, muchas veces puede encontrar usted mismo con ganas de crear un nuevo lenguaje de programación.

Pasos

  1. Imagen titulada Crear un idioma de programación Paso 1
1. Familiarizarse con la tecnología. No puede crear un lenguaje de programación si no sabe cómo usar una computadora.
  • Imagen titulada Crear un lenguaje de programación Paso 2
    2. Familiarizarse con la terminología. Los escritores del compilador a menudo usan terminología desconocida. Leer en los compiladores antes de proceder. Asegúrate de saber todo lo que necesitas saber.
  • Imagen titulada Crear un lenguaje de programación Paso 3
    3. Decide qué problema su idioma está resolviendo. ¿Se está abordando un problema específico de dominio, o es un lenguaje de propósito general??
  • Imagen titulada Crear un idioma de programación Paso 4
    4. Piensa en la semántica de su idioma y los conceptos de ello.
  • ¿Vas a permitir el acceso directo del puntero o no??
  • ¿Cuáles son los tipos de datos de su idioma??
  • ¿Es un lenguaje estático o dinámico??
  • Cual es tu modelo de memoria? ¿Vas a utilizar un recolector de basura o administración manual de memoria?? (Si usa un colector de basura, prepárese para escribir uno o adaptar uno existente a su idioma.)
  • Como van a manejar la concurrencia? ¿Va a usar un modelo simple de roscado / bloqueo o algo más complejo como Linda o el modelo del actor?? (Dado que hoy en día las computadoras tienen múltiples núcleos.)
  • ¿Hay funciones primitivas incrustadas en el idioma o lo hará todo de una biblioteca??
  • ¿Cuál es el paradigma o paradigmas de su idioma?? Funcional? Orientado a objetos? Prototipo (como jаvascript)? Orientado a aspectos? Orientado a la plantilla? O algo completamente nuevo?
  • ¿Cómo va a interactuar su idioma con las bibliotecas e idiomas existentes (principalmente c)? Este punto es importante si está construyendo un idioma específico de dominio.
  • Finalmente, algunas de las respuestas a estas preguntas serán respondidas por el segundo paso y le ayudará a responder el siguiente paso.
  • Imagen titulada Crear un lenguaje de programación Paso 5
    5. Piense en algunas tareas específicas que alguien querría poder realizar con su idioma. Por ejemplo, `pueden querer dirigir un robot para seguir una línea` o `pueden querer crear programas de escritorio relativamente portátiles` o `pueden querer crear aplicaciones web con ella`.
  • Imagen titulada Crear un idioma de programación Paso 6
    6. Experimento con ideas de sintaxis (el texto del idioma) para los ejemplos anteriores.
  • Tenga cuidado de mantener su idioma en la categoría de idioma libre de contexto o algo dentro de él. Su generador de parser y lo apreciará más adelante.
  • Imagen titulada Crear un lenguaje de programación Paso 7
    7. Escribe una gramática formal para la sintaxis.
  • Imagen titulada Crear un lenguaje de programación Paso 8
    8. Decidir si el idioma será interpretado o compilado. Lo que significa que en el mundo interpretado, su usuario normalmente editará su programa en un editor y lo ejecutará directamente en el intérprete, mientras que en el mundo compilado, su usuario editará su programa, compilarlo, guardará el ejecutable resultante en algún lugar y lo ejecutará.
  • Imagen titulada Crear un lenguaje de programación Paso 9
    9. Escriba el escáner de la parte delantera y el analizador o encuentre una herramienta que le ayude con esto.
  • Además, piense en cómo su compilador / intérprete le advertirá a su usuario sobre programas erróneos y errores de sintaxis.
  • Imagen titulada Crear un lenguaje de programación Paso 10
    10. Use la información del analizador para escribir el código de objeto o una representación intermedia. Haga que el analizador cree un AST, luego cree su código de objeto de la AST utilizando tres código de dirección o su SSA de Big Brother, luego cree una tabla de símbolos para definir sus funciones, las variables globales, etc.
  • Además, dependiendo de su idioma, es posible que también desee crear tablas de punteros virtuales o tablas de información para sus clases (para poder admitir la reflexión o RTTI).
  • Imagen titulada Crear un idioma de programación Paso 11
    11. Escriba el ejecutor o generador de código que vincule todo.
  • Imagen titulada Crear un lenguaje de programación Paso 12
    12. Escribe muchos programas de prueba para probar el idioma.
  • Desea crear programas que enfaten las cargas de su gramática formal para ver que su compilador acepta todo lo que está dentro de su definición y rechaza todo lo que está fuera de él.
  • Imagen titulada Crear un lenguaje de programación Paso 13
    13. Considere cómo el usuario depurará sus propios programas.
  • Imagen titulada Crear un lenguaje de programación Paso 14
    14. Si su idioma usa una biblioteca estándar, querrá escribirlo. Junto con un colector de basura u otras funciones de tiempo de ejecución si lo necesita.
  • Específicamente, si escribe un compilador, necesitará el código que se ejecutará el sistema operativo para comenzar a ejecutar el código de usuario (por ejemplo, asignar todas las variables globales).
  • Imagen titulada Crear un lenguaje de programación Paso 15
    15. Publique su idioma, junto con la especificación para ella y algunos ejemplos de lo que puede hacer en él.
  • No olvide documentar cómo puede integrarse con las bibliotecas, los idiomas y cómo usar las funciones de tiempo de ejecución y / o la biblioteca estándar.
  • Video

    Al utilizar este servicio, se puede compartir información con YouTube.

    Consejos

    Comience por diseñar su idioma y no escriba ningún código, hasta que esté satisfecho y haya respondido a todos (o la mayoría) de las preguntas o problemas relacionados con su diseño, ya que es más fácil cambiar el diseño antes de lo largo.
  • Conozca su plataforma de destino (sistema operativo y bibliotecas) para su compilador / intérprete, después de todo, lo va a usar y lo manipulará.
  • Advertencias

    Piense si realmente necesita un nuevo idioma, y ​​lo que su idioma tiene de nuevo que otros idiomas no tienen (puede ser una combinación de características o una sola característica).
  • Escribir idiomas es difícil si no sabes lo que estás haciendo. También se necesita mucha práctica.
  • Prepárese para pasar un tiempo en el diseño de idiomas, ya que no tendrá la oportunidad de cambiar su idioma una vez que haya escrito el compilador y más allá del punto de diseño.
  • No intente basar sus funciones en una unión de varios idiomas, como decir que su idioma será una unión de idioma x, lenguaje y lenguaje z. La historia nos ha mostrado que los idiomas creados de tal manera nunca encontrarán el éxito, o todos estarían programando PL / 1 en lugar de algo basado en C.
  • Cosas que necesitarás

    • Paciencia.
    • Conocimiento sobre características del lenguaje y diseño de idiomas (es posible que desee leer conceptos de diseño de lenguaje de programación de David A. Vatio).
    • Conocimiento sobre la teoría del compilador (ya que escribirá un compilador / intérprete para su idioma y su implementación será la implementación de referencia).
    • Usos para su idioma (recuerde que se crearon algunos de los idiomas más utilizados como C o Lisp para hacer algo específico como crear unix o hacer una cálculo simbólica).
    Artículos Relacionados