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