Завински: Да. Когда появились такие тенденции, первая моя мысль была о том, что у нас вырастает поколение программистов, которые ничего не будут знать об эффективности и о том, куда расходуется память. Когда такой программист наконец заметит: «Ого, моя программа стала просто огромной», что он сможет с этим сделать? Он даже не сможет понять, с чего начать. Вот о чем я сразу подумал, но ведь я — пещерный человек. Может, это и неважно, ведь теперь достаточно просто добавить памяти и все в порядке.
Сейбел: А может, люди будут глубже изучать те или иные вещи. Например, неважно, выделили мы на это четыре байта или шесть, но важно, сможет ли эта штука выполняться на одном узле кластера или будет задействован также и второй.
Завински: Да, вы правы. В этом смысле программирование сильно изменилось. Раньше внимание уделялось другим вещам. Когда-то я считал каждый байт и задавался вопросами вроде: «Какого размера будут мои объекты? Может, сделать это как-то по-другому, а то этот заголовок массива уже можно просчитать». Что-то в таком духе. Теперь уже никто об этом не думает. Трюк с сохранением в одном слове двух указателей с помощью операции XOR стал для всех темным лесом. Зачем кому-то использовать что-то подобное? Это безумие. Сегодня на передний план выходят другие навыки. Сегодня очень важно уметь разбираться в API и понимать, что там нужно, а что нет.
Сейбел: Если бы вам было 13 лет, вы бы увлеклись программированием — тем, каким оно стало сегодня?
Завински: Трудно сказать. Я не знаю сегодняшних тринадцатилетних, не знаю, как для них выглядит этот мир. Во всем этом стало сложнее разбираться. Нынешний десятилетний мальчишка не станет курочить свой мобильник, чтобы понять устройство микрофона, как я ребенком делал это со своим телефоном. Сегодня уже ничего не починишь самостоятельно.
Думаю, я пришел к программированию благодаря исследованиям вроде этого: снять крышку магнитофона и посмотреть, как крутятся шестеренки. А сегодня есть только наборы LEGO для создания роботов. Пожалуй, этого мало, чтобы пройти подобный путь. Но, как уже сказал, возможно, я ошибаюсь, ведь я не знаю, чем живут сегодняшние тринадцатилетние. Я не знаю современных игрушек. Видеоигры, радиоуправляемые машинки... Конструкторов хороших я не видел. Грустно все это.
Сейбел: С другой стороны, программирование стало гораздо доступнее. Вам уже не нужно осваивать все премудрости ассемблера, прежде чем заставить компьютер делать что-то классное.
Завински: Да. Наверное, современные ребята, которые сегодня учатся программированию, начинают с создания веб-приложений, разработки плагинов для Facebook и тому подобного. Брэд Фицпатрик, создатель Живого Журнала (LiveJournal), — мой друг. LiveJournal родился, когда он просто валял дурака и написал скрипт на Perl, чтобы вместе с друзьями сообщать друг другу что-то вроде «Я собираюсь пообедать». Все началось с небольшого скрипта на Perl, который он затем поместил на веб-сервер. Вероятно, это направление будет развиваться и дальше.
2. Брэд Фицпатрик
Брэд Фицпатрик — самый молодой из моих собеседников и единственный, кто никогда не жил в мире без Интернета или персональных компьютеров. Родился в 1980 году, очень рано занялся программированием — уже в пять лет стал учиться программировать на самодельной копии Apple II. Когда Брэд был подростком, интернет-революция уже развернулась в полную мощь, и он принял в ней активное участие: в старших классах разработал свой первый коммерческий веб-сайт, а летом перед поступлением в колледж начал работу над популярным сообществом LiveJournal (Живой Журнал).
Работа с Живым Журналом, популярность которого стремительно росла, заставила Фицпатрика освоить трудную науку создания расширяемых веб-сайтов. Попутно он вместе с другими программистами основанной им компании Danga Interactive разработал несколько программ с открытым кодом, таких как memcached, Perlbal и MogileFS, которые сегодня применяются на серверах, обслуживающих самые загруженные в мире сайты.
Фицпатрик — типичный (пусть и добившийся необычайных успехов) программист рубежа двух столетий: его основными языками программирования были Perl и Си, хотя при необходимости он работал и с такими языками, как Java, C++, Python, JavaScript и C#. Так или иначе, с сетями связано почти все, что он программирует, — более совершенная инфраструктура веб-сайта, новые протоколы и ПО для лучшего учета записей при обновлении блогов, свой мобильный телефон на автоматическое открытие гаражной двери во время мотоциклетного заезда.
Мы говорили о том, как это — учиться программировать, когда еще читаешь книжки про Красного щенка Клиффорда, и почему Брэд рад, что остался учиться в колледже, одновременно работая над Живым Журналом, и о том, как он научился не бояться читать чужой код.
Сейбел: Как вы стали программистом?