Threaded Code es una técnica de implementación de lenguajes de programación en la que un programa se representa como una secuencia de direcciones de subrutinas o fragmentos de código. En lugar de almacenar instrucciones máquina explícitas, el código compilado consiste en una lista de punteros a las rutinas que implementan las operaciones del lenguaje. Cuando se ejecuta, un intérprete simple (el 'dispatcher') lee cada puntero y salta a la subrutina correspondiente. Existen varias variantes, como Direct Threaded Code (DTC), donde cada entrada es la dirección de la rutina; Indirect Threaded Code (ITC), donde cada entrada es la dirección de un puntero a la rutina; y Subroutine Threaded Code (STC), que utiliza llamadas a subrutinas nativas del procesador.

Esta técnica ha sido históricamente prominente en la implementación de lenguajes de pila como Forth, donde la compacidad del código y la eficiencia del despacho eran críticas, especialmente en sistemas con recursos limitados. También se ha utilizado en la implementación de máquinas virtuales y lenguajes interpretados para reducir la sobrecarga de interpretación y el tamaño del código. Un ejemplo clásico es la implementación de la máquina virtual de Forth, donde las 'palabras' del lenguaje se compilan en secuencias de punteros a otras palabras o a rutinas primitivas escritas en ensamblador o C. Esto permite una gran flexibilidad y extensibilidad, ya que nuevas palabras pueden definirse fácilmente en términos de las existentes.

Para un arquitecto de sistemas, comprender Threaded Code es crucial al diseñar o evaluar sistemas que requieren alta eficiencia en la ejecución de lenguajes interpretados o DSLs (Domain-Specific Languages), especialmente en entornos embebidos o con restricciones de memoria. Los trade-offs incluyen un tamaño de código muy compacto (beneficioso para caché y almacenamiento), pero potencialmente una mayor sobrecarga de ejecución debido a los saltos indirectos y el despacho constante, lo que puede impactar el rendimiento en CPUs modernas con pipelines profundos y branch prediction sofisticada. La elección entre DTC, ITC o STC dependerá del equilibrio deseado entre compacidad, velocidad de despacho y la facilidad de integración con el código nativo. Es una técnica valiosa para la construcción de máquinas virtuales ligeras y sistemas extensibles donde la velocidad de desarrollo y la flexibilidad son tan importantes como la eficiencia bruta.