Разработчик
0,0
рейтинг
22 ноября 2013 в 19:29

Разработка → Стражи ночи перевод

Будучи высококвалифицированным исследователем, я потратил немало времени на продвижение науки вперёд. Но я родился на Юге и искренне убеждён, что прогресс — это выдумка, и что нужно готовиться к Судному дню, к жатве того, что мы посеяли и к появлению быстрых зомби, медленных зомби, и даже вежливых зомби, которые обращаются к вам «сэр» или «мадам», но в итоге пытаются съесть ваш мозг дабы заполучить ваши навыки. Когда нагрянет революция, нужно быть готовым; поэтому в моменты тишины и покоя, когда я не произвожу очередной прорыв в науке, я размышляю над тем, что же я буду делать, когда прогноз погоды изменится на «РЕКИ КРОВИ ЦЕЛЫЙ ДЕНЬ ДО СКОНЧАНИЯ ВРЕМЁН».

В основном я думаю о тех, кто будет прикрывать мою спину, поскольку шансы на выживание в постапокалиптическом мире напрямую зависят от размера и качества того сброда, который вы будете называть своей командой. Очевидно, мне понадобятся: слесарь (чтобы двери вскрывать), эксперт‐подрывник (если уж у слесаря закончатся идеи) и конечно же тот парень, что отловит, выдрессирует и затем будет швырять змей в моих врагов (потому что в мире умершей надежды бросок змеёй — это разумный способ урегулирования разногласий). В сией антиутопии они помогут мне прослыть воинствующим философом.

Но! Но… Самым важным членом моей банды будет системный программист, ибо в гоббсовском кошмаре невероятных масштабов умеющему отладить драйвер устройства или распредёленную систему человеку можно доверять; системный программист видел ужасы Вселенной и понимает безысходность бытия. Системный программист писал драйверы для устройств, прошивку которых создавал то ли пьяный ребёнок, то ли трезвый карась. Системный программист отлавливал проблему с сетью через восемь машин, три часовых пояса и с дружеским визитом в Омск, откуда ее перенаправили в левое переднее копыто той лошади, что избавила Трою от перенаселения.1 Системный программист читал исходники ядра для лучшего понимания процессов мироздания и видел комментарий «И ЭТО РАБОТАЕТ ЛОЛ» в коде планировщика, и не смеялся он, но плакал; и отправил он патч ядра для восстановления баланса Силы и устранения инверсии приоритетов, что приводила к зависанию MySQL. Системный программист знает, что делать, когда общество падёт, потому что он уже живет в мире, где царит беззаконие.

Впрочем, я не говорю, что остальные айтишники бесполезны. Я свято верю (хоть и не могу доказать), что у PHP‐разработчиков есть душа. Я считаю, что оптимизирующие SELECT‐FROM‐WHERE люди делают полезную работу, хоть и единственное, что этим не выразишь — это матерные частушки.2 Не пойму почему, но я рад, что теоретики исследуют эквивалентность пятимерной машины Тьюринга и Эдварда Руки‐Ножницы. И в большинстве случаев дизайнеры GUI не должны бросаться друг на друга с вилами, когда я кричу: «МОДАЛЬНЫХ ОКОН НЕТ! ЭТО СПАРТА!» Я — Статуя Свободы: признаю всех, будь они жалкими, уродливыми или любителями Haskell. Но когда ситуация накалится до предела, я хочу иметь под рукой людей «целевого назначения»,3 которые в очках ночного виденья спустятся с вертолета и проведут секретную операцию для защиты моей свободы под музыку в стиле кантри. Системный программист способен на такие вещи и я вполне серьёзно могу прозвать такого человека «Гремучей Змеёй» или «Молотом Зевса». Но ни от кого еще я не слышал: «Эти полупрозрачные иконки действительно полупрозрачны! НЕ МОЛОТА ЗЕВСА ЛИ ЭТО РАБОТА?»

Вообще, последний пример я привёл от балды. Поверьте, я уважаю специалистов по человеко‐компьютерному взаимодействию. Но когда ЧКВшники отлаживают свой код, это похоже на выставку картин или саммит ООН с перерывами на чай и шуточками на французском, а не‐функциональные шарфы хоть и не обязательны, но поощряются. Когда код ЧКВшника не работает, проблема решается построением грандиозных теорий, связывающих Форму и Восприятие с вашими глубокими чувствами к овалам. И будут бурные дебаты о социально‐экономических последствиях Helvetica Light, и в какой‐то момент вам прийдется решить, являются шрифты с засечками дерзкой заявкой на современность или же тайно поддерживающим феодализм и невежество инструментом гегемонического гнета. Элегантней ли «обвести‐и‐нежно‐тапнуть», нежели «сжать‐и‐перетащить»? Эти насущные проблемы не решатся сами по себе. Но после долгой отладки ЧКВ‐кода в сердце всё еще теплится надежда и нет места злости; даже если вы волнуетесь, не лучше ли вместо выпадающего списка сделать radio button, список доживет до конца дня. А назавтра будет новый восход, восхитительно яркий, и он вдохновит вас на соединение полос прокрутки и щелчка левой кнопки мыши в печальном танце, что вы увековечите в сонете, вернувшися с покупками с базара.

В мире системных программистов всё иначе. Когда вы отлаживаете распределённую систему или ядро ОС, вы делаете это по‐ковбойски. Вы сколачиваете команду черствых, непробиваемых, видевших смерть мужиков, выдаёте им несколько примитивных вещей вроде компаса, рюкзака и заточеной с одного конца палки и идёте в глушь с твёрдым намерением нарваться на неприятности, попутно пожёвывая табак. Вы — системный хакер, и должны быть готовы голыми руками убить убежавший поток, писать напрямую в сетевые порты с помощью telnet и замшелой копии RFC, подобранной вами в Ватикане, и совершать другие дикарские поступки, о которых не говорят вслух. Когда вы отлаживаете системный код, нет никаких споров о вкусных шрифтах и лучшей форме для квадрата, потому что это — Старый Завет, бесцветный и жестокий мир, и совсем не важно, узкий ваш Arial или жирный, когда в стране ад, чума и все гнут спину на царя. ЧКВшники находят баги после получения письма от психотерапевта. Системщики находят баги, просыпаясь в холодном поту и обнаруживая, что их первенец пропал, а на стене кровью написано «ETIMEDOUT».

Что есть отчаяние? Внемлите мне, ибо я познал его. Отчаяние — это когда вы отлаживаете драйвер ядра и смотрите в дамп памяти, а оттуда на вас смотрит указатель со значением 7. ДА НИ ОДНА АРХИТЕКТУРА НЕ ВЫРОВНЕНА НА 7. К тому же, 7 — ЭТО СЛИШКОМ МАЛО, И ТОЛЬКО ЗЛОВРЕДЫ ПЫТАЮТСЯ ДОСТУЧАТЬСЯ ПО ТАКИМ АДРЕСАМ. Неправильно адресованная память с малыми значениями указателя погубила десятилетия моей жизни. Хуже этого только правильно адресованная память с невозможно огромной длиной буфера. О да, когда в вечер пятницы вы производите «один мааахонький послееедненький» проход по логам и обнаруживаете правильно адресованную память с длиной буфера равной КОЛИЧЕСТВУ ЭЛЕКТРОНОВ ВО ВСЕЛЕННОЙ. Такое оставляет шрамы на сердце, ведь пагубность чтения 2^893 байт — это единственное, в чём сходятся коммунисты и единороссы.4 Что‐то вроде «медицинское страхование — это, возможно, хорошо, а возможно и плохо, но попытки считать всю информацию Вселенной хреналлион раз и засунуть это в хреналлион‐мерный массив — тут уж извините…»

Не‐системщикам не понять эту войну за кусочки счастья в мире систем. Ведь когда алгоритм машинного обучения принимает кота за слона, это и правда смешно. Можно распечатать картинку кота в костюме слона, добавить смешную подпись — и это развеселит пару не слишком обременённых интеллектом индивидов. А копии потом можно раздать на работе, радуясь тому, что всё, в общем‐то, в порядке. Ничего веселого при неправильно адресованной памяти распечатать не получится, потому что ваш компьютер умер, а принтеров в царстве мёртвых как бы и нет. Буфер невозможного размера — это еще хуже: он сидит за кулисами, не отсвечивая, и тихонько нашпиговывает состояние злом. Если чтение плохого адреса сжигает ваш дом единожды и полностью, то непомерные буферы забираются к вам через окно, подсыпают песок в кровать и зубную пасту и наблюдают, как вы постепенно осознаёте, что безумие овладело вашей жизнью. Ведь правда: обычный случай отлова безграничного буфера — это когда ваша программа работает, а потом вдруг пытается отобразить строку «Hello, World», но на выходе получается «#a[5]:3!» или любой другой синтаксически правильный Perl‐скрипт, и вы такие «КАКОГО МАМУ ЛЕШЕГО», а потом до вас доходит, что ваши обращения к памяти подобны Халку, услышавшему просьбу написать эссе на тему «Почему крушить плохо».

И тут вы спросите: «Почему кто‐то станет писать на гротескном языке, поддерживающем прямую работу с памятью? Почему не использовать современный язык со сборщиком мусора, функциональными примочками и бесплатным массажем после обеда?» Я вам отвечу: указатели реальны. Железо только их и понимает, и кому‐то прийдется иметь с ними дело. Нельзя водрузить талмуд по LISP на x86‐процессор и надеяться, что машина усвоит лямбда‐исчисление через осмос. Отрицая указатели, вы уподобляетесь древним грекам, что отрицали существование Кракена и потом удивлялись, что их корабли не доходят в Марокко, Широкко или как там эта несчастная страна тогда называлась. Указатели — как Кракены: они реальны, они существуют, и кому‐то нужно с ними работать, чтобы остальные могли спать спокойно. Но не поймите превратно: я вовсе не желаю писать системное ПО на языке вроде C++, потому что «плюсовые» исходники подобны Некрономикону — опасны, непонятны, полны запретных знаний и магических формул. И когда в три часа утра, после полусуток отладки вы встречаете статический защищенный волатайл указатель на виртуальную дружественную шаблонную функцию, вам хочется впасть в спячку, а потом проснуться в теле оборотня, найти создателей стандарта C++ и разорвать в клочья всё, что им дорого. А C++ STL со своим вызывающим дислексию синтаксическим ураганом угловых скобок и точек с запятыми гарантирует превращение первых семи попыток создания любой мало‐мальски осмысленной структуры данных в лавину ошибок компилятора поистине вагнеровского размаха:

Syntax error: unmatched thing in thing from std::nonstd::__map<_Cyrillic, _$$$dollars>const basic_string< epic_mystery,mongoose_traits < char>, __default_alloc_<casual_fridays =="" maybe="">>

Однажды я пытался создать list<map<int>> и мои синтаксические ошибки подняли мёртвых из могил. Такое поведение не назовешь правильным. Потому я обеими руками за высокоуровневые языки, где указатели скрыты, типизация строгая, а объявление структуры данных не превращается в разгадывание синтаксических головоломок, выдуманных злобным инопланетянином. Так что если вы вдруг обнаружите себя попивающим мартини в процессе написания кода на объектно‐ориентированном эсперанто со сборщиком мусора, то не забывайте, что ваш эсперанто работает лишь потому, что системные программисты променяли надежду потерять девственность на возможность размышлять о шестнадцатеричных числах и их отношениях с операционной системой, железом и древними кровавыми ритуалами, которые Бьёрн Страуструп проводил на территории Стоунхенджа.

Но худшее в жизни системного программиста — это когда не‐системщики думают, что осознают всю глубину трагедий, из которых она состоит. Несколько недель назад я отлаживал созданную моей исследовательской группой сетевую файловую систему. Баг спрятался в компоненте ядра, и моя машина умирала самыми невозможными способами. После нескольких дней постоянных перезагрузок серверов от меня осталось еле волочащее ноги бородатое красноглазое нечто, вроде айтишной версии Саддама, которого только что вытащили из бункера, несущего витиеватый бред о полувымышленных врагах. И вот, расхаживая по коридорам, браня5 свой код, я наткнулся на коллегу из отдела ЧКВ, который незамедлительно поинтересовался моими делами. Объяснив ему баг, который затрагивал конкурирующие потоки, повреждённое состояние и асинхронную отправку сообщений через несколько машин, в ответ я услышал: «Да, звучит не очень. А логи на ошибки ты проверил?» «Ну, я бы так и поступил,» — сказал я, «если бы не сломал каждую компоненту системы, необходимую для ведения логов. У меня есть сетевая файловая система и я сломал сеть, файловую систему, и мои компьютеры подыхают от одного моего взгляда. У МЕНЯ НЕТ НИКАКИХ ИНСТРУМЕНТОВ, ПОТОМУ ЧТО Я СЛОМАЛ СВОИ ИНСТРУМЕНТЫ СВОИМИ ЖЕ ИНСТРУМЕНТАМИ. Единственный способ залоггировать хоть что‐то — нанять монахов и стенографировать их субъективный опыт созерцания гибнущих машин, попутно размазывая кровавые слёзы по щекам». В искреннем порыве симпатии мой коллега изложил одну из его историй об отладке — об операции сложения, которую случайно заменили операцией умножения. Выслушав его, я сказал: «Умножение — не сложение, это и ежу понятно. Но они хотя бы похожи! Умножение — это как сложение, только сложения чуть побольше. Проще говоря, умножение — это взрослый птеродактиль, а сложение — это детёныш птеродактиля. В твоём случае код немного капризничал, но сама идея была правильной. В моём случае нельзя придумать аналогию для дошкольников о том, что мой код должен делать и что он делает на самом деле. Я всего лишь хотел превратить чтение файла в сетевую операцию, но вместо этого мои машины подхватили чахотку и дрестун. Улавливаешь разницу? Ты пригласил девушку на танец, а потом узнал, что её отец — мент. А я пригласил девушку на танец, А ПОТОМ УЗНАЛ, ЧТО ЕЁ ОТЕЦ — ГИТЛЕР».6

На самом деле, я не говорю, что все должны быть системными хакерами. GUI нужны, проверка правописания тоже. Я рад, что люди разрабатывают новые виды прыгающих иконок, так как верят, что человечество распрощалось с раком, нищетой и теперь живёт в безмятежном мире, окруженноё трёхмерными спрайтами. Это восхитительно. Я надеюсь присоединиться к этим людям лет эдак через шестьсот. Но я живу в мире настоящего, и в моём районе люди гибнут на улицах. Французский — это тоже хорошо, но никто не станет его придумывать, попутно отбиваясь от медведей. Смекаете? СИСТЕМНЫЕ ХАКЕРЫ РЕШАЮТ ПРОБЛЕМУ С МЕДВЕДЯМИ. Лишь благодаря бдительности моих людей вы вольны размышлять о круассанах и отпускать шуточки о настоящем отце Луи XIV.

Так что если вы вдруг встретите меня, слоняющегося по коридорам и пытающегося объяснить оторопевшим монахам баги синхронизации, будьте уверены: каждый день, день за днем, становится чуточку лучше. Для вас. Не для меня. Я всегда буду зол на число 7. Но таков путь джедая…



  1. Amish country … mule named Deliverance
  2. inappropriate limericks from “The Canterbury Tales”
  3. mission-critical
  4. both Republicans and Democrats agree is wrong
  5. muttering Nixonian rants
  6. STALIN


Перевели h3xe и ibadinov.
Перевод: James Mickens
Иващенко Иван @defuz
карма
91,2
рейтинг 0,0
Разработчик
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (46)

  • +9
    О, наконец-то качественный перевод, достойный оригинала. Спасибо.
    • +9
      И ЭТО ПЕРЕВЕДЕНО ЛОЛ
    • +2
      Интересно, оригинальное название специально сделано перекликающимся с The Night's Watch из A Song of Ice and Fire, ребята из которого тоже «enjoy the worst to bring you the best», или просто иного образа в таком случае и не напрашивается?
      • +1
        Если специально, то можно было бы перевести как «Ночной дозор», как это переводили в экранизации. Однако, тогда бы оно перекликалось с другой книгой…
        • +1
          По ссылке из комментария ниже так и переведено, кстати. И, пожалуй, это даже более правильно с точки зрения корректности перевода конструкции «the night » (по сравнению с «the night's »).
          Впрочем, возможно, что аллюзия на Лукьяненко (а для кого-то — и сразу на Бекмамбетова) на Хабре могла показаться переводчику неуместной, потому он и постарался её не допустить.
          • 0
            И в сáмом деле, кто более мог быть известен автору первоисточника — Мартин или Лукьяненко?

            Несомненно, это Мартин.

            В таком случае следует избавить перевод от возможности аллюзии на Лукьяненко.

            Затем вдруг окажется, что автор первоисточника имел в виду картину Рембрандта Харменса ван Рейна, созданную в 1642 году — и перевод придётся вдругорядь переделывать. Не одним системным программистам бывает нелегко в жизни.
  • +5
    Перевод фееричен! :) Спасибо за усугубление пятничного настроения.
  • +2
    Зачем заменять Сталина Гитлером в переводе?
    • +8
      Наверное, затем что если оставить как было, то в наших реалиях кому-то может показаться, что ему очень повезло.
      • 0
        А на самом деле не так?
        • +3
          Ну, тут как посмотреть. Среди плюсов — разного рода блат, для кого-то — это возможность войти в определенные круги. Минусом же является то, что сближаясь с власть имущими такого профиля (в смысле, ставящими за цель иметь больше власти), можно ни за что ни про что огрести по самое ни хочу, просто потому, что тобой, как пешкой, сыграть выгодно. Или по прихоти.
          Да и некоторых от такого знакомства будет коробить просто от осознания самого факта и рефлекторной неприязни к Сталину и его окружению.
  • 0
    Наверное, это что-то очень известное.
    Но зачастую, увы, переводы «известных» текстов остаются лишь переводом какого-то текста.
    Без указания автора.

    Мне понравилось.
    Очень!
    Я редко читаю переводы потому что люблю оригинал.
    Укажите, пожалуйста, автора.
    • +2
      Указан автор внизу статьи. Даже со ссылкой на оригинал.
      • +1
        Спасибо!
        Вы указали мне правильный путь!
        А то вот ведь… И не знал даже!
  • +7
    Это… фантастически восхитительно!

    Поначалу думал — «опять какой-то бред», а потом глаз зацепил слово «системный программист» и понеслась.

    Понравилась фраза, которую я сам долго не мог красиво сформулировать, когда меня спрашивали знакомые о том, почему я предпочитаю Си всяческим Erlang'ам и Python'ам с Ruby:
    И тут вы спросите: «Почему кто‐то станет писать на гротескном языке, поддерживающем прямую работу с памятью? Почему не использовать современный язык со сборщиком мусора, функциональными примочками и бесплатным массажем после обеда?» Я вам отвечу: указатели реальны.


    То же самое, пожалуй, можно и про bash сказать. Реальный он, чтоли.

    //предвижу высказывания про единственно реальный ассемблер.
    • +3
      Посмотрите на Go — там есть все эти реальные указатели и прочие плюшки (включая божественное избавление от проблем многопоточности), но программирование не похоже на переход через полосу препятствий на минном поле.
    • +4
      Легенда гласит, что Bash был не всегда. Первые стражи ходили на железо с голыми руками. У высоколобых из MIT был Lisp. Он кичился своим сборщиком мусора, ловко прятал свои указатели и мог возрождаться из пепла. Главное, он вызывал у мертворожденного шкафа PDP способность к диалогу. Пользовать Lisp умели только посвященные из MIT. Потом наши победили, а Lisp привили гротескной безделушке Emacs, предназначенной в основном для правки Lisp программ. Пользоваться Lisp, так никто и не научился.
    • 0
      Только процессорные коды реальны, и ассемблер — пророк их.
  • +3
    «Да, звучит не очень. А логи на ошибки ты проверил?» «Ну, я бы так и поступил,» — сказал я, «если бы не сломал каждую компоненту системы, необходимую для ведения логов. У меня есть сетевая файловая система и я сломал сеть, файловую систему, и мои компьютеры подыхают от одного моего взгляда.
    Кто-нибудь, расскажите автору оригинальной статьи про трейсинг по абсолютному адресу оперативной памяти с последующим чтением после аварийной перезагрузки. В операционке вот этих ребят это например отлично работает — сам проверял. А вообще странно все это.
    • 0
      Бывает ещё ASLR.
    • 0
      Интересно, а на ПК, кстати, есть внутрисхемная отладка по типу JTAG?
      • 0
        На сколько я знаю — нет.
      • +2
        Есть такая штука как ICE — In circuit Emulation. Выполнялась как правило хтонического вида нахлобучкой на процессор или ворохом логики, его заменяющей:
        Например так
        image

        Позволяет работать с шиной, притворяясь настоящим процессором, но имея весть инструемнтарий отладки.

        Собственно отладчик SoftICE называется так потому что позволяет достигать практически того же уровня взаимодействия с железом, но софтово.
    • 0
      Лучше бы кто-то рассказал ему про виртуальные машины (а драйверу файловой системы реальное железо не требуется), и про запись логов ядра в последовательный порт (который можно перенаправить в файл средствами ВМ).
  • +2
    Просто великолепно!
    Еще статьи этого же автора в колонке «Humor» журнала «USENIX ;login:» — On the genius of James Mickens
  • +1
    Ранее видел ещё такой перевод: erra.livejournal.com/358792.html
  • +3
    Да, жизненно. Я по работе в основном сейчас занимаюсь высокоуровневыми вещами (python, js, etc.), но время от времени приходится сталкиваться и с darker things beyond the wall, оставляющими неизгладимые воспоминания. Вот, помнится, несколько лет назад купил себе N900 и очень расстроился, поняв, что не могу запустить на нём ни одного приличного Common Lisp'а — ну, люблю я лисп. Clozure Common Lisp тогда ещё на ARM не портировали, оставался CLISP, который вроде бы работал на более старых нокиевских «таблетках» (N800, например). CLISP после некоторых мучений собрался, но при запуске упорно валился в кору. Сначала хотел забить, но потом как-то так получилось — мой драндулет на первом ледку стукнул в зад жигуль с всесезонкой, из-за отвратительных погодных условий с гайцом записали не все повреждения и я провёл заметное количество часов в очередях в страховой, прежде чем смог добиться полного ремонта. С собой у меня был N900, на него я поставил Insight — фронтенд к GDB, позволяющий более-менее удобно ковырять asm-код, ну и занялся отладкой с использованием тачскрина и физической клавы. ARMовский ассемблер я знал довольно таки слегка по паре прочитанных туториалов. Поведение было вовсе неочевидным — код, который по всем законам природы должен был работать нормально, валился самым парадоксальным образом. Разгадка оказалась потрясающей — ARM-ассемблерные вставки в CLISP писались под RISC OS и имели устаревший синтаксис, из-за неверной интерпретации которого современным ассемблером при возврате из подпрограмм рушился флаговый регистр и из-за этого НА ЛЕТУ ИЗМЕНЯЛСЯ ENDIANNESS ПРОЦЕССОРА. Я не знал про эту сверхполезную фичу ARM и потому долго не мог взять в толк, что же происходит на самом деле. Позже списался с мэйнтейнерами и выяснил, что, в общем-то, ассемблерные вставки можно было просто отключить (чтобы использовался сишный вариант). Но тем не менее…
  • +2
    Большое спасибо за перевод. После прочтения топика вспомнил очень интересный рассказ Дмитрия Галушенко — «История одного байта», который, наверное, является уже классикой. Там тоже отлично передана атмосфера безысходности и безыдейности, читается история на одном дыхании.
  • +1
    Белка — истеричка. Ох ужас!!! Как страшно жить
  • НЛО прилетело и опубликовало эту надпись здесь
    • НЛО прилетело и опубликовало эту надпись здесь
      • НЛО прилетело и опубликовало эту надпись здесь
        • НЛО прилетело и опубликовало эту надпись здесь
          • 0
            Попробуйте отладить многопоточный код, написанный «индусами», без частичного переписывания :-)
            Очень увлекательно!
  • НЛО прилетело и опубликовало эту надпись здесь
    • +3
      Это фантастически прекрасный рассказ.
      Такие люди держат на своих плечах пласты реальности.
      • НЛО прилетело и опубликовало эту надпись здесь
        • +2
          Ну как о чем? Он сравнивает системных программистов с орденом «Ночныго дозора». Вы читали Мартина? Это суровые люди, которые позволяют всем остальным ( в данном случае остальным программистам) жить и наслаждаться жизнью.
          • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    Этакий программисткий архаус. Текст шикарен, хотя читается очень тяжело.
  • 0
    Восхитетельный текст. Один вопрос: как расшифровывается ЧКВ? По смыслу-то я понял, кто это, но хотелось бы знать расшифровку)
    • 0
      Поверьте, я уважаю специалистов по человеко‐компьютерному взаимодействию.
      • 0
        Спасибо.
  • 0
    Не далее, чем неделю назад почти четыре часа бился над странным багом в дельфипрограмме (после запуска внешней функции куда-то исчезали все локальные переменные). Отчаявшись плюнул, и запустил IDA. Обнаружил перезапись EBP.

    К чему это всё — ты можешь знать, как сделать в формочке дырку, ты можешь за два дня в одиночку сбацать трехзвенку с веб-интерфейсом на extjs, можешь одной левой написать десяток внешних обработок в 1С — но до тех пор, пока ты не знаешь, как это работает — ты не программист. Вообще.

    Программисты веб-фронтенда обязаны идеально знать Javascript, дельфисты не должны падать в обморок при виде Processor view, а человек, работающий со SQL не должен бояться дискретки. Потому как любая более высокоуровневая абстракция налагает определенные ограничения и тащит неявные сайд-эффекты.

    Жаль, что таких ребят немного. Ну и просят они немало, как правило. Но работать с такими — одно удовольствие.
  • 0
    Шедевр ) просто шедевр
  • 0
    Гениально. Люто плюсую

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.