Por qué ML y OCaml son buenas opciones para escribir compiladores

Fuentes: Why ML/OCaml are good for writing compilers

El ingeniero Dwight VandenBerghe sostiene que los lenguajes de la familia ML —especialmente OCaml y, en menor medida, SML/NJ— ofrecen una combinación de características que los hacen especialmente adecuados para desarrollar compiladores. El artículo, publicado en 1998 en el grupo comp.compilers, repasa once rasgos técnicos que, según el autor, convierten la escritura de compiladores en una tarea agradable en lugar de una pesadilla.

En primer lugar, VandenBerghe destaca la recolección de basura de ML, que califica de “asombrosamente rápida” y equiparable —o incluso superior— a malloc/free de C++ en muchas aplicaciones reales. A continuación menciona la optimización de recursión de cola, los tipos de datos adaptados al proceso de compilación (con enteros grandes de serie) y los “tagged unions” o uniones etiquetadas que, combinados con pattern matching, resultan ideales para representar árboles de sintaxis abstracta (AST).

El autor también subraya la seguridad del lenguaje —los programas no provocan fallos de segmentación ni corrompen el sistema—, el manejo de excepciones limpio y eficiente, y la inferencia de tipos, que reduce a casi cero las declaraciones explícitas. Añade además que las implementaciones de OCaml y SML/NJ incluyen herramientas estándar como lex, yacc y burg bien mantenidas, y aporta como caso real un compilador de un lenguaje de modelización financiera de unas 10 000 líneas en OCaml que, en un Pentium 200, compila el mayor programa conocido en 3 segundos. Por último, valora el soporte técnico ofrecido por Inria (Xavier Leroy, Pierre Weis), al que califica como el mejor que ha recibido de cualquier proveedor de lenguajes.