Как уже упоминалось, чисто функциональные языки по своей природе распараллеливаются. Однако императивные языки намного более интуитивны для многих людей, и мы глубоко укоренились в императивном устаревшем коде. Основная проблема заключается в том, что чисто функциональные языки явно выражают побочные эффекты, в то время как побочные эффекты неявно выражаются в императивных языках по порядку операторов.
Я считаю, что методы декларативного выражения побочных эффектов (например, в объектно-ориентированной среде) позволят компиляторам разложить императивные операторы в их функциональные отношения. Затем это должно позволить автоматически распараллелить код во многом таким же образом, каким был бы чистый функциональный код.
Конечно, точно так же, как сегодня все еще желательно писать определенный критичный к производительности код на языке ассемблера, все равно будет необходимо писать критичный к производительности явно параллельный код завтра. Однако такие методы, как я обрисовал в общих чертах, должны автоматически использовать преимущества многоядерных архитектур с минимальными затратами усилий разработчика.