Норвиг:Я хранил в каждой из ячеек ноль или единицу, а мне нужно было хранить где-то больше информации. И тогда я сказал: “Можно же хранить другие числа”. Даже не помню, сделал ли я битовое хранилище. Кажется, я обошелся числами - скорее десятеричными, чем двоичными, потому что двоичные нам преподавали плохо. Потом я еще добавил другие признаки - повторяется ли число, и если да, то с какой периодичностью. С одним предыдущим поколением этого не сделать.
Сейбел:В начале своей программистской карьеры вы что-нибудь делали, чтобы улучшить свои навыки? Или просто программировали?
Норвиг:Просто программировал. Конечно, я делал что-то просто для удовольствия, особенно на младших курсах, когда мог не сильно заботиться о расписании. Я думал: “Вот интересная задача, попробую-ка ее решить”. Не потому что задали, а просто для удовольствия.
Сейбел:Вы изучали компьютеры в колледже, но по компьютерным наукам не специализировались?
Норвиг:Когда я поступал, компьютерные курсы были в ведении факультета прикладной математики. Когда я заканчивал колледж, уже был отдельный компьютерный факультет, но я специализировался по математике. Пойти на компьютерный факультет значило специализироваться по программам IBM. Надо было изучать их язык ассемблера, их операционную систему OS/360 и так далее. Не очень-то увлекательно. Я ходил на лекции, которые мне нравились, но погружаться во все это не хотел.
После колледжа я два года проработал в Кембридже, в одной компании, выпускавшей ПО. Потом я подумал: “Колледж надоел мне за четыре года, работа - за два, значит, колледж я люблю вдвое больше”.
Сейбел:Чем вы там занимались?
Норвиг:Они разрабатывали инструменты для проектирования программ, а также занимались консалтингом. Основатели компании работали в Дрейперовской лаборатории в Кембридже над проектом “Аполлон” и еще над чем-то. Поэтому у них были связи в ВВС и правительственные заказы. У них был интересный взгляд на то, как проектировать программы. Я не очень верил в саму идею, но это было занятно.
Одним из проектов была программа построения блок-схем - она должна была анализировать готовую программу и генерировать для нее блок-схему. Отличная мысль, потому что блок-схемы нужны. Но на самом деле их всегда рисуют не до, а после написания программ. Эта программа была умная, потому что умела работать с частичной грамматикой, так что при работе с синтаксически некорректной программой пропускала те ее части, которые не могла разобрать. Она должна была уметь разбирать, к примеру, операторы IF, поскольку те образовывали разные блоки, но по поводу других частей говорила: “Сбросим это все в один блок”. И вот мы получили контракт на разработку, в котором было указано, что программа должна работать под UNIX. Мы одолжили машину в Массачусетском технологическом институте и применяли для компилятора все инструменты UNIX - yacc и так далее. В последний момент нам сказали: “Нет, использоваться будет VMS”. Так что никакой уасс мы уже не могли применять, но решили, что он нам и не нужен - ведь мы брали его только для составления таблиц, а это мы уже сделали.
Сейбел:Пока грамматика не меняется, все в порядке.
Норвиг:Да, так что мы поставили программу, заказчики были счастливы, а потом, разумеется, грамматика изменилась. У нас больше не было доступа к машинам с UNIX. Мне пришлось править грамматику, роясь в таблицах, и я решил: если вот здесь у нас переход в новое состояние, я создам свое состояние, и переход будет к нему.
Сейбел:Это было правильное решение? Вы не думали о том, чтобы просто написать новый парсер?
Норвиг:Наверное, так и надо было поступить. Но ведь я сделал лишь одну небольшую правку.
Сейбел:А не получилось так, что им каждые три недели приходилось сталкиваться с очередным изменением в грамматике?
Норвиг:Я тогда уже ушел в магистратуру, и это уже была не моя проблема.
Сейбел:Уже не ваша... Итак, вы защитили диссертацию. Вы бы хотели, чтобы ваше обучение программированию шло по-другому?
Норвиг:В конце концов я занялся промышленной разработкой ПО. Возможно, стоило заняться этим раньше. Постепенно я всему научился, но много времени провел в колледже и магистратуре. Правда, мне нравилось, так что ни о чем не жалею.
Сейбел:А чему вам пришлось учиться, если говорить о промышленной разработке ПО?
Читать дальше
Конец ознакомительного отрывка
Купить книгу