Поколение, затерянное на базаре

Эссе

«Качество появляется только тогда, когда кто-нибудь несёт ответственность лично»

  • Фредерик Ф. Брукс

Поколение, затерянное на базаре 1

Привет, хабр!

Предлагаю вашему вниманию вольный перевод эссе «» Пола-Хеннинга Кампа , повествующего нам о печальной судьбе поколения IT-профессионалов, выросших в период бума доткомов , а также о фундаментальных проблемах в UNIX, напрямую влияющих на качество и портабельность ПО. Обо всём по порядку.

Собор и базар

В своей заметке автор использует метафору собора и базара, описанную в эссе Эрика Рэймонда «», я нахожу уместным привести отрывок из текста признанного перевода эссе:

  • начало цитаты—

Linux — удивительная система. Кто бы мог подумать, что несколько тысяч разработчиков, разбросанных по всей планете и сотрудничающих только через Интернет, смогут создать операционную систему мирового класса. Я во всяком случае так не думал. К тому времени как Linux оказалась в поле моего зрения в начале 1993 года, я уже около десяти лет участвовал в разработке UNIX’a и открытых программ.

Linux перевернула мои представления о том, что я знаю. Я считал, что основным в разработке небольших инструментов для UNIX’a является их быстрое проектирование и эволюционирующее программирование в течение многих лет. И в то же время я верил, что по мере того как сложность разработки увеличивается, необходим более централизованный подход. Я верил, что разработка самого сложного программного обеспечения (например, операционных систем или просто больших инструментов, таких как Emacs) должна быть подобна строительству собора. Такие программы должны создаваться мастерами-индивидуалистами или небольшими группами волшебников, работающими в строгой изоляции, не допуская преждевременных бета-версий.

Меня очень удивил стиль разработки Линуса Торвальдса — частый выпуск релизов, доступность всех исходных текстов и терпимость к разнородным программам. Это совсем непохоже на размеренное строительство собора, сообщество Linux скорее напоминает шумный базар, с множеством различных подходов и направлений. То, что на этом базаре рождается согласованная стабильная операционная система, кажется чудом из чудес.

Меня потрясло, что этот базарный стиль работает и работает хорошо. Я не только участвовал в разработке индивидуальных проектов, но также пытался понять, почему в мире Linux’a не только не возникает беспорядка, но напротив он движется вперед со скоростью, которой строители собора могут только позавидовать.

20 стр., 9850 слов

Отличие эссе от рассказа

... оригинальной действительностью и способом изображения этой действительности. Отличия от романа Жанр эссе развивался параллельно с жанром романа. Последний, однако, ... их сюжеты. Резюмируя: здесь ты найдёшь преимущественно рассказы и эссе по научной фантастике, а также прозу о плохой ... бы форме она не была представлена – в виде рассказа, эссе или даже очерка? Согласись, что интересы у читателя бывают ...

К середине 1996 года мне показалось, что я начал понимать. Судьба предоставила мне прекрасный шанс проверить мою теорию. Это был проект разработки открытого программного обеспечения, который я сознательно провел в базарном стиле. Успех этого проекта превзошел все ожидания.

  • конец цитаты—
  • начало перевода—

Введение

Книга Эрика Рэймонда «», вышедшая тринадцать лет назад, пополнила наш словарный запас новой терминологией. Помимо этого, она предсказывала конец каскадной модели разработки ПО и закат эры крупных софтверных компаний, благодаря возникшему в народе движению за Свободное Программное Обеспечение.

После прочтения книги мне было над чем подумать, но она меня не убедила. С другой стороны, я имею прямое отношение к миру СПО, так что хоть я и не могу ничем помочь, было бы замечательно, если бы автор оказался прав.

Другая книжка, которая оказалось у меня в домике на берегу моря этим летом, также навевает думы. Она явно глубже книги Рэймонда (кстати, положительно ссылается на него), это . Причём сколько раз я кивал головой в знак согласия, наслаждаясь стилем письма Брукса и его умением подать материал, столько же раз я впадал в депрессию от прочитанного.

Эра доткомов

Тринадцать лет назад был достигнут апогей эры доткомов 90-х, когда каждый школьник был веб-программистом или каждый отчисленный из колледжа уже владел своим веб-стартапом. Я получил истинное наслаждение, когда пробовал обучать этих салаг фундаментальным профессиональным навыкам — созданию скриптов автоматического деплоя, системам контроля версий и так далее. Ностальгия, конечно — на самом деле было не до веселья.

Мы не можем отрицать, что вся эра доткомов явилась настоящим бедствием для IT/CS индустрии в целом и для UNIX в частности. Под удар попало качество программных продуктов.

У меня нет точных сведений, насколько IT индустрия увеличилась в объёмах на протяжении периода доткомов. Моя личная оценка такова, если считать количество всплывших на поверхность профессий, что наша ниша выросла на два порядка, то есть более чем на 10 000% .

Влюбиться в компьютеры просто — практически любой может накодить рабочую программу, ровно как практически любой может прибить гвоздём одну доску к другой, за несколько попыток уж точно. Проблема в том, что доля таких вот непрофессионально прибитых друг к другу досок крайне мала, если рассматривать рынок домашней мебели. А чтобы перейти от двух досок к прилично выглядящему комплекту стульев или к встроенному шкафу требуются талант, практика и образование. Те самые (10 000% — 100%) = 9 900% дополнительных процентов не имели ни опыта, ни образования, когда они пришли в IT отрасль. И до того, как у них появился шанс получить это, вечеринка закончилась и большинство осталось вообще без работы.

Я проявлю милосердие и замечу, что те, кто зацепился за должность, были, несомненно, наиболее талантливыми и наиболее умелыми из всех, но даже в этом случае нельзя отрицать, что они не состоялись как IT-профессионалы из-за отутствия жизненного опыта.

Просто запили

UNIX

3 стр., 1466 слов

Генетический код

... Генетическая информация Генетическая информация - программа свойств организма, получаемая от предков и заложенная в наследственных структурах в виде генетического кода. Предполагается, что становление генетической информации ... это так, то система жизнь - информация является вечной, бесконечной и бессмертной. Раскрытие генетического кода и установление закономерностей молекулярной биологии показали ...

Я обновил свой ноутбук. Вот уже как 18 лет у меня на нём стоит dev-версия FreeBSD и сборка минималистичной рабочей среды из исходников занимает весь день, потому что оно пытается выстроить логику и архитектуру из анархического мусора, именуемого Э. Рэймондом как базар.

Издалека кажется, что коллекция портов FreeBSD это нечто вроде карты для базара, чтобы пользователям FreeBSD было легче найти что-либо. На практике же эта «карта» состоит, в данный момент, из файлов с кратким описанием каждой палатки на базаре — несколько строк о том, что внутри имеется и где почитать про это подробнее. Ещё имеется 23 214 make-файлов, говорящих нам, что делать с каждой софтиной из тех, что мы найдём в палатках. Эти make-файлы пытаются информировать нас о возможных сценариях, различных выборочных опциях и их значениях по-умолчанию. Карта поставляется вместе с 24 400 patch-файлами, чтобы сгладить кривизну предлагаемых ручных поделок. Хотя, на самом деле, большинство этих патчей используется для исправления проблем переносимости ПО.

Наконец, эта карта услужливо говорит нам, что если мы хотим установить www/firefox , то сначала нужно выкачать devel/nspr , security/nss , databases/sqlite3 и так далее. Как только мы найдём их при помощи карты, а затем поищем их зависимости, а затем рекурсивно получим список зависимостей их зависимостей, то у нас наберётся список покупок на 122 пакета, которые нам обязательно нужны, прежде чем можно будет получить www/firefox .

Просто запили 1

Мы все любим компонентно-ориентированный подход к разработке ПО. Но даже в самом тривиальном случае, однако, методология повторного использования кода полностью чужеродна на базаре: программы в коллекции портов FreeBSD содержат как минимум 1 342 копипасты криптографических алгоритмов.

Если бы подобное игнорирование методологии повторного использования воплотилось бы в виде механизма самодостаточных и независимых пакетов с ПО, тогда был бы компромисс между дубликацией кода и лёгкостью управления пакетами. Но это явно не наш случай — пакеты образуют запутанную паутину из бессистемных зависимостей, что приводит к ещё большей дубликации кода и бесполезной трате ресурсов.

Вот ироничный пример: библиотека Сэма Лиффера graphics/libtiff лежит на пути к www/firefox , являясь одним из тех 122 пакетов в общей цепочке зависимостей. В то время как целевая программа — веб-браузер Firefox — не умеет отображать TIFF картинки Просто запили 2. Я не пытался выяснить, по каким причинам 10 пакетов из 122 требуют Perl и 7 требуют Python ; причём один из них, devel/glib20 , требует оба языка, даже не могу представить, зачем.

shared libraries

Вместо того, чтобы стандартизировать этот метод для всех никсов — например, реализовать в виде одного флага для команды — с участием Принципа Питера это вылилось в отдельную компетенцию libtool. Причём в данном случае этот принцип ощутимо хорошо приложился — исходный код для devel/libtool содержит 414 740 строк. Половина этого кода — тесты, что в целом похвально, но на деле это просто последствия Принципа Питера: тесты искусно разведывают функциональность сложной системы с целью выявить проблемы, которые вообще не должны были возникать.

3 стр., 1072 слов

Диктант изложение тест эссе личное письмо анкета открытка

... обучение, стимулирование, оценивание; Д) валидность, надежность, практичность, экономичность. Е) диктант, изложение, тест, эссе, личное письмо, анкета, открытка, сочинение; Ж) речевая компетенция, языковая компетенция, социокультурная компетенция, компенсаторная компетенция, ... – ролевая игра (Role Play). 14. Задания на написание личного письма (Informal Letter Writing). ЗАДАНИЕ 7. 1. Цели и задачи ...

Что ещё более досадно, 31 085 из тех строчек кода — нечитаемый корявый shell-скрипт, называется configure . Идея в том, что этот configure скрипт выполняет примерно 200 автоматических тестов, чтобы пользователь не был обременён ручными разборками с libtool. Это пипец бестолковая идея, которая была сполна окритикована ещё в 80-х, когда она только появилась. Бестолковая потому, что она позволяет исходному коду претендовать на якобы портабельность, прикрываясь configure скриптом как фасадом, вместо того, чтобы на самом деле обеспечить качественную портабельность.

Абсурдно, что идея с configure выжила.

В 1980 мы видели несколько реализаций UNIX: с поддержкой 24-битных указателей, Amdahl UTS (UNIX для IBM mainframe), целый букет более-менее грамотных реализаций SysV +BSD от производителей миникомпьютеров , недо-UNIX поделки от компаний вроде Data General , даже полноценный клон UNIX — Coherent от компании Mark Williams .

амбициозными

Сегодняшние UNIX/Posix-образные системы, даже если учитывать версию , с точки зрения наблюдателя из 1980 практически одинаковы. До сих пор 31 085 строчек кода configure скрипта для libtool проверяют наличие <sys/stat.h> и <stdlib.h> не смотря на то, что даже те никсы, в которых их не хватало, не имели достаточно памяти, чтобы запустить libtool; или места на диске, чтобы уместить 16 Мб исходного кода libtool.

Как же так случилось?

Ну, по причинам, которые никогда никого не волновали, программа autoconf была написана на допотопном языке макросов , что привело к такому внешнему вид тестов:

Абсурдно 1

Само собой разумеется, адекватные программисты никогда бы не пожелали добровольно копаться в этом, даже если бы у них был навык, поэтому эти скрипты для autoconf создаются методом копипасты, часто оказываясь затерянными среди черезмерно жирных стандартных макросов, покрывающих «стандартные тесты», о которых я упомянул выше.

Да, те самые тесты, проверяющие наличие проблем совместимости, с которыми никто не сталкивался уже лет 20 .

Это также объясняет, почему libtool проверяет не менее чем 26 различных имён компиляторов Fortran , которых в моей системе просто нет, а затем тратит ещё 26 тестов, чтобы выяснить, какие из этих 26 несуществующих компиляторов поддерживают флаг -g .

Это печальная реальность базара, восхваляемого Рэймондом в своей книге. Кучка старых прогнивших насквозь хаков, бесконечно скопипащенных поколением невежд а-ля «IT профессионалы». Можно прокричать им в ухо «IT архитектура!», но они всё равно не услышат.

Всё тлен, иначе говоря.

  • прим. переводчика

Другие недавно пришли к такому же мнению, как и Брукс. Некоторые пытались навязать своего рода здравомыслие или даже сложить закон формально, в виде технических стандартов, надеясь навести порядок и структуру на базаре. Все попытки эффектно провалились, потому что поколение затерянных на базаре дотком-вундеркиндов никогда не видело собора и, следовательно, не может даже представить себе, почему и зачем нам нужны эти соборы.

14 стр., 6794 слов

«Работа с соленным тестом в ДОУ»

... тестопластике комплексно воздействует на развитие ребёнка, кроме общепринятого мнения о развитии мелкой моторики можно говорить о том, что лепка из соленого теста способствует развитию творчества дошкольников. 1. Повышает ... можно отметить, что работа с соленым тестом в дошкольном детстве, все чаще и чаще прослеживается именно как средство развития творчества детей дошкольного возраста. Объектом ...

Это печальная ирония, конечно. Те, кому посвящена книга Брукса «Design of Design», найдут её совершенно непостижимой. Ну а для тех товарищей, кто хоть раз задумывался о том, что использование макросов m4 для конфигурации autoconf для генерации shell-скрипта для проверки наличия 26 компиляторов Fortran с целью собрать веб-браузер — это как-то немного через жопу, Брукс предложил хорошо аргументированную надежду, что у нас есть шанс всё исправить.

  • конец перевода—

Шанс всё исправить

UPD: Мне по всем каналам приходят советы по улучшению перевода и исправлению ошибок в тексте, я выражаю благодарность всем тем, кто нашёл время сделать это. Спасибо.

~Xlab