Pull to refresh

Comments 61

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Проблемы нет, решать нечего: код работает.
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. У меня все
Sign up to leave a comment.

Articles