Ингаллс: Посмотрите на мир Java — там так все и есть. Есть большие массивы программ, которые хорошо работают вместе благодаря соответствующим интерфейсам. Думаю, это был значительный шаг вперед. В Smalltalk было несколько идей, которые более или менее укоренились в мире. Среди них — объектно-ориентированный дизайн и интерфейсы. Еще упомяну динамические языки и пользовательские интерфейсы. Они не победили, в истории можно найти случаи, когда можно было все сделать по-другому и притом лучше. Но не думаю, что из-за этого многое можно было потерять или приобрести. Мир движется вперед медленно. Победили другие принципы — значит, они были лучше. Обо всем заботится естественный отбор.
Сейбел: Но в результате естественного отбора могут появиться и довольно причудливые формы.
Ингаллс: Да, например Beta и VHS. Но ничто действительно хорошее не теряется.
Сейбел: Еще один аспект Smalltalk, что в последние годы постоянно подчеркивает Алан Кэй, — это язык не об объектах, а о передаче сообщений. C++ и Java не могут похвастаться такой передачей сообщений, как Smalltalk. Почему эта идея столь важна?
Ингаллс: Потому что она дает подлинную независимость. Последнее высказывание Алана — мне оно тоже нравится — гласит, что язык должен во многом напоминать Интернет. Мы всегда заботимся о безопасности и придумываем самые разные механизмы безопасности в программах, с которыми постоянно могут случаться всякие нехорошие вещи. Но независимость по типу Интернета — это реальный и наилучший вариант.
Итак, чем же так хороша пересылка сообщений? Дело вот в чем: она обеспечивает полное разделение внешнего и внутреннего, на 100%. По крайней мере, если ее сделать правильно. Есть и другие системы, которые в этой области продвинулись дальше, и думаю, что в этом направлении мы еще увидим многое.
Сейбел: Итак, ничто хорошее не забывается. Есть ли другие идеи из Smalltalk или откуда-то еще, которые, по вашему мнению, стоило бы взять на вооружение всем?
Ингаллс: Я вообще-то не думаю обо всех: у меня есть то, что я хотел бы сделать, или то, работу над чем хорошо бы облегчить. Единственное мое желание по этому поводу, с точки зрения компьютерных наук, состоит в том, чтобы люди вернулись к изначальным принципам, дабы хоть как-то удержать вычислительную технику и специалистов в интеллектуальном пространстве.
Мы добились огромного прогресса в программировании систем и в знании языков. Но что если бы мы были столь же хороши в логическом программировании? И смогли бы его лучше интегрировать? Думаю, в этом случае мы бы смогли сделать значительно больше в области, относящейся к взаимодействию с человеком. Сейчас же все двигается в направлении искусственного интеллекта. Вы знаете, что в один прекрасный момент мы уже перейдем черту, за которой компьютеры будут думать лучше, чем мы сами.
Порой мне кажется, что мы сами бессознательно сдерживаем этот прогресс. До 1980 года в этой области было сделано многое. А компьютеры сейчас на порядки мощнее, умнее и быстрее. На моем последнем компьютере можно запустить музыкальный синтезатор на Smalltalk, способный рассчитать радиосигнал для радиостанции. Это трудно понять тому, кто еще помнит трудности простых арифметических вычислений.
Если сравнить нынешние достижения с возможностями в логическом программировании, в системах на основе продукционных правил, в искусственном интеллекте, то надо сказать, что тут еще есть куда идти. Я бы хотел проследить тот тип мышления, который привел в конце концов к Lively Kernel, — что такое ядро в отрыве от языка и пользовательского интерфейса? Какие еще ядра бывают? Что будет, если построить ядро на основе логического программирования, и что на основе этого можно сделать? Не думаю, что все, кто вокруг этого крутится, работают вхолостую. Господи, да с теми машинами, которые у нас есть сейчас, даже самое маленькое открытие ведет к совершенно невероятным вещам!
Сейбел: Smalltalk изначально планировался как образовательная платформа?
Ингаллс: Предполагалось, что это будет язык для детей — ребят любого возраста, если точно процитировать Алана. Думаю, всему проекту — и притом долгосрочному проекту, — среди прочего, помогло то, что мы не ставили задачу создать лучшую в мире среду для программирования. Мы собирались создать программное обеспечение для обучения, поэтому ориентировались главным образом на простоту и моделирование реального мира.
Эта образовательная цель побудила нас также сделать низкоуровневую часть насколько возможно проще. Поэтому там было множество вещей, которые работали не так быстро, как, возможно, вам бы этого хотелось. Первая система Smalltalk-72 была очень медленной; ее вторая редакция работала в 20-25 раз быстрее. Но у нас, слава богу, все заработало, мы использовали ее при работе с детьми и многому научились еще до того, как приступили ко второй версии.