60388.fb2
Микке достает альбом с немногочисленными семейными фотографиями. 'Там есть Линус голышом на пляже в возрасте 2-3 лет. Линус в том же возрасте, сверкает голой задницей возле старинного замка под Хельсинки. Вот тощий и нескладный Линус-подросток. Вот Микке на шестидесятилетии своего отца, профессора статистики. Микке показывает на свою старшую сестру и брата. "Она психиатр в Нью-Йорке. Он - ядерный физик. А я - паршивая овца. Верно? Но зато у меня у первой родилась внучка", - говорит она и зажигает очередную сигарету.
Мы обедаем в ресторане, носящем имя Уилта Чемберлена (Уилт Чемберлен (Wilt Chamberlain) - американский баскетболист. - Прим. пер). Пока Сара читает сообщения на мобильнике, Микке выпивает несколько чашек кофе. Микке вспоминает, как они с Нике спорили о том, нужно ли отнимать у Линуса пустышку: они писали друг другу записки и оставляли на столе. Потом мы говорим о плохой памяти Линуса, его неспособности запоминать лица. "Если герой фильма сменил красную рубашку на желтую, Линус обязательно спросит: "Кто этот тип?", говорит Сара. Они рассказывают о велосипедной поездке по Швеции. Ночевках на ночном пароме. О том, как у Сары в первый же день украли велосипед и пришлось потратить кучу денег на новый. Как поставили палатку на скале. И Линус целый день лежал в ней, читая книжки, пока мать с дочерью плавали и ловили рыбу. А потом, когда налетел мощный шквал, они поняли, что палатку не унесло в Балтийское море только потому, что в ней спал Линус, не обративший внимания на резкую перемену погоды.
Микке смеется, вспоминая о тех годах, когда Линус сидел в своей комнате, поглощенный компьютером. "Нике все говорил мне: "Выпихни его наружу, заставь найти себе работу", но мне Линус не мешал. Ему было немного нужно. А со своим компьютером он мог делать что угодно - это его право. Я понятия не имела, что там происходит".
Сейчас она - как и все - в курсе дел Линуса. Микке и другие родственники получают груду запросов от журналистов. Эти запросы направляются Линусу, а он обычно просит мать, отца или сестру ответить по собственному усмотрению. Однако, прежде чем отправлять свой ответ репортеру, они обычно посылают его на утверждение Линусу.
За несколько месяцев до этого, когда я послал Микке запрос по электронной почте о детстве Линуса, она ответила длинным, мастерски написанным посланием под названием "Как из маленького ботаника вырос Линус". Она писала, как заметила в едва научившемся ходить малыше научные наклонности, которые наблюдала у своего отца и старшего брата.
"Если у человека загораются глаза при появлении проблемы и он перестает слышать то, что ты говоришь, не может ответить на простейшие вопросы, полностью поглощен тем, чем занят в настоящий момент, во время решения задачи готов обходиться без сна и еды и никогда не сдается (его, конечно, можно прервать, и в обыденной жизни так часто и случается, но потом он снова продолжает свою работу, не думая ни о чем другом) - это верный признак". Она писала о бесконечной войне между Линусом и Сарой, об их непримиримых противоречиях. (Сара: "Я НЕ ЛЮБЛЮ грибы /печенку/еще что-то". Линус: "НЕТ, ЛЮБИШЬ/") И сдержанное уважение. "Однажды - еще в раннем детстве - Линус четко выразил свое восхищение сестрой. Ему было лет шесть-семь, когда он очень серьезно сказал мне: "Знаешь, я никогда не думаю новые мысли. Я думаю те мысли, которые люди уже думали до меня. Я их просто переставляю. А Сара думает такие мысли, которых раньше не было".
Из этих воспоминаний следует, что я по-прежнему не думаю, что у Линуса есть какой-то специальный дар - и уж точно не к компьютерам. Если бы не компьютеры, он бы увлекся чем-то еще. В другой день и в другом возрасте он бы увлекся решением какой-то другой задачи. Лумаю - это еще впереди. (Я имею в виду, что он, надеюсь, не застрянет на всю жизнь на обслуживании Linux.) Потому что, как мне кажется, им движет не любовь к компьютерам и, уж конечно, не стремление прославиться или разбогатеть, а искреннее любопытство и желание победить возникающие трудности. Причем сделать это так, как надо, потому что иначе нельзя и он не сдастся.
Я уже, по-моему, ответила на вопрос, каким сыном был Линус - его было легко растить. Стоило ему поставить себе задачу - и он забывал обо всем. Когда еще ребенком он увлекся компьютерами, все стало совсем просто. Как мы с Сарой говорили: дайте Линусу чулан с хорошим компьютером, кормите его сухими макаронами, и он будет совершенно доволен.
Одно только меня тревожило: как же при таком образе жизни он встретит хорошую девушку? Я могла лишь еще раз прибегнуть к испытанному родительскому средству: держать пальцы скрещенными. И, к счастью, это сработало! Он встретил Туве на занятиях в университете, и когда из-за нее он на несколько дней забыл и кота, и компьютер, стало ясно, что Природа - как и положено - взяла свое.
Я только надеюсь, что фимиамы славы не слишком отвлекут его. (Похоже, слава не изменила Линуса, но он действительно смягчился и теперь вступает в беседу с людьми, которые к нему обращаются. Кажется, что ему стало трудно говорить "нет". Но я подозреваю, что это больше связано с тем, что Линус стал мужем и отцом, чем со всей этой шумихой, поднятой прессой.)
Очевидно, что и мать и дочь полностью в курсе всей этой шумихи. Мы встречались в конце января 2000 года, на следующий день после того, как Transmeta публично объявила о своих планах и в начале обеда Микке спросила Сару: "В сегодняшней газете было что-нибудь, сама знаешь о ком и сама знаешь о чем?"
Вечером по дороге на работу Микке заезжает на такси ко мне в отель, чтобы завезти сосновый стульчик, который хочет передать Патриции. Вместе с планом квартиры для Линуса.
Вот, кажется, мое первое воспоминание о том, что Линус сделал что-то примечательное.
Дело было, думаю, в начале 1992 года. Я приехал к Линусу на велосипеде без особой цели. Мы сидели в его всегдашнем бардаке, смотрели MTV, и я спросил, как идет разработка Linux. Обычно он отделывался пустыми фразами. В этот раз он повел меня к компьютеру (из замусоренной кухни в совершенно захламленную комнату).
Линус ввел имя пользователя и пароль и попал в режим командной строки. Он показал мне некоторые базовые функции интерпретатора команд, ничего особенного. Потом повернулся ко мне со своей характерной улыбкой: "Похоже на DOS, правда?"
Я удивился и кивнул. Я не был потрясен, потому что это уж слишком походило на DOS, при этом ничего особенно нового. Мне нужно было догадаться, что Линус не станет так улыбаться без особой причины. Линус снова повернулся к компьютеру и нажал какую-то комбинацию клавиш - появилось новое приглашение для ввода пароля. Новый пароль - и снова режим командной строки. Линус показал мне четыре разных командных строки и объяснил, что в будущем они будут доступны четырем различным пользователям.
В этот момент я понял, что Линус создал нечто чудесное. Меня это никак не задело - в снукер-то я у него по-прежнему выигрываю.
Йоуко Виерумаки (Авутон)
Для меня это в первую очередь значило, что телефон все время занят и к нам никто не может дозвониться... Потом стали приходить открытки со всех концов света. Наверное, тогда я начала понимать, что его творением действительно
пользуются реальные люди в реальном мире.
Сара Торвальдс
V.
Красота программирования
Не знаю, как описать мою любовь к программированию, но я попробую. Если этим занимаешься, кажется, что в мире нет ничего интереснее. Эта игра гораздо увлекательнее шахмат, игра, в которой можно устанавливать собственные правила и где конечный результат можно понимать по-своему.
А со стороны кажется - нет на свете ничего скучнее.
Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что-то сделать, и он это делает. Безошибочно. Всегда. Без возражений.
Это само по себе интересно.
Но такое слепое послушание хотя и увлекает сначала, вряд ли может привязать надолго. На самом деле оно как раз быстро наскучит. Интереснее всего другое: чтобы заставить компьютер делать то, что хочешь, сперва нужно придумать как.
Для меня программирование во многом похоже на физику. Обе науки имеют дело с устройством мира на базовом уровне. Разница, конечно, в том, что физик исследует, как сделан мир, а программист его создает. В пределах компьютера ты творец. Ты можешь безраздельно управлять всем, что происходит. Если хватает умения, то ты - бог. Местного значения.
Возможно, я оскорбил этими словами около половины населения Земли.
Но это правда. Ты создаешь свой собственный мир, и тебя ограничивают только возможности твоей машины или - в наше время все чаще - твои собственные способности.
Возьмем, к примеру, шалаш на дереве. Можно построить прочный шалаш со всеми необходимыми вещами, включая люк. Но всем известно, что красивый шалаш отличается от просто прочного тем, что при его создании учли особенности самого дерева. То есть нужно сочетание искусства и техники. Это одна из причин, почему программирование обладает такой притягательной силой и является таким благодарным занятием. Функциональность часто отступает на второй план перед увлекательностью, красотой или неординарностью. Это очень творческое занятие.
Сначала я просто хотел узнать, как работает компьютер. И меня страшно обрадовало, что тут - как и в математике - можно построить собственный мир со своими законами. В физике тебя ограничивают уже существующие законы. А в математике, как и в программировании, годится все, что непротиворечиво. Внешняя логика не накладывает на математику никаких ограничений - все должно быть логично само по себе. Как знает всякий математик, можно установить набор правил, по которым три плюс три равняется двум. По существу можно делать все, что хочешь, важно только по мере усложнения системы тщательно следить, чтобы не создавать ничего, противоречащего уже построенному миру. Чтобы твой мир был прекрасен, он не должен содержать изъянов. Точно так же и в программировании.
Одна из его привлекательных сторон заключается в том, что можно экспериментировать с созданными тобой мирами и выяснять их возможности. В математике можно заниматься умственной гимнастикой, проверяя, что может быть. Например, большинство людей под геометрией подразумевают Евклидову геометрию. Однако компьютеры позволяют увидеть и другие - совсем неевклидовы - геометрии. С помощью компьютеров можно посмотреть, как выглядят эти придуманные миры. Помните множество Мандельброта - фрактальные изображения, в основе которых лежат уравнения Бенуа Мандельброта? Это наглядные представления чисто математических понятий, которые стали возможны только благодаря компьютерам. Мандельброт просто придумал произвольные правила для несуществующего мира, который не имеет никакого отношения к реальности, но оказалось, что они порождают замечательные узоры. С помощью компьютеров и программирования можно создавать все новые миры, и некоторые возникающие при этом узоры по-настоящему прекрасны.
Но основное время уходит совсем не на это. Нужно просто писать программы для выполнения определенных заданий. При этом не создается новый мир, а просто решается проблема в мире компьютера. Ты думаешь над задачей - и она решается. Но далеко не каждый способен сидеть, уставившись в экран, и обдумывать задачу. Только чокнутые хакеры вроде меня.
Операционная система - это основа всего, что происходит в машине. Ее создание - самая сложная задача. Создавая операционную систему, ты строишь мир, в котором будут жить все остальные программы, работающие на компьютере. По сути ты задаешь правила: что допустимо и может быть сделано, а что - нет. Так можно сказать про любую программу, но к операционке это относится в первую очередь. Она подобна конституции созданной тобой страны, а все остальные программы - лишь обычные законы.
Некоторые законы оказываются бессмысленными. Такие тебе не нужны. Важно, чтобы, посмотрев на решение, можно было понять, что ты получил правильный ответ правильным способом.
Помните того своего одноклассника, у которого всегда получался правильный ответ? Он решал задачу быстрее всех, и у него это получалось именно потому, что он к этому не стремился. Он не выяснял, как следует решать эту задачу. Он просто находил правильный подход. И, услышав ответ, вы сразу понимали, что это так.
То же самое и с компьютерами. Можно добиться чего-то с помощью грубой силы, по-дурацки перемалывая проблему, пока от нее ничего не останется. А можно найти верный подход, и проблема сама внезапно исчезнет. Вдруг удается взглянуть на нее под новым углом, и наступает прозрение: проблема существовала только потому, что ты на нее неправильно смотрел.
Вот очень наглядный пример не из компьютерной области, а из математики. Легенда гласит, что, когда великий немецкий математик Карл Фридрих Гаусс еще учился в школе, его учитель, чтобы занять учеников, велел им сложить все целые числа от 1 до 100. Учитель рассчитывал, что ребята провозятся с этим целый день. Но будущий математик уже через пять минут получил верный ответ: 5050. Настоящее решение не в том, чтобы тупо складывать все эти числа - это глупо и скучно. Гаусс просто заметил, что 1 и 100 в сумме дают 101, а 2 и 99 снова дают 101. Как и 3 плюс 98. И так до 50 плюс 51. За считанные секунды он понял, что таких пар 50, каждая в сумме дает 101, поэтому ответ - 5050.
Может быть, эта история и недостоверна, но идея ясна: великий математик не станет решать задачу долгим и нудным способом, потому что увидит лежащую в основе схему и с ее помощью решит задачу быстро и эффектно. То же самое, безусловно, применимо и к компьютерной науке. Конечно, можно просто написать программу, которая вычисляет сумму. Для современных компьютеров это элементарная задача. Но великий программист узнает ответ просто потому, что у него голова на плечах. Он придумает красивую программу, которая будет решать задачу по-другому - правильно.
Очень трудно объяснить, что интересного в том, чтобы биться головой об стену три дня подряд, не зная, как лучше, красивее решить задачу. Но когда ты нашел решение - это чувство нельзя сравнить ни с чем в мире.
VI.
Мой эмулятор терминала обрастал наворотами. Я регулярно использовал его, чтобы подключиться к университетскому компьютеру и получить почту или поучаствовать в конференции по Minix. Беда была в том, что я хотел скачивать и закачивать файлы. То есть мне нужно было уметь писать на диск. Для этого моей программе эмуляции нужен был драйвер дисковода. А еще ей был нужен драйвер файловой системы, чтобы она могла вникать в организацию диска и записывать скачиваемые файлы.
Тут я чуть было не сдался: мне показалось, что возни будет слишком много и дело того не стоит. Но заняться все равно было особенно нечем. В университете той весной не было ничего сложного. Развлекался я только раз в неделю - по средам ходил на собрания "Спектрума". Я был настолько антиобщественным животным, что это была для меня единственная возможность отвлечься от учебы и программирования. Без этих вечеринок я был бы в ту весну полным отшельником, а так - был почти отшельником. "Спектрум" открывал мне путь к общению, поэтому я вряд ли пропустил хоть одну встречу. Эти собрания были для меня настолько важны, что иногда я терял сон в ожидании очередного вечера, надеясь, что не буду там постоянно думать о том, какой я неконтактный, какой у меня нос и что у меня нет девушки. Это все стандартные для хакеров заморочки.
Одним словом, жизнь моя не блистала разнообразием. А разработка драйверов для дисковода и файловой системы казалась интересным делом. И я решил им заняться. Написал драйвер дисковода. А поскольку я хотел записывать файлы в файловую систему Minix, да к тому же эта система была хорошо документирована, я сделал свою файловую систему совместимой с системой Minix. Таким образом я мог читать файлы, созданные в Minix, и писать файлы на тот же диск, так что Minix могла читать файлы, созданные моей программой эмуляции терминала.
Я крутился как белка в колесе: программирование - сон - программирование еда (соленые сухарики) - программирование - сон - программирование - душ (на скорую руку) - программирование. К концу работы стало ясно, что моя программа превращается в операционную систему. И я стал думать о ней не как о программе эмуляции терминала, а как об операционной системе. Этот сдвиг произошел, вероятно, в дурмане одного из затянувшихся сеансов программирования. Было это днем или ночью? Не знаю. Сижу я в своем старом халате и работаю с программой эмуляции, снабженной дополнительными функциями. А потом вдруг понимаю, что этих функций стало так много, что программа превратилась в рабочую версию операционной системы.
Я называл ее "программой эмуляции терминала типа gnu-emacs". Gnu-emacs начинался как редактор, но его создатели встроили в него кучу разных функций. Они хотели, чтоб это был редактор, который можно программировать, но потом программистская часть выросла до невообразимых размеров и редактор стал настоящим кошмаром. В него входит все, кроме разве что кухонной раковины, именно поэтому кухонная раковина часто служит его значком. Программа известна как чудовищный монстр, который включает больше функций, чем в принципе может понадобиться редактору. То же самое происходило с моим эмулятором терминала. Он превращался в нечто гораздо большее.
From: [email protected] (Linus Benedict Torvalds)