Как стать автором
Обновить

Комментарии 61

А муравьед тут зачем? И это вроде как перевод, не?
Это не муравьед, а багоед.
И на фото он как раз нашёл какашку — код из Windows 3.0 в Windows 7.
Муравьед — это AARDvark.
Полтекста перевод, полтекста не перевод.
Я не в претензии, статья очень хорошая и интересная. Но вот читаешь, а тут бах — муравьед. И сиди думай какого рожна он тут. А AARD это ещё дофига всего, в том числе aardwolf. Причём ничего из этого не имеет отношения к топику вообще. У вас ведь одна метафора уже есть бaardак, зачем ещё.
Это я ворую фирменный стиль соседней статьи, где читаешь, и вдруг бах — суши.
(Та статья, к слову, тоже не помечена как перевод.)

Первая заметка Остермана называлась «AARDvarks in your code», поэтому выбрал муравьеда. Но по большому счёту, это просто украшение.
Зачем брать плохое? У вас ведь отличные топики!
aardvark — зубкотруб, африканский муравьед, трубкозуб ©Lingvo
Интересно, что именно не переписывалось со времен 3.0? Начсет утверждения, что «этот код работает» — не так уж он и работает.
Первое, что вспоминается из долгоживущего антиквариата — диалог установки шрифта.

Для желающих сосчитать отличия:

НЛО прилетело и опубликовало эту надпись здесь
[зануда]
Еще «Directories» -> «Folders», «Cancel» -> «Close», «Fonts» -> «fonts» и нижний лейбл около чекбокса.
[/зануда]
думал фейк! открыл и правда — иконки от win 3.1, иконки диалога нет — жесть.
Этот диалог даже в Висте был такой, только в 7-ке наконец-то убрали.
Как раз в Висте его доработали: добавили предпросмотр шрифта.

Непонятно за что минус, неужели сообщество придерживается мнения, что windows — это надежно? Тем более куски кода, которые не переписывались c 1990-года? Хоть пристрелите минусами не поверю!
А по-вашему операционки с нуля каждый год переписываются?
20 лет, говорите не переписывалось?
Когда я пришел работать, наша сетка состояла из двух двухсотметровых кусков бывшего в употреблении многомодового оптоволоконного кабеля, которые под страхом смерти запрещалось трогать даже для перекроссировки. Мне, по наивности, казалось что их вот вот заменят, и все станет хорошо. Прошло уже пять лет. Как работали, так и работают. Параллельно им положили новые линии, но эти по прежнему никто не трогает. И они отлично работают — не припомню ни одного сбоя по их вине.
в юниксе есть код 30летней давности — работает до сих пор. Зачем переписывать атомарные операции и утилиты?
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
хотлинкинг не работает
НЛО прилетело и опубликовало эту надпись здесь
Да, точно помню, что если появился этот синий экран, то нужно было непромедлительно жать эскейп, и о чудо, машина не зависала, но нужно было успеть! Видимо где-то было переполнение, т.е баг в экране смерти. Такие дела (:
Эх, возможно на Хабре воспримут эти ситуации как нечто удивительное, но любой С/С++ программист огреб таких вот странных багов порядочно :) В условиях вседозволенности сорвать стек, запортить кучу или таблицу виртуальных функций — раз плюнуть, и проблема будет гораздо сложнее пресловутых

#define TRUE FALSE; // Дебажте п-сы
Последняя строчка — эталон программерской издевки :D
#define TRUE rand()>0.5 — это лучше.
Вспоминается комментарий в так называемых «исходиках windows», коии гуляли по сети. Что-то вроде "// Не убирайте этот комментарий!!! Это нарушит процесс сборки!!!"
Ну, у меня в коде одного проекта есть нечто подобное — там в процессе досборки разного хлама из некоторых исходников grep-ом выдёргиваются нужные для работы данные.
Ну вот вы смеетесь. А попробуйте скомпилировать следующий код ;)

// This function does not working… :-\
void main(int argc, char** argv) {
int i = 42;
}
*is not, прошу прощения :)
Я неплохо знаю С, так что могу и так сказать, что будет. Там было другое.
Идея про grep'анье мне кажется более правдоподобной.
Ещё есть вариант — что компилятор падал, такое тоже случается на определённых комбинациях символов, сам видел.
Да все понятно. И про грепанье и про компиляторы. В одном проекте, с которым приходилось работать там вообще, исходники и хедеры ездили между десятком директорий (страх и ужас). С помощью скриптов. Да и в тех же борладновских компиляторах полно ошибок.
«Как страшно жить!»

Мы думаем, что сидим в чистеньких светленьких уютненьких офисах, а на самом деле под нами грязные мокрые подвалы с невесть каким мусором. В программах, оказывается, всё то же самое.
Когда б вы знали из какого сора, и какими «профессионалами» сделана последняя миля интернета… :)
Езернету вообще памятник можно ставить :) Учитывая то, в каких условиях оно таки умудряется работать
Неделя некрофилии на Хабрахабре.
НЛО прилетело и опубликовало эту надпись здесь
Сидит программист, отлаживает программу. Подходит сынишка:
— Папа, почему солнышко каждый день встает на востоке, а садится на западе?
— Ты это проверял?
— Проверял.
— Хорошо проверял?
— Хорошо.
— Работает?
— Работает.
— Каждый день работает?
— Да, каждый день.
— Ну, тогда, ради бога, сынок, ничего не трогай, ничего не меняй…
Да-да-да =)
Такие вещи у многих встречаются. Но одно дело, когда программирование хобби и ты полдня читаешь кучу кода не понимая в чем проблема, прежде чем отключить оптимизацию в компиляторе и получив рабочую программу, и совсем другое, когда программа создается большими мощностями и продается за деньги.
нет ничего более постоянного чем временное.

когда-то на 1й работе написал одну функцию на javascript и назвал её что-то типа test_function_чтототам, подумал получится — исправлю. потом перед очередным дедлайном потребовали выложить всё быстро, чтобы начальство посмотрело, а потом я уволился. ) через полгода зоходил на сайт, а функция всё та же там.
А еще бывают куски кода, которые никогда не исполняются, но убрать их просто не доходят руки.

Типа:
a = 0;
if (a=0) {огромный кусок скрипта} else {еще один огромный кусок скрипта}

Первоначально предполагалось что в а окажется результат какого-то там вызова, но получилось, что он там никому не сдался :)
НЛО прилетело и опубликовало эту надпись здесь
Н-да-а, как же всё там ненадёжно. А от слова «рефакторинг» у программистов из Майкрософта наверное инфаркт случается.
НЛО прилетело и опубликовало эту надпись здесь
Любому человеку, не обделённому интеллектом, понятно, что это была гипербола. В МС огромный штат программистов и пишется много разного ПО, поэтому нельзя всех стричь под одну гребёнку.
Но вам не кажется, что метод «как-то работает и фиг с ним» грозит большими проблемами с кодом в будущем? Если даже перекомпиляция какого-то конкретного куска кода грозит всё сломать, то о каком рефакторинге именно этого куска кода может идти речь? Если при перелинковке что-то ломается, значит есть проблема: в коде, в компиляторе или даже в процессоре. Запрет на удаление старого кода это не решение проблемы, а закапывание головы в песок.
Аргумент «добейся сам», оставьте, пожалуйста, при себе.
Но вам не кажется, что метод «как-то работает и фиг с ним» грозит большими проблемами с кодом в будущем?

Этот код протестирован. Не по-опенсорсовски протестирован, «запустился и не упал», а все поддерживаемые функции протестированы во всех поддерживаемых конфигурациях.
Мало кто из софтверных компаний вообще может себе позволить настоящее тестирование.

Если даже перекомпиляция какого-то конкретного куска кода грозит всё сломать, то о каком рефакторинге именно этого куска кода может идти речь?

Чего ради рефакторить код, если он уже готов и работает?
Приводить его в соответствие с модными на этой неделе стандартами разработки?

Запрет на удаление старого кода это не решение проблемы, а закапывание головы в песок.

Проблемы нет, решать нечего: код работает.
If it ain't broke, don't fix it.
Оно тестируется на текущих конфигурациях. И невозможно предусмотреть абсолютно всё. Ну хорошо, сегодня один баг скомпенсировал другой, и тестирование прошло удачно, а завтра Интел выпускает новый процессор с каким-нибудь, например, супер хитрым кэшированием, и уже в неинициализрванной переменной будет мусор, а не ноль (пример из поста). А помните, у некоторого софта были проблемы, когда на дескопах стали появляться многоядерные процессоры? Потому что баг с неправильной синхронизацией не проявлял себя, пока 2 потока не стали выполняться реально одновременно. А ведь всё было протестировано.

Чего ради рефакторить код, если он уже готов и работает?
Приводить его в соответствие с модными на этой неделе стандартами разработки?

Предлагаете каждую новую версию начинать писать с нуля? И рефакторинг это не мода, это необходимость, хотя бы чтобы не превратить код в лапшу.

Проблемы нет, решать нечего: код работает.
If it ain't broke, don't fix it.

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

Верно! Именно поэтому история началась с того, что менеджеры MS решили сэкономить на тестируемых конфигурациях, и объявили DR-DOS неподдерживаемой платформой. Причём с формулировкой, «если на вашей DR-DOS не работает наша Windows, то пусть Novell разбирается.»

И я уверяю, если завтра Intel выпустит новый процессор, на котором из-за супер-хитрого кэширования не запустится Windows, то это не MS будет чинить свои баги, а Intel будет придумывать, как их обойти ;)
По той же самой логике: «у всех всё всегда работало, а тут на новом процессоре вдруг не работает, конечно же процессор виноват.»
И в результате везде костыли, неиспользуемые участки кода 20-летней давности и двойной штат программистов и тестеров. Разве к этому мы должны стремиться?)
А что вы предлагаете взамен?
«Просто писать код без багов»?
А вы можете писать код без багов? Я — нет, в Майкрософт тоже не боги работают. Поэтому я предлагаю исправлять баги, а не закрывать на них глаза.
по общению с ребятами в Микрософт (в этом году) могу сказать что там серьезно к этому подходят. И код-ревью на новый код и рефакторинг и очень серьезное отношение к любям маломальским багам системы.

Но без костылей и им приходится очень сложно… Микрософт уже давно вырос из размеров одной айти компании, там уже давно что-то типа кучи микро-компаний, использующих код друг друга, что часто может приводить и к костылям и багам и к переписыванию аналогичной функциональности под свои нужды кода другой команды.
Молодцы, раз стараются. Наверно руководство поняло, что на одном пиаре по блогам (например на Хабре :) ) и обливании грязью опенсорсников далеко не уедешь.
почему вы так предвзяты и думаете что в компании работодатель №1 в США работают полные дибилы?
О-хо-хо. Где я говорил про дебилов? Как минимум талантливые бизнесмены там работают.
помню, долго бился головой о потолок, когда делфи 7 выдавала мне ошибку в комментарии. в итоге оказалось другой редактор добавил непечатный символ в код и компилятор с ума сходил=)
оффтоп
Увидел у автора ник знакомый, tyomitch.
Вспомнилось как давненько учился я VB и запрашивал советов на форумах различных, мало кто что дельное советовал, а этот дядька помогал. И впоследствии я нашел на этом форуме ответы на многие вопросы. И зачастую это были тоже его ответы.
Спасибо тебе, tyomitch. У меня все
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории