Modelos de Máquina Abstracta del Programador: Comprender la Meta del Software

Este artículo explora los "Modelos de Máquina Abstracta" (AMM) que los programadores utilizan al escribir software. El autor relata experiencias personales al diseñar herramientas de programación, destacando la íntima conexión entre la arquitectura de hardware y los lenguajes de programación. Argumenta que el AMM mental de un programador no es simplemente un modelo de lenguaje o de hardware, sino una abstracción que incorpora comportamientos extra-funcionales, como tiempo, memoria y E/S. Analizando lenguajes como Haskell, el autor diferencia entre modelos descriptivos y modelos de especificación y detalla la aplicación de AMMs en varios lenguajes de programación y plataformas de hardware. El artículo explora además los roles de los AMMs en la evaluación de habilidades de programación y en la construcción de ecosistemas de software, analizando cómo diferentes tipos de diseñadores de lenguajes influyen en los AMMs. Finalmente, el autor resume la importancia de los AMMs en la ingeniería de software y apunta hacia futuras direcciones de investigación.