¿Cuáles son los temas candentes que se pueden investigar sobre la construcción del compilador?

Computación paralela:

Los proveedores de chips están comenzando a fabricar CPU multinúcleo muy heterogéneas (p. Ej., Procesadores escalares, motores SIMD [quizás integrados en los procesadores escalares], GPGPU, unidades de cómputo especializadas).

Hay mucho trabajo para tratar de particionar programas de manera eficiente en tales CPU multinúcleo. Esto implica la detección del código apropiado para cada dispositivo, programa y particiones de datos, comunicaciones de datos, etc. Luego se intenta distribuir los cálculos de supercomputación a través de grandes matrices de tales CPU.

Llegar a los teraflops no será fácil.

Baja potencia:

El Internet de las cosas está llegando, con muchas CPU dispersas a lugares donde pueden detectar o controlar dispositivos. Estos lugares no siempre tienen un acceso conveniente a la energía, por lo que muchos de estos dispositivos funcionan con baterías o incluso con ultracondensadores. Un objetivo aquí es maximizar el tiempo que la CPU puede ejecutar la aplicación antes de usar toda la batería. Entonces, la pregunta es cómo hacer un cálculo, con la menor cantidad de energía. Una aplicación generalizada del consumidor para esto son los teléfonos celulares; todos quieren maximizar la duración de la batería. Esto también será necesario para las grandes supercomputadoras para hacer que su demanda de energía sea manejable y apropiada para grandes granjas de servidores (considere las nubes administradas por Google, Amazon, IBM, …) que manejan la sociedad moderna.

Hay mas. La mejor manera de descubrir lo que está de moda es leer las actas de la conferencia reciente de la comunidad de investigadores; p.ej,

  • Diseño e implementación de lenguaje de programación
  • Transacciones sobre programación de idiomas y sistemas

etc.

Creo que el paralelismo automático es bastante bueno.

http://www.mercurylang.org/docum

Cualquier cosa que combine análisis estático de código fuente sofisticado (por ejemplo, análisis de todo el programa) con compilación y optimización.