Сейбел:
Сеймур Паперт писал в книге “Mindstorms” (Мозговые штурмы) об отладке как о важном элементе интеллектуального арсенала: идея программирования заключается не в том, чтобы найти обязательно верный ответ, но в том, чтобы найтиИнгаллс:
Вот именно! Нам нужно научиться ясно мыслить и задавать вопросы. Для меня это просто основополагающее понятие. Если вы живете в семье, в которой, если дверца шкафа не закрывается, то ее осматривают и видят, что из петли выпал винтик, - это одно, а если в такой, где в данном случае просто говорят: “О, дверца сломалась, надо кого-то вызвать”, - то это другое; чувствуете разницу? Думаю, не надо быть экспертом по компьютерам, чтобы понять, когда то, что вы видите, не работает. Спрашивайте. Смотрите. И думайте, как устранить проблему, если вы с ней столкнулись. Мне кажется, что это так просто и в духе человеческой натуры, что передается из поколения в поколение.Компьютеры - безусловно, необходимый в этом случае посредник. Но это ведь только компьютеры. Они могут передать что угодно, но мне кажется, что все основное заключено в человеке, поэтому вряд ли мы сможем просветить весь мир, просто научив его пользоваться компьютерами.
Сейбел:
Вы помните первую интересную программу, написанную вами?Ингаллс:
Дайте-ка подумать. В любом моем программистском опыте было нечто нешаблонное. Так, изучая VisiCalc, я написал табличную программу для перевода с помощью VisiCalc английских слов в “поросячью латынь”. На мой взгляд, это интересно, поскольку табличная метафора была сродни параллельному программированию. Такой анализ текста был и интересен, и познавателен.Сейбел:
То есть в VisiCalc имелись примитивы для разбиения строк?Ингаллс:
Да, там можно было разбивать строки. Правда, может, на самом деле у меня был Lotus 1-2-3, а не VisiCalc, потому что я что-то не уверен, были ли в VisiCalc строковые примитивы. У меня был маленький Poqet PC - один из первых настоящих на л а донников. Он работал от двух батареек, я поставил на него 1-2-3, и когда летел на самолете через всю страну, то думал, что бы такого сделать.Сейбел:
Вероятно, это было гораздо позже того, как вы научились программировать, потому что когда вы начинали, никаких Poqet PC явно не было.Ингаллс:
Да, позже. Самое интересное из того, что я сделал на Фортране: я взял статью Вэла Шорра о МЕТА II - это отличный, очень простой компилятор компиляторов - и написал его реализацию на Фортране. Вдруг оказалось, что можно пользоваться другими языками в чисто фортрановой среде. Это было самое интересное, что я сделал на Фортране - ведь здесь Фортран использовался для освобождения от мира Фортрана.Сейбел:
Интересно получается: таблица с “поросячьей латынью”, потом это, потом хеш-таблица на Коболе для профилировщика - можно ли сказать, что какая-то часть вашей души любит идти против течения?Ингаллс:
Мне не кажется, что я иду против течения, но каждый раз, когда у меня есть возможность поиграть в вычислительной среде, я стараюсь пробовать что-то новое. Вот почему мне так нравилось делать все эти системы на Smalltalk. Начинаешь, можно сказать, с нуля, и первая задача - понять, что нужно ассемблировать и заставлять работать в первую очередь, что поможет сделать следующий шаг и определит направление, в котором двигаться.В этих случаях можно говорить о выходе за рамки шаблона. Это способ убедиться в том, что ты овладел материалом, в том, что ты способен на то, о чем и подумать раньше не мог.
Сейбел:
Сильно ли изменились со временем ваши представления о программировании?Ингаллс:
Хороший вопрос. С одной стороны, у нас теперь гораздо больше машинных циклов. То есть я спокойно могу, грубо говоря, профукать несколько циклов, но сделать все чистенько. Но основные вещи не изменились вообще: сначала надо разобраться в том, что такое ядро или ядра, с которыми я должен работать, и какой цели я пытаюсь достичь.Что еще слегка изменилось: теперь я не занимаюсь в своей группе квантовой механикой. Я нахожусь на более высоком уровне. Это означает, что я провожу больше времени, определяя цели и занимаясь политикой, и меньше занимаюсь кодом. Я создаю контекст. Раньше мне везло, я работал с уже существующим контекстом, мне не нужно было его создавать. Но время от времени я все же сажусь и пишу довольно серьезный код.
Сейбел:
Я читал одну из ваших работ в 1970-е о профилировщике для Фортрана. В предисловии вы с восторгом говорили о том, как этот инструмент изменил ваши представления о программировании: сначала вы обдумывали, как собираетесь писать, писали и отлаживали, а теперь, обдумав, что будете писать, пишете очень простую версию, затем профилируете ее и оптимизируете. Вы по-прежнему работаете таким же образом?Ингаллс:
Я действительно сначала ищу явные эффекты - пикселы на экране или что-то в этом духе, - потому что они очень мотивируют, и нередко узнаешь что-то новое о том, что хотел сделать, просто взглянув на то, что происходит.