El ingeniero de software Paul Tarvydas, con más de 30 años de experiencia en consultoría, comparte un conjunto de opiniones personales sobre cómo abordar la creación de compiladores y lenguajes de programación en la actualidad. Tarvydas distingue entre diseñar un lenguaje y construir un compilador, y sostiene que en el siglo XXI ya existen suficientes compiladores, aunque siempre hay espacio para nuevos lenguajes, incluidos los que utilizan formas distintas a los caracteres para su sintaxis.
Entre sus recomendaciones prácticas destaca el prototipado rápido del lenguaje antes de invertir en la implementación. Para la fase de análisis sintáctico, sugiere usar OhmJS, una herramienta basada en gramáticas PEG que incorpora un editor con función de REPL para visualizar árboles de parseo. Una vez validada la gramática, recomienda reescribirla con la tecnología definitiva (como analizadores Pratt). Tarvydas también aboga por construir una Implementación Mínima Viable (MVI) mediante transpilación a lenguajes existentes como Python o JavaScript, mencionando como ejemplo a Steve Philips, creador del lenguaje Voltair compilado a Go.
Para la verificación de tipos, propone expresarla como un programa relacional usando Prolog o sus derivados, empleando triples de la forma relación(sujeto, objeto) sin extensiones orientadas a objetos. En la etapa de generación de código, recomienda emitir primero código 'ingenuo' y optimizarlo después con un optimizador peephole al estilo Fraser/Davidson o el OCG de Cordy, que considera superior al RTL de GCC. El autor también defiende una arquitectura de pipeline tipo UNIX, donde cada fase del compilador se escribe en el lenguaje más adecuado para el problema. Defiende, además, que JavaScript o Lisp son representaciones intermedias más prácticas que LLVM, y que las ideas heredadas del siglo XX sobre construcción de compiladores deberían revisarse con las herramientas actuales.
