Прослушал доклад Херба Саттера про параллельное программирование. Кого интересует параллельное программирование? А потому, что я по его книге (и по другой, Скотта Мейерса) много лет назад готовился к интервью.
Саттер сказал следующее:
раньше, если программа работала медленно, можно было год ничего не делать, и она сама собой начинала работать быстро: появлялся более быстрый процессор.
больше более быстрых процессоров не будет.
потому что прогресс процессорных технологий состоит в размещении большего количества транзисторов на квадратный сантиметр; но никто не знает, что с ними делать:
возрастающее количество транзисторов перестало влиять на быстродействие, потому что кэш еще большего размера уже ничего не дает, и более сложная оптимизация в процессоре тоже уже ничего не дает.
и тактовую частоту увеличить тоже нельзя, потому что электрические сигналы, распространяясь со скоростью света, не будут успевать долетать с одного конца чипа до другого (7 GHz).
поэтому из этого гигантского количества транзисторов будут собирать все больше и больше процессоров на одном чипе; например, можно прямо сейчас собрать сто штук Пентиумов 1 на чип.
так что, если взять медленную программу и год ничего не делать, то через год ее можно будет запустить на вдвое большем количестве процессоров; но это будет так же медленно, поскольку она неправильно написана и не будет их загружать.
И вот Саттер [в Майкрософте] придумывает, как встраивать в языки программирования такую поддержку параллелизма, чтобы эффективно писать на неогранниченное количество процессоров; по сравнению с ней обычные threads и locks будут напоминать программирование на ассемблере.
потому что машина с восемью процессорами (два слота для четырехкорных процессоров сегодня) - это совершенно другая машина, у которой случайно совпадает набор команд, но программировать ее надо совершенно по-другому.
Вот:

Саттер сказал следующее:
Вот:
