Так я бросил физику и обратился к компьютерным наукам и программированию. До этого я по-настоящему не занимался программированием - только математикой и компьютерной теорией. Родители не хотели покупать мне Apple П. Я заикнулся об этом однажды. Выпрашивать не стал, но сказал, что с помощью компьютера смогу выучить иностранный язык - это была своего рода маскировка. “Нет, ты будешь тратить время на свои игры”, - ответили родители и были правы. Вот так они уберегли меня от игр.
Сейбел:Программисту легче найти летнюю подработку, чем физику. А что еще для вас было в этом привлекательного?
Айк: Связь теории и практики, особенно на пользовательской стороне процесса написания компиляторов. В численные методы я погружался не слишком глубоко. Не так уж интересно ломать голову над тем, как представить действительные числа в виде чисел с плавающей запятой с конечной точностью. Адский кошмар. Пользователи JavaScript до сих пор обжигаются на этом - мы выбрали этот стандарт 1980-х, но он не всегда работает так, как ожидалось.
Сейбел: Тут как с испанской инквизицией - никто не ждет плавающую запятую. [43] “Никто не ждет испанскую инквизицию” (No one expects the Spanish Inquisition) - ставшая крылатой фраза из британского юмористического телешоу “Монти Пайтон”. - Прим. ред.
Айк: Никто не ожидает встретить получаемые ошибки округления - в пятой степени невообразимые. Округление плохо выполняется в двоичной системе. Поэтому в JavaScript, там, где речь идет о долларах и центах, суммах и разностях, встречаются странные нули с девяткой после них. В одном блоге критиковали Safari и Мак за неправильные математические вычисления. Это стандарт двойной точности IEEE - он встречается везде, и в Java, и в Си.
Кроме того, физика мне казалась чем-то застывшим. Что-то есть в этом нездоровое - люди протирают штаны, открывая что-нибудь вроде темной энергии, то, что принципиально нефальсифицируемо. Меня притягивали более практические вещи, которые тем не менее прочно опираются на математику и логику.
Затем я перешел в Иллинойский университет в Урбана-Шампейне, чтобы наконец получить степень магистра. Я думал, что все уже позади, когда оказался в проекте, для которого IBM набирала специалистов. У них была странная машина 68020, купленная у какой-то компании из Дэнбери (Коннектикут). На этот компьютер они портировали Xenix. Работал он так плохо, что они наняли нашу исследовательскую группу, сделав из нее группу контроля качества. Каждый понедельник появлялся человек в синем костюме и произносил напутственные слова. Преподавателям было, в общем, все равно. Может, я и научился бы чему-нибудь новому, но слышал, о чем говорил в кампусе Джим Кларк, и решил, что хочу работать в Silicon Graphics.
Сейбел: Над чем вы работали в SGI?
Айк: В основном над ядром и сетевым кодом. Я постепенно совершенствовался в языках, так как мы решили создать собственный уровень для управления сетью и анализа пакетов. Я написал язык выражений для сравнения полей и пакетов, и еще транслятор, который уменьшал и оптимизировал все это до небольшого числа фильтрующих масок для первых 36 байт пакета.
В конце концов я создал другую реализацию языка - компилятор, который генерировал Си-код на основе описания протокола. Кто-то захотел, чтобы наш анализатор пакетов поддерживал AppleTalk. Это было большое и сложное собрание протокольного синтаксиса для последовательностей и полей разных размеров и зависимых типов... в основном массивов, всякие штуки в этом роде. Это было занятно - трудная задача, которую нужно решить. В итоге мне пригодились некоторые знания о компиляторах из старой “Книги Дракона” Ахо и Ульмана [44] А. Ахо, Р. Сети, Д. Ульман “Компиляторы. Принципы, технологии, инструменты”. - Вильямс, 2003.
. Думаю, я сделал клон утилиты unifdef. Дэйв Йост уже сделал до меня что-то подобное, но его программа не работала с выражениями #if и не делала минимизацию выражений в том случае, если одни выражения определялись как U, а другие не определялись. Моя программа до сих пор используется и даже, кажется, применяется в Linux.
Я работал в SGI с 1985 по 1992 г. В 1992 г. один мой коллега из SGI перешел в MicroUnity. SGI мне к тому времени уже поднадоела - она все распухала, скупая другие компании, и постепенно переходила под контроль политиков. Так что я оказался в MicroUnity, о которой Джордж Гилдер тогда писал в журнале “Forbes ASAP”, что это будет очередной компьютерный монстр. Но все закончилось ничем - компания набрала кредитов на 200 миллионов и обанкротилась. Это было крайне поучительно. Там я занимался компилятором GCC и улучшил свои навыки работы с компиляторами. Еще я писал небольшой язык для редактора видеофайлов MPEG2, на котором можно было писать псевдоспецификации, похожие на стандарты ISO или IEC, и он генерировал тестовые битовые потоки с правильным синтаксисом.
Читать дальше
Конец ознакомительного отрывка
Купить книгу