Будучи висококваліфікованим дослідником, я витратив чимало часу на просування науки вперед. Але я народився на Півдні і щиро переконаний, що прогрес - це вигадка, і що потрібно готуватися до Судного дня, до жнив того, що ми посіяли і до появи швидких зомбі, повільних зомбі, і навіть ввічливих зомбі, які звертаються до вас «сер» або «мадам», але в підсумку намагаються з'їсти ваш мозок щоб роздобути ваші навички. Коли нагряне революція, потрібно бути готовим; тому в моменти тиші і спокою, коли я не зроблю черговий прорив у науці, я розмірковую над тим, що ж я буду робити, коли прогноз погоди зміниться на «РІЧКИ КРОВІ ЦІЛИЙ ДЕНЬ ДО СМЕРТІ ЧАСІВ».
В основному я думаю про тих, хто буде прикривати мою спину, оскільки шанси на виживання в постапокаліптичному світі безпосередньо залежать від розміру і якості того зброда, який ви будете називати своєю командою. Очевидно, мені знадобляться: слюсар (щоб двері розкривати), експерт - підривник (якщо вже у слюсаря закінчаться ідеї) і звичайно ж той хлопець, що відловить, видресирує і потім буде жбурляти змій в моїх ворогів (тому що в світі померлої надії кидок змією - це розумний спосіб врегулювання розбіжностей). У цій антиутопії вони допоможуть мені прослити войовничим філософом.
Але! Але... Найважливішим членом моєї банди буде системний програміст, бо в гоббсівському кошмарі неймовірних масштабів вміє налагодити драйвер пристрою або розпреділену систему людині можна довіряти; системний програміст бачив жахи Всесвіту і розуміє безвихідь буття. Системний програміст писав драйвери для пристроїв, прошивку яких створювала чи то п'яна дитина, чи то тверезий карась. Системний програміст відловлював проблему з мережею через вісім машин, три часових пояси і з дружнім візитом в Омськ, звідки її перенаправили в ліве переднє копито тієї коня, що позбавила Трою від перенаселення. Системний програміст читав вихідці ядра для кращого розуміння процесів світобудови і бачив коментар «І ЦЕ ПРАЦЮЄ ЛОЛ» в коді планувальника, і не сміявся, і не сміявся, але, і не бачив. і відправив він патч ядра для відновлення балансу Сили і усунення інверсії пріоритетів, що призводила до зависання MySQL. Системний програміст знає, що робити, коли суспільство впаде, тому що він вже живе в світі, де панує беззаконня.
Втім, я не кажу, що інші айтішники марні. Я свято вірю (хоч і не можу довести), що у РНР прапорів розробників є душа. Я вважаю, що оптимізуючі 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 на 86-процесор і сподіватися, що машина засвоїть лямбда - обчислення через осмос. Заперечуючи покажчики, ви уподібнюєтеся стародавнім грекам, що заперечували існування Кракена і потім дивувалися, що їх кораблі не доходять в Марокко, Широкко або як там ця нещасна країна тоді називалася. Покажчики - як Кракени: вони реальні, вони існують, і комусь потрібно з ними працювати, щоб інші могли спати спокійно. Але не зрозумійте перетворено: я зовсім не бажаю писати системне ПЗ мовою на кшталт 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. Але такий шлях джедая...
- Amish country … mule named Deliverance
- inappropriate limericks from “The Canterbury Tales”
- mission-critical
- both Republicans and Democrats agree is wrong
- muttering Nixonian rants
- STALIN
Переклали h3xe і ibadinov.
