И мы с девяти вечера до трех ночи торчали там, сочиняя программы. На чем мы писали? На BCPL. Опять сплошная самодеятельность, как видите. В то время я занимался математикой и формально совсем не учился компьютерным наукам.
Тогда, в 1976-1979 годах, не было степени бакалавра как таковой. В последний год можно было выбрать специализацию, например компьютерные науки. Но нельзя было заниматься одним предметом все три года - надо было еще изучать, скажем, математику, естественные науки. Я занимался математикой и закончил со специальностью “Науки об электричестве”. Тогда я считал, что компьютеры - так, игрушка, а специализация должна быть серьезной.
Но математика оказалась нелегким делом, ведь в Кембридже отличная математическая школа. Так что я переключился на электричество.
Сейбел:“Науки об электричестве” - это то, что в Америке называется “Электротехника”?
Пейтон-Джонс:Совершенно верно. Мой школьный приятель Томас Кларк тоже учился в Кембридже. Мы с ним собирали компьютеры. Покупаешь микропроцессор, много транзисторов серии 7400и соединяешь их проводами. Большой проблемой оставались принтеры и экраны. С ними было трудно.
Сейбел:Стоили очень дорого.
Пейтон-Джонс:Да, очень дорого. Части электрической схемы студент еще мог купить, но принтеры... Это были большие линейные принтеры размером с холодильник. Внутри было много механических частей, так что эти устройства оказывались нам не по карману. И еще устройства для хранения данных, любые. Поэтому мы старались обходиться клавиатурой, экраном, ну, еще простенький лентопротяжный механизм.
Сейбел:Значит, в 1976-1979 годах вы собирали компьютеры из подручных средств. Но ведь как раз в это время выпустили Altair.
Пейтон-Джонс:Да. Самоделки уже выходили из моды. Но нам просто нравилось все это.
С этими нашими машинами была еще одна сложность — программы. Самое продвинутое, что можно было загрузить, - конвеевская игра “Life” (Жизнь). Она работала прекрасно. Но что-то серьезное, вроде языка программирования, требовало слишком много работы - у нас были крохотные постоянные хранилища данных. Ну и, кроме того, все писалось в шестнадцатеричном коде, никакого ассемблера.
Сейбел:Машинный код в чистом виде.
Пейтон-Джонс:Конечно, большой компьютер Кембриджа понимал BCPL, и мы писали много программ на BCPL. Еще мы начали писать компилятор для языка, который сами изобрели, но забросили - слишком сложно выходило. То были два мира, которые не сообщались между собой. С одной стороны, мы писали компиляторы для большого компьютера на высокоуровневом языке, с другой - возились с железом.
Сейбел:Помните вашу первую интересную программу?
Пейтон-Джонс:Программа для извлечения 24-значных квадратных корней и помещения их в 99 ячеек памяти - это еще для школьного компьютера.
Сейбел:И одна оставалась в запасе!
Пейтон-Джонс:Правильно. Что-то вроде метода Ньютона-Рафсона для квадратных корней. Я страшно гордился этим. Что же было потом? Потом, наверное, тот самый компилятор, который мы забросили, на BCPL. Мы многое с ним связывали и разрабатывали его детально. Системы типизации не было, так что у нас имелись только громадные листы распечаток с картинками, схемами и стрелками.
Сейбел:В BCPL не было системы типизации?
Пейтон-Джонс:Нет. Поэтому мы рисовали типы на больших листах бумаги и ставили стрелки. Это и была наша система типизации. Программа оказалась слишком большой для наших возможностей, мы ее так и не закончили.
Сейбел:Вы извлекли уроки из этой неудачи?
Пейтон-Джонс:Я впервые понял, что если пишешь очень большую программу, то она просто не умещается у тебя в голове. До того все, что я писал, целиком помещалось в голове без особых проблем. И вот тогда я сделал первую попытку создать долговременную документацию.
Сейбел:Но даже ее оказалось недостаточно?
Пейтон-Джонс:Ну, у нас были и другие заботы - надо было получать степень бакалавра. А компьютерами мы занимались по вечерам и ночью.
Сейбел:Что вам не нравится в том, как вы учились программированию?
Пейтон-Джонс:Никто меня этому не учил. Но не уверен, что это большой пробел. Самый большой пробел - то, что я на глубинном уровне так и не приобрел познаний в объектно-ориентированном программировании. Нет, я знаю, конечно, как писать объектно-ориентированные программы. Но делать это в большом масштабе - дело совсем другое. Если писать большие программы, использовать сложным образом разные иерархии классов, создавать фреймворки - вот тогда приходит глубинное понимание. Это не то же самое, что прочесть книгу.
Читать дальше
Конец ознакомительного отрывка
Купить книгу