Да, это верно. Вы привели несколько ярких примеров, чтобы противостоять этому тезису, но имейте в виду, что эти примеры разработаны большим сообществом достаточно знающих людей, которые более или менее осведомлены о передовой практике в программировании.
Люди, работающие с ядром, знают о различных архитектурах ЦП, проблемах с многоядерностью, строках кэша и т. Д. В настоящее время ведется интересная дискуссия о включении поддержки аппаратных счетчиков производительности в основное ядро. Это интересно с «политической» точки зрения, поскольку существует конфликт между людьми из ядра и людьми, имеющими большой опыт в мониторинге производительности.
Люди, разрабатывающие Firefox, понимают, что браузер должен быть «легковесным» и быстрым, чтобы быть популярным. И в какой-то степени им удается хорошо выполнять свою работу.
Предполагается, что новые версии программного обеспечения будут работать на более быстром оборудовании, чтобы иметь такой же пользовательский интерфейс. Но справедлива ли цена? Как мы можем оценить, была ли функциональность добавлена эффективным способом?
Но, возвращаясь к основному предмету, многие люди после окончания учебы не знают о проблемах, связанных с производительностью, параллелизмом (или, что еще хуже, им все равно). Долгое время закон Мура обеспечивал стабильное повышение производительности. Таким образом, люди писали посредственный код, и никто даже не заметил, что что-то не так с неэффективными алгоритмами, структурами данных или более низкоуровневыми вещами.
Затем вступили в силу некоторые ограничения (например, тепловой коэффициент полезного действия), и больше невозможно получить «легкую» скорость за несколько долларов. Люди, которые зависят только от улучшения производительности оборудования, могут получить холодный душ. С другой стороны, люди, которые хорошо разбираются в алгоритмах, структурах данных, проблемах параллелизма (их довольно сложно набирать ...), будут продолжать писать хорошие приложения, и их ценность на рынке труда будет расти.
Закон Вирта следует толковать не только буквально, но и о плохом раздутии кода, нарушении правила «оставь его простым» и о людях, которые упускают возможность использовать «быстрое» оборудование.
Кроме того, если вы работаете в области высокопроизводительных вычислений, эти проблемы становятся совершенно очевидными.