- PVSM.RU - https://www.pvsm.ru -

Мы приближаемся к пределу вычислительных мощностей – нам нужны новые программисты

Все сильнее ускорявшиеся процессоры привели к появлению раздутого софта, но физические ограничения могут заставить нас вернуться к более скромному варианту кода, которым мы пользовались в прошлом

Мы приближаемся к пределу вычислительных мощностей – нам нужны новые программисты - 1

Давно, ещё в 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 года Натан Мирволд, бывший однажды главным инженером у Билла Гейтса, вывел свои четыре закона программного обеспечения:

  1. ПО – как газ, оно расширяется, чтобы заполнить всю ёмкость.
  2. ПО растёт, пока не достигнет пределов, заданных законом Мура.
  3. Рост ПО делает возможным закон Мура – люди покупают новое железо, поскольку того требует ПО.
  4. ПО ограничено только человеческими амбициями и ожиданиями.

В то время, когда власть закона Мура подходит к концу, из законов Мирволда следует, что у нас есть только два варианта. Либо мы приструним свои амбиции, либо мы вернёмся к написанию более экономного и эффективного кода. Иначе говоря, назад в будущее.

Автор: Вячеслав Голованов

Источник [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