Миллиардер из Кремниевой долины (Аллен) - страница 29

Мы отнесли наш клад в терминальный зал и изучали его часами. У меня не было никакого Розеттского камня, и понимал я в лучшем случае пару строк из десяти, но все равно восхищался элегантностью компактного кода. Я знал: чтобы понять архитектуру такой операционной системы, как TOPS-10, необходимо освоить Ассемблер – язык низкого уровня, который обращается непосредственно к машине. Заметив мой интерес, Стив Расселл отозвал меня в сторону, протянул руководство по Ассемблеру в обложке из блестящего пластика и сказал:

– Тебе нужно это прочесть.

В нашем мире с его принципом «сделай сам» можно было больше ничего не говорить.

Дрожа от возбуждения, я отнес книгу домой и штудировал ее, пока не выучил вдоль и поперек. Спустя неделю и 150 страниц я уперся в стену; руководство описывало, как писать команды, но никак не поясняло, что они делают с компьютером. Я снова пришел к Расселлу и сказал:

– Я не понимаю.

Расселл (с озорным блеском в глазах) ответил:

– Ага, тебе стоит прочесть вот это, – и протянул мне еще 150 страниц в пластиковой обложке: справочник по системе.

Я с трудом одолел текст и понял, что чего-то по-прежнему не хватает. Ужасно не хотелось беспокоить Расселла, но я снова пошел к нему и сказал:

– Я все равно не понимаю. Как можно послать символы на телетайп?

Расселл ответил:

– Ну да, тебе нужно еще кое-что.

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

– Это просто фантастика, – сказал я Биллу и остальным.

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

В отличие от Бейсика или Фортрана, где в каждой команде объединяется несколько инструкций, Ассемблер – прямое, точное представление двоичного машинного кода, превращенное в текст и символы, которые легче запомнить, чем последовательности нулей и единиц. Например, строчка на Бейсике выглядит так:


>А = В + С


На Ассемблере та же самая команда пишется так:


>Load B.

>Add C.

>Store in A.

(Загрузить В. Прибавить С. Сохранить результат в А.)


Ассемблер был менее выразительным и гораздо более трудоемким, чем Бейсик. И если программы, написанные на языках высокого уровня, можно исполнять на разных процессорах почти без изменений (это похоже на близкие диалекты), для каждой аппаратной платформы был свой Ассемблер – и они отличались друг от друга, как немецкий и португальский. С другой стороны, загруженный в машину код Ассемблера исполнялся в сотни раз быстрее. Вы обращались прямо к аппаратному обеспечению, непосредственно к «железу». Быстрее просто некуда.