https://habrahabr.ru/hub/analysis_design/
O(x) сложность алгоритмов
http://bigocheatsheet.com/
Надо потренроваться
https://www.hackerrank.com/interview/interview-preparation-kit
Программерский юмор
http://developerslife.ru/
https://habrahabr.ru/post/311994/
https://habrahabr.ru/post/235281/
Грабли, на которые не стоит наступать
http://habrahabr.ru/post/219651/
Идея о том, что новый код лучше старого, явно абсурдна. Старый код использовался. Он протестирован. Множество багов было найдено и они были исправлены. И с этим все в порядке. Код не плодит баги просто валяясь на жестком диске. Как раз наоборот! Программное обеспечение — это что, старый Dodge Dart, который ржавеет просто простаивая в гараже? Это что, плюшевый мишка, который плохо выглядит, если не сделан исключительно из нового материала?
- Спойлер
- Наконец выходит первая публичная бета-версия Netscape 6.0. Версии 5.0 не существует. Предыдущий мажорный релиз — версия 4.0 — был выпущен почти три года назад. Три года — это невероятно большой срок в мире интернета. Все это время в Netscape сидели и беспомощно наблюдали за тем, как уменьшается их доля рынка.
Это немного подло с моей стороны критиковать их за столь долгое ожидание между релизами. Они ведь не специально это сделали, правда?
Неправда! Именно так они и сделали. И этим они совершили единственную самую большую стратегическую ошибку, которую когда-либо может сделать софтверная компания.
Они решили переписать код с нуля.
Netscape не была первой компанией, которая сделала такую ошибку. Borland совершила ее при покупке Arago, решив превратить ее в dBase for Windows — проект, который потребовал столько времени, что все вкусняшки достались Microsoft Access; и потом они совершила ее еще раз, переписав Quattro Pro с нуля и поразив всех тем, как мало программа умела. Microsoft сама почти повторила эту же ошибку при попытке переписать Word for Windows с нуля в обреченный проект под названием Pyramid, который был свернут, выброшен и забыт. На счастье Microsoft, работа над старым кодом не прекращалась, и у них было что выпускать, так что все это обернулось финансовой катастрофой, но не стратегической.
Мы — программисты. А программисты в душе — архитекторы, и первое, что они хотят сделать, когда попадают на дело, — пройтись бульдозером по всему и сделать что-то грандиозное. Мы не в восторге от последовательных улучшений: подкрутить, подправить.
Есть коварная причина, по которой программисты всегда хотят выкинуть весь существующий код и начать писать заново. Они думают, что старый код — это бардак. А вот и интересное наблюдение: скорее всего они ошибаются. Причина, по которой они думают, что код ужасен, кроется в основном, фундаментальном законе программирования:
Читать код сложнее, чем его писать
Вот поэтому так сложно переиспользовать код. Вот поэтому у каждого в команде есть своя функция для разбиения строки в массив. Они пишут свои функции из-за того, что написать собственную функцию — проще и веселее, чем разобраться в работе старой.
В подтверждение этой аксиомы можно спросить практически у любого современного программиста о коде, над которым он работает. «Это просто чертов бардак», — скажет он. «Все, что я хочу, так это выкинуть его к черту и начать заново».
Почему же бардак?
«Ну», — скажет он, «глянь вот на эту функцию. Она две страницы в длину! Тут почти все лишнее. Да я даже не знаю зачем здесь половина этих API-вызовов.»
Перед выходом нового менеджера таблиц для Windows от Borland пресса зацитировала до дыр похвальбы Филиппа Кана — основателя компании — о том, насколько Quattro Pro будет круче, чем Microsoft Excel, так как он был переписан с нуля. Полностью новый код! Как будто код ржавеет.
Идея о том, что новый код лучше старого, явно абсурдна. Старый код использовался. Он протестирован. Множество багов было найдено и они были исправлены. И с этим все в порядке. Код не плодит баги просто валяясь на жестком диске. Как раз наоборот! Программное обеспечение — это что, старый Dodge Dart, который ржавеет просто простаивая в гараже? Это что, плюшевый мишка, который плохо выглядит, если не сделан исключительно из нового материала?
Вернемся обратно к двухстраничной функции. Да, я знаю, это простая функция для отображения окна, но она обросла мусором и прочим барахлом, и никто не знает почему. Ну так я скажу почему: это фиксы багов. Этот кусок исправляет баг, который случился у Нэнси, когда она пыталась установить всё на машину без IE. Этот — тот баг, который происходит при нехватке памяти. А этот — когда файл находится на дискете, а юзер ее выдернул посреди всего. Вот этот вот вызов LoadLibrary ужасен, но благодаря нему код работает на старых версиях Windows 95.
Прошли недели реального времени использования программы до того, как каждый из этих багов был найден. У программиста могло уйти по несколько дней на их воспроизведение и исправление. Часто бывает так, что исправление — это всего одна строка кода, а может даже и пара символов, но в эти два символа вложено много времени.
Когда выбрасываешь код и пишешь его заново, ты выбрасываешь весь этот багаж знаний. Все эти пофикшеные баги. Годы работы программистов.
Ты выбрасываешь свое преимущество на рынке. Ты даришь два или три года своим конкурентам, а это, поверь мне, много времени в контексте разработки ПО.
Это очень опасная ситуация, когда приходится выпускать старую версию кода из года в год при абсолютном отсутствии возможности стратегических изменений или реакции на запросы рынка. А все из-за того, что новый продукта не готов. Это все равно, что просто закрыть бизнес на все это время.
Это использование огромных сумм денег для написания кода, который уже есть.
Какой же из этого выход? По общему мнению код Netscape был действительно плох. Ну, он мог быть плохим, но, знаешь что? Он работал совсем даже неплохо на диком количестве реальных компьютерных систем.
Когда программисты говорят, что их код — ужасный бардак (а они всегда так говорят), это обычно означает три типа проблем.
Первая — проблемы архитектуры. Код неотрефакторен. Код, отвечающий за сетевые соединения, вдруг выбрасывает из ниоткуда собственные диалоговые окна; это должно обрабатываться в коде UI. Такие проблемы могут быть исправлены по одной: аккуратным рефакторингом и изменением интерфейсов. Это может сделать один программист работая аккуратно и внедряя свои изменения целиком, никому не мешая. Даже довольно внушительные изменения архитектуры можно сделать без выбрасывания кода. В проекте Juno мы однажды провели несколько месяцев переделывая архитектуру: просто перемещая все вокруг, подчищая все, создавая осмысленные базовые классы и интерфейсы между модулями. Но мы делали это аккуратно и с текущим кодом, мы не вносили новых багов и не выбрасывали работающий код.
Вторая проблема, по которой программисты считают своей код бардаком, — неэффективность. Считалось, что у Netscape плохой код рендеринга. Но это затрагивало только небольшую часть проекта, которую можно оптимизировать или даже переписать. Но не надо переписывать всё. При оптимизации ради скорости 1% работы дает 99% результата.
И третье — код может быть просто невероятно отвратительным. Однажды я работал над проектом, в котором всерьез использовался тип данных FuckedString. В другом проекте договорились начинать имена свойств с "_", но позже решили перейти к более стандартному «m_». Поэтому половина функций начиналась с "_", а половина с «m_», и это было отвратительно. Честно, это проблемы, которые решаются пятиминутным написанием макросов в Emacs, а не переписыванием с нуля.
Важно помнить, что когда берешься писать с нуля нет никакого основания полагать, что получится лучше, чем было первый раз. Во-первых, скорее всего команда программистов уже не та, что работала над первой версией, так что «больше опыта» не будет. Все закончится тем, что будут сделаны все старые ошибки, а также некоторые новые, которых в оригинальной версии не было.
Старая мантра "делай, чтобы выбросить" очень опасна в применении к масштабному коммерческому проекту. Когда экспериментируешь с кодом, можно выпилить функцию, написанную две недели назад, в связи с находкой лучшего алгоритма. Тут все в порядке. Можно отрефакторить класс, чтобы его было проще использовать. Тут тоже все в порядке. Но выбросить всю программу — это опасная ошибка, и если бы Netscape был под наблюдением компании с опытом в индустрии ПО, они, возможно, не выстрелили бы себе в ногу с таким рвением.
Лурк про страуступа, александровску и т.д.
Осторожно, маты!
http://lurkmore.to/_/118731#mws_GDP3wId
- Спойлер
- СТРАУСТРУП и ЛЯМБДА
Жил-был СТРАУСТРУП. Шел обычный, скучный день. СТРАУСТРУП занимался рутинными вещами, такими как ебля своей трехсоткиллограмовой матери в зад. Только успев кончить матери в пердак и вынуть измазанный в говне хуй, СТРАУСТРУП услышал стук в дверь. Не заметив, что его мать умерла от сердечного приступа еще 3 дня назад, он пошел открывать дверь и вышел на веранду. На веранде никого не было. СТРАУСТРУП, было, уже начал подозревать СТЕПАНОВА в очередной подъебке, но вдруг, из под крыльца что-то вылетело и понеслось на него. От перевозбуждения СТРАУСТРУП уронил скрепленнеые скотчем очки на пол и смиренно ждал, что будет дальше. ЛЯМБДА, с огромной скоростью пролетела мима СТРАУСТРУПА, квадратной скобкой отпихнула его и заползла в дом, крепко заперев дверь. ЛЯМБДА ясно дала понять, что она приняла дом в качестве аргумента, но отказывается возвращать функцию, которая принимает ПИЗДЮЛИ в качестве аргумента и возвращает дом. ЛЯМБДА заползла на стул перед компьютером и свернувшись в уютный клубок, зашла на ДВАЧ. СТРАУСТРУП знал ЛЯМБДУ. По крайней мере, это слово он точно слышал, но не знал, что оно значит. Он очень удивился, когда недавно узнал, что ЛЯМБДУ включили в НОВЫЙ СТАНДАРТ, принятый полгода назад. СТРАУСТРУП понял, что надо выгнять ЛЯМБДУ из дома, потому что желание в очередной раз залезть на мамочку было слишком велико. Будучи первоклассным инженером, СТРАУСТРУП начал искать решение проблемы. Для разминки он решил повторить таблицу умножения до 12 на 12. Он 2 часа стоял на одном месте и смотрел в никуда, потея как свинья. Пока он боролся с таблицей умножения, из за угла вышел измазанный в говне АНДРЕЙ АЛЕКСАНДРЕСКУ и осмотрелся. Рядом стояли несколько зданий, включая психбольницу для буйнопомешанных и тюрьму. АНДРЕЙ задумался и понял, что в округе нет ни одного настолько больного и гнилого человека, чтобы продать ему свою книгу. Небрежно посвистывая, АНДРЕЙ удалился. СТРАУСТРУП закончил разминку и начал думать, как прогнать ЛЯМБДУ. Вдруг его осенило. Его дом был скомпилирован последней версией GNU G++, которая поддерживает ЛЯМБДУ. Именно поэтому, ЛЯМБДА и смогла проникнуть к нему в дом. СТРАУСТРУП понял, что ему нужна более старая версия G++, которая не поддерживала ЛЯМБДУ и тогда, при попытке компиляции дома, ЛЯМБДУ выкинет вместе с СООБЩЕНИЯМИ ОБ ОШИБКАХ. Но старую версию было негде взять. СТРАУСТРУП нанял ФУНКЦИОНАЛЬЩИКА СО ШТАНГОЙ за 5 тысяч рублей. Так как компьютера у них не было, ФУНКЦИОНАЛЬЩИК вначале написал на бумажке компьютер в 1 строчку НА ХАСКЕЛЕ:
Computer = Computer
ФУНКЦИОНАЛЬЩИК сожрал бумажку и высрал работающий системный блок с ВОДЯНЫМ ОХЛАЖДЕНИЕМ и предустановленой WINDOWS 7. На компьютере уже был установлен АЛАН ВЭЙК и ХАСКЕЛЛ ПЛАТФОРМ. Корпус был красного цвета, с наклейкой ТУРБО на прозрачной боковой крышке. Затем ФУНКЦИОНАЛЬЩИК написал в 2 строчки старую версию G++:
Compiler :: [C++SourceCode] -> [ExecutableFile]
Compiler source =(Link . Compile) source
СТРАУСТРУП взял исходники своего дома и запустил компиляцию. Компилятор начал дристать СООБЩЕНИЯМИ ОБ ОШИБКАХ. СТРАУСТРУП попытался разобрать первую строчку, но увидев такое, дальше лезть не решился(таблица умножения и так вымотала его):
std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::less<std::basic_string<char, std::map<std::basic_string<std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>,std::allocator<char> > const, std::basic_string<char, std::char_traits<char>,std::allocator<char> > > > >char, std::char_traits<char>, std::allocator<char> >,std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>,std::allocator<char> > const, std::basic_string<char, std::char_traits<char>,std::allocator<char> > > > >std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>,std::allocator<char> > const, std::basic_string<char, std::char_traits<char>,std::allocator<char> > > > >
Высрав 10 000 СТРОК СООБЩЕНИЙ ОБ ОШИБКАХ, компилятор скончался от ЛЕНИВЫХ ВЫЧИСЛЕНИЙ ПРЯМОЙ КИШКИ и из монитора вылетела ЛЯМБДА. Придерживая круглые скобки квадратными скобками, ЛЯМБДА в ужасе съеблась под ближайший камень. Ей еще долго не захочется принимать и возвращать значения. Довольный СТРАУСТРУП плюнул в руку, чтобы наслюнявить хуй и уже решился залезать на мамочку, но передумал и решил вначале запостить эту историю на ДВАЧ.
АЛЕКСАНДРЕСКУ
Жил-был АНДРЕЙ АЛЕКСАНДРЕСКУ. У АНДРЕЯ всё всегда было через ЖОПУ. Мать АНДРЕЯ была наркоманкой. Список ее психических расстройств, венерических заболеваний и наркотиков, на которых она сидела, был длиннее типичного ресторанного меню. Когда пришло время рожать, каково-же было удивление врачей, когда АНДРЕЙ вылез из ЖОПЫ и каким-то образом умудрился убить и частично съесть двух медсестер. АНДРЕЙ был трудным ребенком. Когда АНДРЕЙ еще находился на лечении, на пятнадцатом году шоковой терапии и после второй лоботомии, он вдруг направил свое внимание на языки программирования. Большую часть дня, АНДРЕЙ бился головой о стену, пытался откусить кусок своего тела и ел свои экскременты. Но в перерывах между приступами, АНДРЕЙ листал книги и искал... Он прочитал про десятки языков программирования, но они не вызывали у него никакого интереса, потому что, они не были достаточно извращенными для его тонкого вкуса. Внезапно АНДРЕЙ увидел ВЫЧИСЛЕНИЕ ЧИСЕЛ ФИБОНАЧЧИ ВО ВРЕМЯ КОМПИЛЯЦИИ НА C++ и замер. В его уставшей, больной голове что-то щелкнуло - он нашел, что искал. Он начал читать книги по C++. Чем дальше он проникал в тайны C++, тем больше он понимал, что этот язык создан для него. Мерзкие извращения, которые он наблюдал на страницах, глубоко резонировали с его истерзанной и едко ненавидящей все светлое душой. Его глаза наливались кровью от удовольствия и слезы текли по щекам, от осознания, что на свете есть люди, не намного менее больные, чем он. АНДРЕЙ понимал, что скоро ему сделают третью лоботомию и тогда он вряд ли сможет написать книгу. Времени до третьей лоботомии оставалось немного и АНДРЕЙ решил начать писать книгу прямо сейчас. "THE TIME IS NOW, ANDREI", сказал он вслух самому себе на ломаном английском с выблядски кривым акцентом и начал писать. Вначале он не знал, в чем суть того, что он пишет. Но со временем картина стала ясной как день. АНДРЕЙ взял самый гнилой, уродский и омерзительный язык программирования и решил довести его до уровня сумасшествия, до сих пор невиданного в мире людей. Первый (и последний) технический рецензент его книги, сошел с ума и убил всю свою семью, после прочтения нескольких глав. Узнав об этом АНДРЕЙ смеялся, пока не потерял сознание. АНДРЕЙ понимал, что все идет как надо. Сразу после того, как он дописал последнюю главу, ему сделали последнюю лоботомию и писать книги ему больше не хотелось. Представители издателя взяли книгу АНДРЕЯ и, согласившись ее издать, спросили у него, как бы он хотел ее назвать. На ломаном, кривом английском он ответил: "MODERN C++ DESIGN: GENERIC PROGRAMMING AND DESIGN PATTERNS APPLIED BY ANDREI ALEXANDRESCU". Его акцент был настолько уебищен, что представители издателя начали ржать, с такой силой, что моча начала струиться по их ногам. Но, слишком поздно они поняли, что это была моча АНДРЕЯ. Они не знали, что таким образом он помечает своих жертв, перед тем, как их убить. АНДРЕЙ успел убить одного, но другому удалось спастись, хоть он и лишился уха.
Через несколько лет АНДРЕЯ выпустили. 20 лет шоковой терапии и 3 лоботомии, все-таки, смогли немного успокоить его. Он, конечно продолжал убивать, но редко, и в основном мелких грызунов.
Наступил обычный, скучный день. Скучным он мог быть для кого угодно, но не для АНДРЕЯ. Ведь у него диагностировали шизофрению еще на внутриутробной стадии. Книга продавалась не особо хорошо. В мире оказалось не так уж много запредельно больных людей, готовых ее купить. Уже 2 месяца у АНДРЕЯ почти не было денег и он ел блюдо собственного изобретения - ТУАЛЕТНАЯ БУМАГА ПО ФЛОТСКИ. Блюдо представляло собой собачий корм с вареной туалетной бумагой. Роялти с продаж книги капали ему на банковский счет, но очень вяло. АНДРЕЙ уже отошел от третьей лоботомии и решил взять дело в свои руки. Он положил в сумку с десяток экземпляров MODERN C++ DESIGN и пошел на улицу, с надеждой продать хотя бы несколько. Хотя бы один. Если это удастся, то наконец можно будет купить КЕТЧУП. Подумав о КЕТЧУПЕ, АНДРЕЙ улыбнулся, но повернувшись, чтобы открыть дверь, увидел свое отражение в зеркале. Выражение лица, которое получилось из за улыбки, было настолько ужасающим, что АНДРЕЙ отшатнулся. Он вышел на улицу и стал бродить по улицам. АНДРЕЙ увидел здание, в котором было множество компаний по разработке программ и направился к нему. Там АНДРЕЯ уже знали и вызвали охрану раньше, чем он успел войти. АНДРЕЙ удивился, потому что он никогда не был здесь. Из здания вышел человек и сказал АНДРЕЮ, чтобы он убирался. Человек объяснил, что однажды, один из программистов, работавших в здании, купил себе MODERN C++ DESIGN и принес на работу. Прочитав 5 страниц, этот человек обезумел и успел убить трех коллег, до того как натолкал себе в жопу скрепок и повесился в полностью пустом помещении. После этого, запятнанную кровью книгу, подобрал другой разработчик и цепь событий повторилась. Как вирус, книга распространялась по всему зданию. В результате этой бойни, 30 человек погибли ужасными смертями, перед тем, как кто-то сообразил, что нужно уничтожить книгу. АНДРЕЙ понял, почему его не хотят пускать, но решил попытать судьбу и все-же проникнуть в здание. С раззадоренным еблом, он попытался пробежать в дверь, но охранник ударил его дубиной по еблу, выбив несколько зубов, после чего добил по яйцам, пнув достаточно много раз, чтобы наблюдающие сбились со счета. АНДРЕЙ сполз с крыльца и потерял сознание.
Очнулся он уже под вечер. Первый опыт продажи был не очень удачен, но может во второй раз повезет? АНДРЕЙ шел по улице, страстно разговаривая сам с собой и вдруг увидел двух человек. Подсознательно он узнал их, но не мог вспомнить. Трясясь от страха он подошел к ним и предложил купить книгу. ПОЛ ГРЭМ и ПИТЕР НОРВИГ взяли его книгу и стали листать. Они поняли, с кем они имеют дело. АНДРЕЙ смотрел куда-то в сторону и незаметил первого удара, который пришелся по голове. АНДРЕЙ даже в начале не понял, что происходит, потому что били его как никогда сильно. Удары сыпались со всех сторон и, услышав хруст своих ребер, АНДРЕЙ осознал, что вероятно, живым ему не уйти. Это осознание ввергло его в истерику, но он ничего не мог поделать, кроме того, как обосраться и изваляться в собственном говне. Увидев это ПОЛ ГРЭМ и ПИТЕР НОРВИГ побрезговали добивать жалкого РУМЫНСКОГО барана и оставили его в покое. Грязно выругавшись, АНДРЕЙ поднялся и пошел по улице. Завернув за угол, он увидел СТРАУСТРУПА, стоящего на одном месте и напряженно о чем-то думающего. АНДРЕЙ осмотрелся, но не обнаружив потенциальных покупателей, развернулся и пошел домой, насвистывая РУМЫНСКУЮ НАРОДНУЮ ПЕСНЮ.
СТЕПАНОВ
Править ShortUrl Внутренняя ссылка
Жил-был СТЕПАНОВ. СТЕПАНОВ был ШУТНИКОМ. Такова была его природа. Очень любил ШУТИТЬ. В отличии от СТРАУСТРУПА и АЛЕКСАНДРЕСКУ, СТЕПАНОВ был психически здоров, и, естественно, ненавидел C++ всем сердцем. Однажды СТЕПАНОВ ПОШУТИЛ очень крепко. Он упоролся чем-то очень серьезным и написал STL. Вещь получилась комично абсурдная. СТЕПАНОВ провел много времени смеясь над тем, какое-же убогое и тупое говно - язык C++ и рассматривал STL исключительно как гротескную шутку. СТЕПАНОВ уже успел забыть про STL, но вдруг его вызвали на заседание Коммитета Стандартизации. После того как СТЕПАНОВ вышел с заседания, он начал ржать как умалишенный. "Эти уебки...", думал СТЕПАНОВ, сотрясаясь от смеха, "...приняли STL и включили ее в стандарт, мать моя женщина". Он не мог остановиться и повалился на пол. Смех его не отпустил и на полу. Звучание его смеха из обычного человеческого, превратились в какую-то неземную смесь звуков карканья вороны, со звуками блюющего носорога. Из за смеха у СТЕПАНОВА началась аритмия и пришлось вызвать врача. Вернувшись домой, СТЕПАНОВ уже не смеялся, после того, как он представил себе последствия своей ШУТКИ. СТЕПАНОВ понял, что живые люди будут писать код на STL. А вдруг кто-то вдохновится примером STL и придумает что-то еще более идиотское? СТЕПАНОВ прекрасно знал, что STL является ШУТКОЙ, но ведь могут быть больные люди, которые воспримут все это всерьез... СТЕПАНОВ не знал, что делать. Но будучи ШУТНИКОМ, он решил отвлечься и исполнить свой классический номер: ПОСТУЧАТЬ-В-ДВЕРЬ-СТРАУСТРУПА-И-УБЕЖАТЬ. СТЕПАНОВ хихикал, уже при одной мысли о такой СМЕХОТЕ, потому что СТРАУСТРУП, как безмозглый баран, каждый раз велся. Он направился к дому СТРАУСТРУПА и спрятался за кустом. Вокруг никого не было и он уже было решился подойти и постучать, но увидел как ЛЯМБДА приближается к дому. СТЕПАНОВ любил ЛЯМБДУ. Они много раз вместе пили и были хорошими друзьями. Но СТЕПАНОВ не хотел портить свою ШУТКУ и не выдал своего местонахождения. К его удивлению ЛЯМБДА подлетела к двери дома, постучала и быстро спряталась под крыльцо. Увидев это, СТЕПАНОВ немного расстроился, что ЛЯМБДА украла у него фирменный трюк. Но потом вспомнил, что ЛЯМБДА предупреждала его, что собирается так поступить, чтобы отомстить за включение ЛЯМБДЫ в СТАНДАРТ. СТЕПАНОВ вылез из кустов и пошел домой. У него было очень мрачное настроение. Он знал, что СТРАУСТРУП творит зло, но пока не решался ничего с этим поделать. "По крайней мере этот выблядок АЛЕКСАНДРЕСКУ в психушке", думал СТЕПАНОВ. Он чувствовал, что после включения STL в СТАНДАРТ , нужно было принимать какие-то меры. Ему требовалась последняя капля... Вдруг он увидел своих друзей ПОЛА ГРЭМА и ПИТЕРА НОРВИГА. Все трое отошли в сторону и начали оживленно разговаривать, осматриваясь по сторонам. Они обменялись новостями. СТЕПАНОВ теперь знал, что АЛЕКСАНДРЕСКУ вышел из психушки, а ГРЭМ с НОРВИГОМ знали, что STL вошла в СТАНДАРТ. Они давно знали, что такое время настанет и решили пойти на самые крайние меры...
СТРАУСТРУП запостил историю на ДВАЧ и залез на мамочку. Он до сих пор не понял, что мамы уже давно нет в живых. Единственное, что он заметил - от мамы как-то странно стало пахнуть, но его это только возбуждало. К тому же мамочка стала в последние 3 дня страстно стонать, когда он особенно яростно ее трахал. Он не понимал, что эти "стоны" являются ничем иным, как газами гниения, со звуком выходящими из различных отверстий, под его напором. СТРАУТРУП почувстовал удар по голове и потерял сознание.
АЛЕКСАНДРЕСКУ, избитый и измазанный в говне, уже подходил к своему дому. Вдруг трое человек в масках схватили его. Последнее что он видел - марля пропитанная хлороформом приближалающаяся к его лицу. Затем темнота.
СТРАУСТРУП и АЛЕКСАНДРЕСКУ очнулись в темном, сыром подвале. СТЕПАНОВ заметил это и включил свет. НОРВИГ подошел к ним и снял картофельные мешки с их голов. СТРАУСТРУП и АЛЕКСАНДРЕСКУ все поняли. Осознание неминуемого конца пришло моментально. Между СТЕПАНОВЫМ и ГРЭМОМ произошел небольшой диалог:
- Выводи урода.
- Урод спит.
- Ну дак разбуди его.
ГРЭМ подошел к двери и открыл ее. За дверью было пространство метр на метр и лежал человек в кожаном костюме и маске. ГРЭМ небрежно пнул человека. Он очнулся и попросил воды. "Ну на, попей", издевательски сказал ГРЭМ, мочась ему на лицо. СТЕПАНОВ пинками выгнал человека на середину комнаты и дал в руки лопату. СТЕПАНОВ сказал : "Копай, сука." Человек начал копать яму. Прошло 10 минут и яма на одно тело была готова. СТЕПАНОВ достал крупнокалиберный магнум и наставил на человека. СТЕПАНОВ велел ГРЭМУ снять с человека кожаную маску. ГРЭМ снял маску. СТРАУСТРУП и АЛЕКСАНДРЕСКУ громко вдохнули от страха. Они знали этого человека. СТЕПАНОВ прицелился человеку в голову и выстрелил. Мозги разлетелись по всему полу и безжизненное тело упало в яму. СТЕПАНОВ смотрел на все это с улыбкой настоящего ШУТНИКА. Затем, он посмотрел на НОРВИГА и ГРЭМА и сказал:
"Закопайте САТТЕРА, а я кончу этих двух выблядков".
НОРВИГ и ГРЭМ взялись за работу, а СТЕПАНОВ, походкой Мэдсена из Бешеных Псов, подошел к СТРАУСТРУПУ и АЛЕКСАНДРЕСКУ. Они оба смотрели в пол и так и не издали не звука. СТЕПАНОВ достал КАТАНУ и с тщанием автора STL, зарубил обоих.
СТЕПАНОВ, НОРВИГ и ГРЭМ немного постояли над телами.
СТЕПАНОВ прервал молчание и сказал, чтобы трупы скормили свиньям. СТЕПАНОВ поднялся по лестнице на первый этаж дома и продолжил писать DSL на COMMON LISP.