- PVSM.RU - https://www.pvsm.ru -
Давно, ещё в 1960-х, Гордон Мур [1], один из основателей компании Intel, заметил, что количество транзисторов, которые можно уместить на кремниевом чипе, удваивается примерно каждые два года. Поскольку количество транзисторов связано с вычислительной мощностью, это означало, что, по сути, вычислительная мощность удваивается каждые два года. Так родился закон Мура [2], обеспечивший для работающих в компьютерной индустрии людей – по крайней мере, для тех, кому ещё нет сорока – такую же надёжную основу, какую ньютоновские законы движения обеспечели для инженеров-механиков.
Но у него, однако, есть одно отличие. Закон Мура – это всё же просто эмпирическая корреляция, за которой наблюдали в определённый период времени, и мы, наконец, подходим к пределу её применимости. В 2010 году сам же Мур предсказал, что законы физики остановят это экспоненциальное увеличение. «Что касается размеров транзисторов, — сказал он, — видно, что мы приближаемся уже к размеру атомов, представляющих собой фундаментальный барьер, однако до этого момента ещё сменится два-три поколения – однако дальше предсказывать развитие событий мы не в состоянии. У нас есть ещё 10-20 лет до того, как мы дойдём до фундаментального предела».
И вот мы дошли до 2020 года, и идея о том, что у нас всегда будет достаточно мощное вычислительное оборудование, подходящее для всё расширяющихся потребностей, начинает казаться слишком самоуверенной. И поскольку для тех, кто занимается этим бизнесом, это было очевидно уже несколько десятилетий, было проведено множество исследований, касающихся хитроумных способов запихивания в машины всё больших вычислительных мощностей, к примеру, многоядерные архитектуры, в которых у CPU есть два или более отдельных вычислительных модулей, или «ядер». Всё это делалось в надежде отложить тот ужасный день, когда у кремниевых чипов закончится место для манёвра (к примеру, новый Apple Mac Pro работает на 28-ядерном процессоре Intel Xeon). И, естественно, бешеными темпами развиваются исследования квантовых компьютеров, что, в принципе, может стать эпохальным прорывом.
Но для вычисления требуется комбинация из железа и ПО, и одно из предсказуемых последствий закона Мура заключалось в том, что он сделал программистов ленивыми. Написание ПО – это сложное ремесло, и некоторым оно даётся лучше, чем другим. Они пишут более элегантный, и, что важнее, более проворный код, который и исполняется быстрее. В ранние дни, когда железо было относительно примитивным, мастерство программиста имело большое значение. К примеру, когда Билл Гейтс был ещё пацанёнком, он написал интерпретатор BASIC для одного из самых первых микрокомпьютеров TRS-80. Поскольку у машины была крохотная по размеру ROM, Гейтсу пришлось уложить всю программу в 16 Кб. Они писал её на ассемблере, чтобы увеличить эффективность и сэкономить место; есть даже легенда, что многие годы спустя он мог процитировать всю программу по памяти.
И в ранних годах вычислительных систем можно найти тысячи подобных историй. Но с воцарением закона Мура необходимость в экономном, бережливом коде постепенно исчезала, и мотивация изменялась. Программирование превратилось в промышленную дисциплину для «инженеров ПО». Создание таких популярных программных экосистем, как операционные системы и коммерческие программы, требовало участия больших команд разработчиков; на этом основании выросла бюрократия из менеджеров проектов и исполнительных директоров. Крупные программные проекты превратились в марши смерти, которые ярче всего описал Фред Брукс в своей знаменитой книге "Мифический человеко-месяц [3]", опубликованной в 1975 году, и с тех пор всё время переиздающейся по весьма уважительной причине – она до сих пор актуальна. А в процессе всего этого ПО раздувалось и становилось неэффективным.
Но это не имело значения, ведь железо всегда выдавало новые вычислительные мощности, скрывавшие проблему раздутого программного обеспечения [4], или bloatware. Добросовестных программистов это часто бесило. «Единственным следствием появления мощного железа, которое я наблюдаю, — писал один из них, — является то, что программисты пишут на нём всё больше и больше раздувающиеся программы. Они становятся ленивее, и поскольку железо достаточно быстрое, они не пытаются изучать алгоритмы или оптимизировать код. Это безумие [5]!»
Так и есть. В лекции 1997 года Натан Мирволд, бывший однажды главным инженером у Билла Гейтса, вывел свои четыре закона программного обеспечения:
В то время, когда власть закона Мура подходит к концу, из законов Мирволда следует, что у нас есть только два варианта. Либо мы приструним свои амбиции, либо мы вернёмся к написанию более экономного и эффективного кода. Иначе говоря, назад в будущее.
Автор: Вячеслав Голованов
Источник [6]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/343972
Ссылки в тексте:
[1] Гордон Мур: https://ru.wikipedia.org/wiki/Мур,_Гордон
[2] закон Мура: https://ru.wikipedia.org/wiki/Закон_Мура
[3] Мифический человеко-месяц: https://ru.wikipedia.org/wiki/Мифический_человеко-месяц
[4] раздутого программного обеспечения: https://ru.wikipedia.org/wiki/Раздутое_программное_обеспечение
[5] Это безумие: https://olimex.wordpress.com/2013/08/23/do-we-really-need-faster-computers-to-write-more-bloated-software/
[6] Источник: https://habr.com/ru/post/484688/?utm_source=habrahabr&utm_medium=rss&utm_campaign=484688
Нажмите здесь для печати.