Просмотров: 6400

“По колено в идиотах”: путешествие в мир комментариев к Windows. #1


Я думаю, многие уже слышали из новостей про небольшой и забавный скандальчик в мире «больших разработчиков», который (конечно же) не обошелся без участия Microsoft. Один из активных разработчиков Linux Паоло Бонзини обнаружил двухсмысленное выражение в коде гипервизора HyperV, которое как оказалось впоследствии, был включёно в ядро Linux усилиями именно Microsoft. Новую константу 0xB16B00B5 для гостевой ОС Linux можно трактовать как слово «B16 B00B5», то есть как фривольное выражение «BIG BOOBS».

«Кто-то пытается пошутить, я полагаю?», — провокационно накручивает Linux-публику программер Паоло Бонзини.

Вокруг применения этого спорного словосочетания в качестве константы разгорелся острый конфликт, в который вмешались даже воинственные феминистки-разработчики из Red Hat, но, в конце концов, Microsoft принесла свои официальные извинения за этот инцидент:

«Мы благодарим сообщество за информацию по этому вопросу и приносим извинения за оскорбляющую строку. Мы отправили патч, который исправляет эту проблему, изменения вступят в силу со следующей версией ядра», — сказано в комментарии Microsoft.

На самом деле это пикантное недоразумение вызвало у меня достаточно смешанные чувства: во-первых, все эти словечки и трюки уже давно широко известны своим повальным применением, но никаких обид никому это как-то до сих пор не приносило. Во-вторых, ведь и в самом Linux полным полно ещё более странных выражений в качестве названий переменных и особенно в содержании комментариев к коду этой ОС. Да и в Microsoft подобные слова и даже откровенные ругательства, наравне с проклятием всего рода человеческого — не менее обычное дело для её исходных кодов.

Дабы в полной мере зафиксировать этот последний момент, я предлагаю совершить быстрый и стремительный набег на исходные коды ОС Windows. Предлагаю оценить общий стиль комментирования и «облико морале» в документировании кода Microsoft уже на её собственной «операционной» территории, прежде чем обвинять её якобы в «неприличных выходках» в стане её заклятого идеологического врага и конкурента — Linux.

На всякий случай предупреждаю: несмотря на то, что материал базируется на фактах (или том, что принято называть фактами), этот текст носит отчасти шутливый характер — автор статьи сам является активным и благодарным пользователем разных ОС от Microsoft, равно как и свободных ОС также (прежде всего FreeBSD). Поэтому написав этот текст я не преследовал цель кого-то как-то унизить (или напротив — возвеличить), ибо как уже было мною сказано, дела на обсуждаемом сегодня пикантном фронте в этих двух противостоящих лагерях, обстоят более-менее одинаково.

Цштвщцы Windows исходники шутка прикол программист комментарие комментирование прикол кода розыгрыш операционака big boobs переменные константы прикольные

Исходная точка: краткая история утечки

Но прежде чем начать препарацию уже малость задубевшего пациента, позвольте поспешно объяснить, возможно, немного офигевшему читателю, в чьи исходниках мы собственно собрались копаться. Речь идет о широко известной утечке исходного кода ОС Windows 2000 SP1 и NT4 SP6 произошедшей в начале 2004 года. А если говорить ещё точнее — тогда в сеть утекли фрагменты этих двух ОС, впрочем, достаточно большие, чтобы по ним составить своё мнение о специфике комментирования и именования переменных в исходниках этих лидирующих продуктов Microsoft.

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

Данная утечка в своих разжатых 627 мегабайтах содержит 28782 файлов, аккуратно разложенных специально обученными людьми из Редмонда в 2132-х папках. Сам, до предела ядрёный кернел, покойно лежит в папке \win2k\private\ntos\ke\ и написан в основном на АСМ-е, и там также есть его версии для i386, alpha, apx64, ia64.

Кроме того, позже уже вполне легально и открыто были выложены исходники Windows Research Kernel (WRK), которые содержат исходные коды основной части ядра Windows (NTOS), в кои мы также не преминули заглянуть. Напоследок добавлю, что WRK включает в себя большую часть исходных кодов NTOS ядра из последней выпущенной версии Windows на тот момент — то есть это уже родные каждому Windows XP/Server 2003.

Ну, вот и всё краткое вступление, оглядевшись среди дивного разнообразия исходных файлов, приступим к их ковырянию.

«Мы все идиоты»

Итак, ругательные слова (например, такие, как «fucks», «shits» и сотни вхождений «craps» и т.д.) в комментариях кода Windows встречаются довольно часто. Не буду засорять статью подобными цитатами непотребств и проклятий из самых недр исходников этой ОС, попеременно взывающих в самый разный адрес. Приведу лишь одно, самое известное и забавное вхождение одного из этих слов, содержащееся в файле из системы дневной пересборки системы:

Цитата из файла: private\windows\media\avi\verinfo.16\verinfo.h: 
 *       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 *       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 * !!!!!!!IF YOU CHANGE TABS TO SPACES, YOU WILL BE KILLED!!!!!!!
 *       !!!!!!!!!!!!!!DOING SO FUCKS THE BUILD PROCESS!!!!!!!!!!!!!!!!
 *       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 *       !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Знаю, я не один противник табуляций, тем более таких провокационно-ассиметричных, но makefile обычно ломается без всего этого. Там табуляция — по стандарту положена, поэтому проглотим «это» и продолжим.

Кроме проклятий и хитроумной системы сборки, в упомянутых исходниках встречается множество ссылок на неких «идиотов», и даже не побоюсь этого слова — «конченных придурков»: по комментариям понятно, что они чаще всего олицетворяют некие внешние силы по отношению к самой Microsoft, но встречаются и их внутренние разновидности — работающие в параллельных к данной команде разработчиков. Например, послания этого типа могут принимать такую форму (цитирую комментарии из файла private\ntos\rtl\heap.c , который, судя по его дате, последний раз редактировался аж в далеком 1989 году):

// The specific idiot in this case is Office95, which likes
// to free a random pointer when you start Word95 from a desktop
// shortcut.

Упоминаний об «идиотах вокруг нас» в исходниках так много, что я могу самозабвенно цитировать эти примеры до бесконечности, но я ограничусь лишь несколькими:

Цитата из файла: private\ntos\w32\ntuser\kernel\swp.c
// for idiots like MS-Access 2.0 who SetWindowPos( SWP_BOZO
//  and blow away themselves on the shell, then lets
//  just ignore their plea to be removed from the tray

Или:

Цитата из файла: private\shell\ext\ftp\ftpdrop.cpp:
//  We have to do this only because Exchange is a moron.

Как видим, придурки очень плотным внешним кольцом окружают разработчиков Microsoft, но что хуже, они уже затесались изнутри и в сам dev.team Windows 2000 — приведу ещё парочку примеров этого:

Цитата из файла: private\genx\shell\inc\prsht.w:
// we are such morons. Wiz97 underwent a redesign between IE4 and IE5
Цитата из файла: private\shell\shdoc401\unicpp\desktop.cpp: 
// We are morons. We changed the IDeskTray interface between IE4
Цитата из файла: private\shell\browseui\itbar.cpp:
// should be fixed in the apps themselves. Morons!

Забота о психическом здоровье коллег

Разработчики Windows 2000 очень трогательны в своём стремлении предупредить и обезопасить своих коллег по разработке от... собственной дури. Давайте посмотрим, какие удивительно информативные послания, полные боли и душевного страдания за несовершенство нашего мира они оставляют друг другу прямо в комментариях к своему же коду. Я насчитал всего около 4000 различных предупреждений и призывов быть осторожным, ещё совсем немного «БЫТЬ ОЧЕНЬ ОСТОРОЖНЫМ», и пару упоминаний-просьб быть по-возможности хотя бы снисходительным к автору откомментированного кода, и вот лишь некоторые примеры из них.

Цитата из файла: private\inet\mshtml\src\core\cdbase\baseprop.cxx:
// HACK! HACK! HACK! (MohanB) In order to fix #64710 at this very late
Цитата из файла: private\inet\mshtml\src\core\cdutil\genutil.cxx:
// HACK HACK HACK. REMOVE THIS ONCE MARLETT IS AROUND

Marlett конечно опасен, но есть вещи и поинтересней, например повсеместное использование нерукопожатного Goto внутрях Windows:

Цитата из файла: private\inet\mshtml\src\other\moniker\resprot.cxx:
// <HACK>
goto EndHack;
// </HACK>
Цитата из файла: private\inet\mshtml\src\site\layout\flowlyt.cxx:
// God, I hate this hack ...
Цитата из файла: private\inet\wininet\urlcache\cachecfg.cxx:
// Dumb hack for back compat. *sigh*
Цитата из файла: private\inet\wininet\urlcache\filemgr.cxx:
// ACHTUNG!!! this is a special hack for IBM antivirus software

Если позволит читатель, я не буду цитировать больше ничего из подсистемы inet , которая, безусловно, является рекордсменом на количество goto-хаков и ругательств в исходниках Windows 2000, я просто приведу фотографию разработчиков этой подсистемы именно для этой версии Windows 2000/IE 7:

Цштвщцы Windows исходники шутка прикол программист комментарие комментирование прикол кода розыгрыш операционака big boobs переменные константы прикольные

Поймите меня правильно: я не имею ничего против Индии, страны, которая демонстрирует уже на протяжении последних восьми лет один из самых быстрых в мире темпов роста зарплат в своей IT-сфере, просто глядя иногда на код, бывает очень полезным иметь возможность посмотреть напрямик в глаза человеку, его писавшего (что само по себе может отмести 80% потенциальных к нему вопросов). В силу этого я приветствую разработки подобно этой (или аналог оной для Windows).

Ну да, прогулявшись по внешним ссылкам, вернемся к другим примерам посланий о хаках в других местах Windows.

Цитата из файла: private\ispu\pkitrust\trustui\acuictl.cpp:
// HACK ALERT, believe it or not there is no way to get the height of the current
// HACK ON TOP OF HACK ALERT!
Цитата из файла: private\ntos\udfs\devctrl.c:
// Add the hack-o-ramma to fix formats.
Цитата из файла: private\shell\shdoc401\unicpp\sendto.cpp:
// Mondo hackitude-o-rama.
Цитата из файла: private\ntos\w32\ntcon\server\link.c:
// HUGE, HUGE hack-o-rama to get NTSD started on this process!

Хакодром имеет место быть во всех подсистемах Windows, если верить этим комментариям. Но вот выборочные примеры особенно пронзительных предупреждений:

Цитата из файла: private\shell\lib\util.cpp:
// TERRIBLE HORRIBLE NO GOOD VERY BAD & UGLY HACK
Цитата из файла: private\ntos\w32\ntuser\client\dlgmgr.c:
// HACK OF DEATH: no one survives here
Цитата из файла: private\ntos\w32\ntuser\client\nt6\user.h:
// The magnitude of this hack compares favorably with that of the national USA debt.

Там же замечательный библейский комментарий, который открывает упомянутый файл:

// Abandon all hope, ye who enter here.

А также такое описание к коду ошибки задокументированной там же, надо полагать вполне необходимой для всех Windows-систем:

// Impossible Happened

И текст вывода сообщения рядом гласит:

"Fatal error: Bad Magic"

Так вот откуда берутся известные своей неудобоваримостью ошибки Windows вроде этих:

Цштвщцы Windows исходники шутка прикол программист комментарие комментирование прикол кода розыгрыш операционака big boobs переменные константы прикольные

Интересно, что я не нашел никаких расистских упоминаний в исходниках, упоминаний Билла Гейтса или самой Windows. Правда, порой встречаются весьма странные, я бы даже сказал наркотические комментарии, вот как этот, например:

Цитата из файла: private\shell\ext\tweakui\genthunk.c:
//  CallProc32W is insane. It's a variadic function that uses
//  the pascal calling convention. (It probably makes more sense
//  when you're stoned.)

Окончание статьи надобно читать тута.

dev.by, 2012

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru pikabu.ru blogger.com liveinternet.ru livejournal.ru google.com bobrdobr.ru yandex.ru del.icio.us

Подписка на обновления блога → через RSS, на e-mail, через Twitter
Теги: , , , , , , ,
Эта запись опубликована: Среда, 8 августа 2012 в рубрике ПрограммированиеМнения.

1 комментарий

Следите за комментариями по RSS
  1. Ссылки не соответствуют тому на что должны указывать.

Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Зарегистрировать/комментатор

Для регистрации укажите свой действующий email и пароль. Связка email-пароль позволяет вам комментировать и редактировать данные в вашем персональном аккаунте, такие как адрес сайта, ник и т.п. (Письмо с активацией придет в ящик, указанный при регистрации)

(обязательно)


⇑ Наверх
⇓ Вниз