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