Каждый день мы приходим на своё рабочее место, выполняя какую-то работу, получая в конце месяца за неё деньги. Всё повторяется и на следующий месяц, дни рождения мелькают подобно красивым видам в движущемся на полном ходу поезде-жизни.
Задумаемся, отличается ли профессия программиста хоть чем-то от тысячи других профессий? Смотрю на очередного молодого программиста, сидящего передо мной на собеседовании и осторожно набивающему себе цену, и я думаю: является ли программирование ремеслом или просто способом физически выжить? Это то, что делают лишь за деньги, или оно достойно чего-то большего? Может это просто технология и хорошо известные алгоритмы, тщательно подобранные паттерны, которые гарантируют хорошие результаты при их понимании и выполнении, где можно расслабиться, доверившись сияющим святостью авторитетам и впредь самостоятельно не думать?
Или здесь всё-таки есть место для неопределенности и вдохновения; встречаются ли здесь моменты ярких открытий и зовет ли порой жажда поиска нового, и если это так — то где обитают музы программиста? А может это и вовсе некое иррациональное искусство, подобному листингам программ на brainfuck, или даже отдельное направление науки?
Наверное, для каждого это что-то своё...
Сегодня я расскажу историю короткой жизни программиста, который считал себя артистом, а жизнь — невероятной программой, и который сумел изменить своим примером отношение к жизни у тысячи своих коллег.
Глубоко ошибается тот, кто думает,
что изделиями программистов являются программы,
которые они пишут. Программист обязан
создавать заслуживающие доверия решения
и представлять их в форме убедительных доводов,
а текст написанной программы является
лишь сопроводительным материалом,
к которому эти доказательства применимы.
Эдсгер Вайб Дейкстра
Начать свой рассказ, должен признаться, мне тяжело — я просто не знаю, как представить вам нашего сегодняшнего героя. В сети все его знали под ником why the lucky stiff (или просто _who), и это всё что нам известно о нем. Кем он работал? На всех конференциях он представлялся неизменно: «freelance professor».
Несмотря на многочисленные публичные предложения крупнейших мировых компаний и проектов работать на них — он не проработал и дня на работе в офисе — он всегда честно признавался, что у него нет даже номера social security.
Пенсионный Фонд нашел бы его мерзким асоциальным элементом...
_who — это второй человек в мировом сообществе разработчиков Ruby. Доподлинно о нём известно только одно: какой бы самый коварный вопрос не возникал в списках рассылки сообщества, обстоятельный ответ _who всегда гарантированно закрывал проблемную дискуссию. Этим, а также своей фантастической производительностью и неподражаемым вкусом, _who заработал славу одного из самых сильных и ярких экспертов в мире Ruby.
Конечно, он блистательный программист. Но не только. Например, иллюстрации ко всем своим книгам создатель языка Ruby Юкихиро Мацумото доверял лишь _who — он чертовски классный художник-график (кстати, именно он создал новый комикс-стиль посвященный Ruby).
У него была своя музыкальная группа — каждый вечер за электро-гитарой и у микрофона — звезда своего небольшого городка. Интерес к музыке выливался и в программирование, например он создатель музыкальной библиотеки к Ruby bloopsaphone, которая позволяет проигрывать простенькие мелодии, вот например мелодия музыкальной заставки мультфильма Simpson:
require ‘Rubygems’
require ‘bloops’
b = Bloops.new
b.tempo = 180
sound = b.sound Bloops::SQUARE
sound.volume = 0.4
sound.sustain = 0.3
sound.attack = 0.1
sound.decay = 0.3
b.tune sound, «32 + C E F# 8:A G E C — 8:A 8:F# 8:F# 8:F# 2:G»
b.play
sleep 1 while !b.stopped?
Несмотря на полную анонимность, _who собирал полные залы на свои редкие выступления-лекции по программированию (вот пример одной из них), в зале было невозможно протиснуться, потому что люди сидели везде и слушали его затаив дыхание. Он отличный оратор, но и не менее замечательный писатель, который писал примерно в таком же стиле, в каком и жил. За свою короткую жизнь он написал лишь две книги, и обе книги были, конечно же, о Ruby.
В подзаголовок вынесено название самой известной книги написанной _why. Иногда её обозначают как (p)GtR или просто «the poignant guide» — это одно и тоже. Это учебник для новичка — своего рода введение в Ruby, но не только в его, скажем так, внешнюю техническую суть и командный синтаксис, но и очень эффектная попытка передать его философию и дух. Чтобы сразу уйти от бесполезных дискуссий по поводу её гениальности (или убожества), отдельно подчеркну то, с чем единогласно согласны все: она не такая как все. Она не похожа на то, что вы читали ранее.
Понятно, отчего профессиональный издатель приходит в бешенство: книга написана в таком стиле, в котором, пожалуй, про программирование не писал ещё никто. Все уже привыкли, что книга по программированию должна представлять собой некий заунывно-монотонный рассказ от зануды-программиста, перемежаемый редкими и скучными листингами. Вряд ли вы возьмёте такую книгу с собой в отпуск или будете читать её пару дней и ночей напролет не в силах остановиться.
_why, конечно, не в состоянии написать так: он никогда не работал в офисе, чтобы, как он считал, «ненароком не похоронить там свой живой интерес к жизни». «(poignant) Guide to Ruby» рассказывает о многом, например о его любимом «кусочке бекона» (chunky bacon — фраза, впоследствии ставшая мемом в сообществе Ruby, и которая используется в огромном количестве примеров Ruby-кода), о его повседневной жизни и наблюдениях, восходе солнца или рассуждениях о языке собак...
Здесь важно не терять главную суть — всё это лишь о Ruby, который рассматривается здесь в чрезвычайно широком ракурсе и контексте. Книга сразу навязывает очень неспешное, вдумчивое погружение в язык, тщательную проработку его основ, мотивов и подходов. Словно боясь слишком загрузить читателя, _why время от времени аккуратно одергивает своего читателя: эй, приятель, ты ещё здесь?
Внимательное проговаривание вслух всех листингов, обязательный элемент изучения этого языка, введенный в обиход именно _why. Ruby спроектирован так, что одна из его удивительных особенностей, это формирование в процессе написания программы осмысленного для чтения на обычном английском языке листинга, который более или менее может прочитать и понять любой обычный человек.
Попробуйте повторить нечто подобное с Python или не приведи бог с PHP, ну что, получается?
Большинство листингов в книге сопровождается комиксами с диалогами рисованных лисиц, которые обсуждают всю необходимую теорию, чаще используя то, что вышеупомянутый издатель ехидно назвал «как минимум, очень странным юмором, если не сказать более».
Другой постоянный персонаж книги — чёрный как ночь кот Trady Blix, с которым по признанию самого _why он как-то случайно познакомился на телевидении. _why доверительно признается, что именно Blix и научил его «настоящему Ruby».
Чтобы такая линейность сюжета не показалась кому-то слишком академичной (основанным на «здравом смысле» — любимое ругательство _why) , в ходе изложения они часто меняются местами: в эти моменты уже _why педантично объясняет и учит кота Blix’а особенностям устройства и работы Ruby.
Книга содержит огромное количество совершенно безумных листингов, например, иногда они являются вспомогательными для понимания механизма путешествия во времени или чего-то вроде этого. Важное приложение к книге — полноценный музыкальный альбом, в котором, по словам _why, «он закрепляет некоторые важные моменты этого курса на эмоциональном уровне».
Вторая дополнительная составляющая курса — интерактивный обучающий веб-сайт — tryRuby.org. Вслед за Дарвином _why считает, что только непрестанная практика программирования превращает социальную обезьяну в программиста.
Делая скидку на человеческую лень, он создал этот сервис — теперь у каждого есть простая возможность проверить всё, что описано в книге не делая никаких лишних движений, — это настоящий интерпретатор Ruby подключенный напрямую к web, где используя обычный браузер можно создать свою первую программу.
Другая его похожая книга — это Nobody Knows Shoes, кроме того, под впечатлением от этого стиля другими были созданы очень похожие книги, например Learn you a Haskell for great good.
На этом _why... не успокоился. Продолжением попытки максимально эффективно учить новичков программировать, стало создание собственной среды разработки на Ruby, которую он назвал Hackety Hack.
Чтоб максимально точно позиционировать эту IDE, _why выпустил манифест «Little Coder’s Predicament», где объясняется суть предназначения Hackety Hack, и рассказывающий о проблеме высокого порога вхождения в современное программирование, отчасти устранить который и предназначена эта программа.
Он объясняет это так:
«Мы живем в мире ужасно сложных и продвинутых технологий, которые окружают нас повсюду. Неважно, осознаем мы это или нет, но факт заключается в том, что наши бабушки сегодня пользуются смартфонами, наши дети играют на iPad, и так далее — но технологии скрытые под капотом всех этих предметов — ужасно сложны и комплексны.
Я помню, как в старые добрые времена я смог сам легко освоить программирование на Commodore 64, но попробуйте сегодня разобраться в таком же возрасте в программировании под Windows, создать свой собственный поиск-аналог Google, или написать свое приложение для любимого iPhone — это будет сделать не так-то просто, как было во времена моего детства.
Я называю этот возросший порог для вхождения в мир программирования — Little Coder’s Predicament, и пытаюсь решить его посредством новой идеологии обучения программированию, реализованной в Hackety Hack».
Итак, этот редактор реализует блоковую концепцию построения программ из уже готовых кусков кода (заготовок, сниппетов). При этом у новичка есть возможность начинать учиться в процессе создания приложений, сразу разбираясь в его устройстве на примерах составных кусков кода (в чем активно помогает эта IDE), а также модифицируя их под свои текущие нужды (поставляется обширная библиотека подобных сниппетов на все случаи жизни).
Такой полуфабрикатный подход позволяет немедленно начать писать программы любому человеку практически без какого-либо предшествующего опыта
Технически, редактор базируется на Ruby и Shoes toolkit (библиотека для создания сложных графических интерфейсов).
Что случилось потом — никто не знает. В июле 2009 года _who внезапно исчез. Ничего не объясняя, никак не объявляя это заранее, на пике своей сетевой популярности... Все его почтовые ящики-контакты были закрыты, его сверхпопулярный Твиттер с более чем 10 000 подписчиков был отключен, тоже произошло и с его персональным блогом и аккаунтом на GitHub, а также с многочисленными сайтами-проектами. За один день, все его проекты и присутствие в сети было полностью разрушено.
Сообщество Ruby было шокировано, назвав этот акт «виртуальным самоубийством»
В личных блогах огромного количества людей в сети, стали появляться признания о том, что _why изменил их жизнь: именно благодаря ему очень многие люди пришли в мир программирования или выбрали Ruby в качестве своего основного языка программирования.
Поиск _why был по-настоящему грандиозным — опрашивались все последние журналисты, с которыми он контактировал, анализировались его последние твиты и письма, в попытке понять мотивы, было даже запущено в ротацию стандартное для Америки объявление на пакете молока для поиска пропавших людей — но все было безрезультатным.
Сетевые энтузиасты своими силами постепенно восстановили все его проекты (более 100 проектов в самых разных областях, как программирования, так и искусства — восстановленный список можно увидеть здесь), последний его твит перед исчезновением был такой:
До сих пор, несмотря на выступления _why за пределами сети в реальном мире и на самых престижных мировых конференциях, активном участии в различных концертах и фрилансерскую работу с огромным количеством заказчиков, никто так и не сумел установить его реального имени или фамилии, равно как достоверно узнать, что же произошло c ним на самом деле.
Как бы то ни было всё на самом деле, отмечая очередную годовщину его таинственного исчезновения, всё мировое сообщество Ruby уверяет, что его неоценимый вклад в популяризацию и развитие этого языка будет сохранёно в сердцах программистов навсегда. Впрочем, вспоминая о нём, сообщество делает это полностью в стиле самого _why — без грусти, тоски и не нужного трагизма, заочно передавая ему привет на его любимом Ruby:
thanks = thank.person("_why")
thanks.append("~chunky bacon")
Как улыбаясь говорит Матц, создатель языка Ruby, даже после своего исчезновения он продолжает подшучивать над нами всеми, например, журналисты уже замучили его дурацким вопросом-рекурсией: Who is mister _who?
~
p.s.: Необоснованные утверждения многих источников, которые повторяет и Википедия, о том, что _why — это
«ходить на работу в офис, это как смотреть телевизор по вечерам — жизнь, это слишком большая роскошь, чтобы тратить её на осуществление чужих планов или потребление придурковатых телевизионных фантазий».
p.s.s.: Дурной пример заразителен: вслед за _who, подобный же акт сетевого самоубийства совершил и один из лидеров Python-комьюнити, — Марк Пилигрим (автор знаменитой книги Dive into Python).
Но это уже совсем другая история...
6 комментариев
Да за что же вы его все время _who обзываете, _why он.
ptzn: я только сейчас это заметил, прикольно, спасибо!
update: я тут глянул по англоязычным источникам, так получается что все путают - в одном месте так, в другом - уже этак, вот и я от них подхватил эту путаницу.
Но в любом случае спасибо, я уже править ничего не буду, но конечно путаница забавная получилась, хе-хе.
Напишите про Марка, пожалуйста.
/*
Ruby спроектирован так, что одна из его удивительных особенностей, это формирование в процессе написания программы осмысленного для чтения на обычном английском языке листинга, который более или менее может прочитать и понять любой обычный человек.
*/
Ну КГ/АМ O_o
Скорее, исправь всё на правильный вариант (_why), иначе при репостах Интернет превратится в стыдобу и ужас. Спасибо. :)
Дополнение к истории:
http://moskalyuk.name/4545