60388.fb2 Ради удовольствия - читать онлайн бесплатно полную версию книги . Страница 6

Ради удовольствия - читать онлайн бесплатно полную версию книги . Страница 6

- Ну, вспомни, как ты жил. Скажем, вот вы с сестрой в воскресенье утром пошли куда-нибудь с родителями?

- Мои родители разошлись к тому времени.

- Сколько тебе было, когда они разошлись ?

- Не знаю. Кет шесть. Или десять. Не помню.

- А что вы делали на Рождество? Помнишь?

- Смутно помню, как мы надеваем парадную одежду и едем навестить папиного папу в Турку. То же самое на Пасху. Больше ничего особенного не помню.

- Каким был твой первый компьютер?

- Это был знаменитый VIC-20, который купил мой дедушка по материнской линии. Его привезли в коробке.

- В большой? Как коробка из-под лыжных ботинок?

- Примерно.

- А дедушка? Что ты о нем помнишь?

- Это был мой самый близкий родственник, наверное, но я... Ну ладно. Он был полноватый, но не толстый. Лысел. Задумчивый такой, как рассеянный профессор. Он ведь и был рассеянным профессором. Я часто сидел у него на коленях и набивал его программы.

- Ты помнишь его запах?

- Нет. Что за странный вопрос?

- У каждого дедушки есть свой запах. Дешевого одеколона. Бурбона. Сигар. А какой запах был у твоего?

- Не знаю. Я ничего не замечал, потому что был занят компьютером.

Рождение

ОПЕРАЦИОННОЙ

СИСТЕМЫ

I.

Предупреждение: вплоть до страницы 142 текст насыщен компьютерным жаргоном.

Некоторые люди запоминают события по машинам, которые тогда водили, должностям, на которых работали, местам, в которых жили, или по девушкам, с которыми встречались. У меня все связано с компьютерами.

Пока я рос, у меня сменилось три компьютера. Вначале - тот самый Commodore VIC-20 - дедушкино наследство. Это один из первых домашних компьютеров, предшественник сегодняшних PC. После VIC-20 шел Commodore 64, а потом - Amiga, у которой было особенно много поклонников в Европе. Все эти компьютеры никогда не были по-настоящему популярны, как PC или даже Apple II, который уже был широко распространен, когда я играл с VIC.

В те времена, до появления PC, домашние пользователи программировали в основном на ассемблере. (Просто не верится, что я дожил до рассказов про "те времена"!) У компьютеров были собственные операционные системы, типа DOS, стоявшей на PC. В зависимости от компьютера эти операционки были либо совсем элементарными, либо чуть более продвинутыми. У них, как и у DOS, имелся загрузчик программ и базовый язык. Никаких стандартов тогда еще не существовало, и за рынок боролось несколько компаний. Commodore входила в число известных.

Когда я выжал из VIC-20 все, что смог, я стал копить на модель следующего поколения. И это играло в моей жизни важнейшую роль. Как я уже говорил, я не помню, где кто из моих родственников жил в тот или иной момент, и множество других вещей, но путь к моему второму компьютеру мне не забыть.

Сначала я отложил деньги, полученные в подарок на Рождество и на день рождения (поскольку я родился 28 декабря, эти два праздника для меня сливались). Летом я заработал еще немного на уборке хельсинкских парков. Многие парки Хельсинки - это просто зоны отдыха или слегка окультуренные леса, а не те аккуратно подстриженные посадки, которые обычно ассоциируются с городскими парками. Нам поручалось спиливать чересчур разросшиеся кусты и подбирать засохшие ветки - было даже интересно. Мне всегда нравилось на природе. А одно время я работал почтальоном - разносил рекламные проспекты. Вообще-то я не особенно увлекался летними работами, но в тот период я ими занялся. Хотя, наверное, основную сумму я накопил за счет школьных стипендий.

В Финляндии довольно распространены пожертвования школам, даже государственным начальным. Поэтому, начиная с четвертого класса, деньги распределяются среди школьников в соответствии с замыслом учредителя фонда. Помню, в моей школе одно из пожертвований предназначалось самому популярному ученику класса. Это было в шестом классе, и мы решали, кому дать деньги, простым голосованием. Могу добавить, что мне они не достались. Сокровище равнялось двумстам финским маркам, или по тем временам примерно сорока долларам, но шестиклассникам цена популярности представлялась весьма высокой.

Очень часто деньги давали самому лучшему ученику по определенному предмету или виду спорта. Много наград выделяла сама школа или государство. Иногда призы с течением времени обесценивались. Помню, один равнялся примерно центу. В такой ситуации школа входила в долю, чтобы сделать награду более весомой, но она все равно оставалась небольшой. Тут уже соль была просто в сохранении традиции ежегодного присуждения награды. В Финляндии к научным традициям относятся серьезно, и это хорошо.

Я ежегодно получал стипендии как лучший математик.

К старшим классам суммы увеличивались. Самые крупные доходили до 500 долларов. Это и был основной источник денег при покупке моего второго компьютера. Моих карманных денег на него не хватило бы. Еще немного я занял у папы.

Шел 1986 или 1987 год. Мне было лет шестнадцать-семнадцать. С баскетболом было покончено. Я потратил кучу времени, исследуя рынок и выбирая, какой компьютер купить. PC тогда особого интереса не представляли, поэтому когда я мечтал о новой машине, я знал только, что это будет не PC.

В итоге я выбрал Sinclair QL, о котором многие из вас по молодости лет, возможно, и не слышали. Поэтому я кратко напомню его историю. Sinclair был одной из первых 32-разрядных машин на рынке домашних пользователей. Сэр Клайв Синклер, основатель компании, - это своего рода британский Стив Возняк (Стив Возняк (Steve Wosniak) - один из создателей Макинтоша. - Прим. пер). Он выпустил компьютерные комплекты, которые в Америке продавались под названием Timex. Компания-производитель часов Timex импортировала компьютерное оборудование Sinclair и продавала его в Америке под тем же именем, что и часы. До того как Синклер стал продавать готовые компьютеры, он поставлял эти комплекты.

На Sinclair стояла операционная система Q-DOS. Тогда я ее знал как свои пять пальцев. Она была написана под этот конкретный компьютер. По тем временам у нее был довольно продвинутый Бейсик и очень неплохая графика. Больше всего мне нравилась ее многозадачность: можно было запускать одновременно несколько программ. Правда, это не распространялось на Бейсик - запустить больше одной программы на Бейсике было нельзя. Но для программ на ассемблере можно было устроить так, чтобы операционная система составляла график и разбивала время на периоды - в итоге несколько программ работали одновременно.

В этом компьютере был установлен чип 68008 с частотой 8 мегагерц - вторая и более дешевая версия чипа 68000 компании Motorola. Первое поколение чипов 68000 работало внутри с 32 разрядами, но со всем, что было вне ЦП (центрального процессора) - например, с памятью или модулями расширения, общалось через 16-битный интерфейс. Поскольку за один раз из памяти загружалось все равно только 16 бит, 16-битные операции часто оказывались быстрее 32-битных. Эта архитектура имела бешеную популярность; она и сейчас используется во множестве встроенных устройств и в автомобилях. Это другие чипы, но архитектура у них та же. Чип 68008, который стоял в моем компьютере, для общения с внешним миром (вне ЦП) использовал 8-битный, а не 16-битный интерфейс. Но обмениваясь с внешним миром восьмибитными фрагментами, внутренне он оставался 32-разрядным. Поэтому программировать его было намного приятнее.

У него было 128 килобайт (не мегабайт) памяти, что по тем временам было очень много для домашнего компьютера. У VIC-20, на смену которому он пришел, было всего три с половиной килобайта. А поскольку он был 32-разрядным, то не возникало никаких проблем с доступом к памяти, что тогда было совершенно неслыханно. Именно поэтому я и хотел купить этот компьютер. У него была интересная технология, и мне нравился ЦП.

Вначале я хотел купить его со скидкой в магазине у знакомых моего приятеля. Но тогда пришлось бы очень долго ждать его доставки, поэтому я просто двинул в "Академиска Букханделн" - самый большой книжный в Хельсинки, где был и компьютерный отдел. Там я и купил свой компьютер - получил прямо в руки.

Он стоил около двух тысяч долларов. Раньше было такое правило, что все компьютеры начального уровня стоили две тысячи. Все изменилось только за последнюю пару лет. Теперь можно купить новый ПК за 500 долларов. Это как с автомобилями. Никто не выпускает автомобили дешевле десяти тысяч долларов. Начиная с некоторой суммы, снижать цену не имеет смысла. Конечно, можно сделать машину, которая будет продаваться за семь тысяч, но автомобилестроители считают, что тот, у кого есть семь тысяч на машину, с большим удовольствием заплатит десять за более навороченную модель: с кондиционером и прочим в комплекте. Модели начального уровня в этом году стоят примерно столько же, сколько стоили пятнадцать лет назад. А если учесть инфляцию - может, чуть меньше. Зато они намного лучше.

И с компьютерами было так же. Пока их не начали покупать все подряд, существовал пороговый уровень в две тысячи. Если бы самый дешевый компьютер стоил существенно больше, то компании не удалось бы продать много экземпляров. Но, поскольку их производство обходилось довольно дорого, то и продавать их намного дешевле особого смысла не имело. Люди всегда были готовы заплатить лишние двести долларов за улучшенную модель.

За последнюю пару лет компьютерное производство намного подешевело. И даже машины начального уровня стали крутыми. Желающих заплатить лишние двести долларов за немного улучшенную версию теперь гораздо меньше. А не имея возможности привлекать покупателей дополнительными возможностями, компании вынуждены снижать цены.

Скажу честно: в 1987 году QL привлек меня, в частности, тем, что очень круто выглядел.

Угловатый, матово-черный, с черной клавиатурой. Не закругленная хорошенькая машинка, а что-то суперэкстремальное. Клавиатура была толщиной примерно в два с половиной сантиметра, потому что составляла единое целое с компьютером. Это была стандартная для домашних компьютеров конструкция. В правой части клавиатуры, где обычно бывает цифровая панель, размещались два разъема для революционной новинки - микропривода Sinclair. Это устройство больше нигде не применявшееся - использовало замкнутую петлю из пленки. По организации и функциям оно было подобно дисководу. Поскольку там была одна длинная петля, ее можно было крутить до тех пор, пока не найдешь то, что нужно. Однако устройство себя не оправдало, потому что сильно уступало флоппи-дисководам в надежности.

Итак, я потратил на Sinclair QL почти две тысячи долларов. И писал для него одну программу за другой. Я все время искал всякие интересные задачи. У меня был компилятор и интерпретатор языка Форт, с которыми я и возился. Форт это очень странный язык; сейчас им уже никто не пользуется. Эта игрушка, рассчитанная на определенную рыночную нишу, в 80-е годы довольно широко использовалась для разных целей, но по-настоящему популярной так и не стала, потому что оказалась слишком сложной для непрофессионалов. Особой пользы от Форта не было.

Программный инструментарий я писал себе сам. Одной из моих первых покупок для Sinclair был модуль расширения с картой EEPROM (электрически стираемым программируемым постоянным запоминающим устройством). Туда можно было записывать информацию самостоятельно, пользуясь специальными модулями, и эта информация сохранялась при выключенном питании. Так я мог держать свои инструменты всегда под рукой, не тратя на их хранение драгоценное ОЗУ (оперативное запоминающее устройство), а ОЗУ целиком использовать под программы.

Операционками я заинтересовался так: купил флоппи-контроллер, чтобы не пользоваться микроприводами, но к нему прилагался такой поганый драйвер, что пришлось написать новый. Пока писал - обнаружил проколы в самой операционной системе или по крайней мере несоответствие между тем, что обещала документация, и тем, что реально происходило. Я с этим столкнулся, когда моя программа отказалась работать.

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

Можно накупить книг с частичными листингами операционной системы. Большое подспорье. Еще нужен дизассемблер - программа перевода машинного кода на язык ассемблера. Это важно, потому что по машинному коду очень трудно отслеживать работу алгоритма. Вдруг натыкаешься на переход к числовому адресу - читать невозможно. Хороший дизассемблер заменяет номера именами и при этом позволяет выбирать эти имена. А еще он помогает найти определенную цепочку команд. У меня был собственный дизассемблер, который давал довольно симпатичные листинги. Когда что-то не работало, я мог потребовать листинг, начиная с определенного места, и увидеть все, что собиралась делать операционная система. Иногда я использовал дизассемблер не потому, что что-то сбоило, а просто чтобы узнать, как оно должно работать.

Меня бесило, что операционная система QL предназначалась только для чтения. Там ничего нельзя было изменить. Нет, там были выходы, где можно было передать управление какими-то функциями собственным программам, но только в определенных местах. Гораздо лучше, если в операционной системе можно заменять все. Дурацкая идея - записывать операционку в ПЗУ (постоянное запоминающее устройство).

Хоть я и сказал, что в Финляндии полно фанатов новых технологий, Sinclair QL не завоевал в этой седьмой по размерам стране Европы сколько-нибудь значительных позиций. И поскольку рынок был так мал, всякую обновку для этой революционной суперсовременной машины приходилось заказывать в Англии и получать по почте. Для этого надо было сначала прочесать каталоги в поисках продавца нужной штуки. Потом - добыть удостоверенный чек и неделями ждать доставки (это было до эры Amazon.com и кредитных карточек). Через все это мне пришлось пройти, когда я надумал увеличить ОЗУ со 128 до 640 килобайт. И мытарства повторились снова, когда я покупал новый ассемблер для перевода ассемблерных программ в машинный код (нули и единицы) и редактор связей, который по существу является текстовым процессором для программирования.

Новый ассемблер и редактор работали прекрасно, но они были на микроприводах и их нельзя было перенести на EEPROM. Поэтому я написал собственный редактор и ассемблер и дальше использовал только их. Обе программы были написаны на ассемблере, что кажется невероятно глупо по нынешним меркам. Это очень сложный и нудный процесс: решение задачи на ассемблере занимает раз в сто больше времени, чем, например, на Си (который тогда уже был).

Я добавил несколько команд к интерпретатору, который прилагался к машине. В результате, если я хотел что-то отредактировать, я автоматически запускал свой редактор - он всегда был под рукой. Мой редактор был быстрее входившего в комплект машины. Особенно я гордился скоростью вывода символов на экран. Обычно для машин такого класса экран заполняется символами так медленно, что видно, как прокручивается текст. А мой редактор выстреливал текст с такой скоростью, что при быстрой прокрутке экрана все сливалось. Для меня это было важно. Машина стала гораздо проворнее, и я знал, что вложил в это много труда.