доносящиеся оттуда разговоры привлекали мое внимание больше, чем распознавание речи.

Сейбел: Это распознавание речи оказалось таким скучным - или тут что-то связано с программированием?

Ингаллс: Нет, оно было интересным, даже захватывающим. Я в конце концов построил целую среду для персонального компьютера на том мини-компьютере Sigma 3. Использовались пачки перфокарт, работа велась главным образом на Фортране. Из всего этого я создал интерактивную среду. Я написал на Фортране текстовый редактор, а затем средство удаленного управления с терминала. Получилась симпатичная вычислительная среда, довольно затейливая.

Сейбел: Стремление к интерактивным средам красной нитью проходит через вашу карьеру. Например, первый Smalltalk вы написали на Бейсике, потому что он обеспечивал интерактивную среду. Когда вы впервые поняли, что главное условие решения проблемы - это интерактивная программная среда?

Ингаллс: Хороший вопрос. Думаю, немедленная отдача хороша сама по себе.

Сейбел: Где же вы впервые получили немедленную отдачу?

Ингаллс: Вспоминаю пару примеров. У меня была возможность поработать с наполовину интерактивным PL/I. А мой друг работал на IBM, когда у них была интерактивная среда APL. Не помню, что из этого было сначала. Кажется, APL. Она повлияла на меня во многих отношениях: как из-за немедленного взаимодействия - результаты сразу же возвращались, - так и из-за вычисления выражений, которое очень отличалось от ориентированного на операторы программирования на Фортране.

И это сохранилось до сих пор, просто здорово, - вся традиция Си/С++/ Java, хотя и развивается в объектно-ориентированном направлении, по-прежнему ориентирована на операторы. Но если есть возможность удобной работы с выражениями, то это дает совершенно другой опыт. Для меня это применение математики в жизни. Короче, вот один из этих двух примеров. Когда я пришел в Xerox, интерактивных языков, кроме Лиспа, не было. Но мне посчастливилось не подсесть на Лисп. Все сложилось бы иначе, если бы я на него подсел.

Сейбел: Как так?

Ингаллс: Думаю, я бы тогда полностью перешел на то направление. А поскольку я не перешел, мне хочется делать то же самое по-другому. Думаю, то, над чем мы работали с Аланом, было столь же симпатично и живо, но включало более естественное представление объектов и сообщений.

Думаю, если бы мне было так же удобно в системе вроде Лиспа, то я бы и не беспокоился. Я бы попытался построить работу с ней таким образом, чтобы получить объекты, но начать работать с объектами, а затем сделать эту работу интерактивной и удобной было, думаю, серьезным вкладом.

Сейбел: Алан Кэй сказал, что и у Лиспа, и у Smalltalk одна и та же проблема: они настолько хороши, что пожирают собственных детей. И если бы вы знали Лисп, то Smalltalk оказался бы первым съеденным ребенком.

Ингаллс: Возможно.

Сейбел: Так что перед нами отличный пример счастья в неведении: оно оставляет место для творчества. Но порой кажется, что неведение вообще свойственно данной отрасли: люди ни о чем не имеют понятия и постоянно изобретают колеса с острыми углами.

Ингаллс: Так и есть.

Сейбел: Нужно ли с этим бороться? Или это просто цена пространства для творчества? Или лучше бы нам больше понимать, что происходит в мире?

Ингаллс: Я за разнообразие. Из приведенного мною примера можно заключить: “Нет, пусть люди делают что хотят”. Да, от незнания порой делаешь лишнее, но естественный отбор все исправит. И в конце концов все это помогает продвигаться в будущее.

Можно вспомнить множество областей, где попытки стандартизировать, привести все к общему знаменателю подавляли творческий импульс. Я работаю в компании, где используют Java, так что без подробностей. На конференции OOPSLA было хорошо видно, что когда появился язык Java, это не только замедлило и даже приостановило работу над другими объектно-ориентированными языками, но также сказалось на динамическом программировании в целом. Я считаю это большой потерей.

Но ничто не вечно. В итоге все поняли: “Так, минутку, Java имеет ряд преимуществ, из-за которых мы его используем, но у других динамических языков программирования есть и другие преимущества, так что пора вернуться к ним”. Этот очевидный для меня пример, так как я сам был тому свидетелем.

В значительно большей степени я не люблю факультеты компьютерных наук, которые считают своей задачей готовить людей к работе в индустрии, причем если индустрия идет таким-то путем, то и наших студентов мы будем готовить к такому-то пути. Это как раз то, чего делать не надо. Студентов необходимо учить думать вообще, выходя за рамки, и прокладывать другие пути, по которым мы должны развиваться.

И это большая проблема, потому что у такого стандарта как раз есть серьезные преимущества. Если тысячи программистов работают с тысячами надежных процедур, то работа непременно будет сделана.

Есть некоторая разница между компьютерными науками в сфере производства и компьютерными науками в сфере интеллектуального развития. Так, мне нравилось работать над Lively Kernel, хотя это в каком-то смысле тривиальный проект. В нем нет ничего нового: я использую все, что уже было. Он построен на JavaScript и графике, которую можно получить в броузере. Но мне было интересно, поскольку это тоже ядро, как и Squeak. Поскольку JavaScript и графика уже есть в броузере, работы над ядром немного. Оживить графику и построить небольшую вычислительную среду.

Занимаясь чем-то подобным, небольшим, это может понять любой. Если что-то выкинуть, например язык и графику, то возникнет вопрос: где же тогда ядро? И это интересный вопрос, на мой взгляд.

Надеюсь, подобное исследование - хотя это и не совсем моя работа - может вдохновить компьютерные науки на изучение процесса создания ядра, на создание других ядер - еще более простых и унифицированных. Точно так же, как и в математике. Математика обнаружила, что очень многое можно упростить с помощью символов. И после этого можно начинать думать о более крупных конструкциях. По крайней мере, я надеюсь.

Сейбел: Говоря о ядре, вы имеете в виду программное ядро. В чем ключевая идея Lively Kernel?

Ингаллс: Под ядром я понимаю примерно следующее: вы сводите вместе достаточно материала, который может в каком-то смысле создавать себя или другие полезные вещи. Squeak, например, действительно способен создавать себя. Lively Kernel предполагает наличие JavaScript и кое-какой графики, но в итоге она позволяет редактировать графику, и вы можете создавать новые графические штуки и редактировать программы, создавая таким образом новые программы. То есть можно в итоге создать все приложения, которые вы хотели бы встроить в броузер.

Думаю, играя в эту игру, начинаешь в конце концов скрывать ненужные уровни. Вопрос только в том, где игровое поле. В случае Squeak весь язык является частью ядра, с собственным компилятором и интерпретатором байт-кода. И у него есть собственная графическая система -BitBlt - и все, что с ней связано.

Кажется, это важнейшая часть любого ядра, но ее можно убрать. Можно сказать: “Предположим, у нас динамический язык; предположим, у нас есть графика”. Раньше я бы подумал: “Ну и все тут”. Но это не так. Остается еще кое-что: как свести графику, чтобы сделать интересную среду пользовательского интерфейса? И как перевести программы и скрипты на такой уровень, чтобы можно было их изменять?

В поисках того, что запускалось бы без установки в броузере, я был вынужден взять то, что было в самом броузере. А что в нем есть? JavaScript и графическая среда. Это был шанс отойти на шаг и сказать: “Что ж, есть ядра языка, есть графические ядра и еще один тип ядра - самостоятельное ядро среды пользовательского интерфейса”.

Сейбел: И в Lively Kernel, и в Squeak, насколько я понял, немного с ними поиграв, часть этого ядра, которое не относится ни к языку, ни к графике, - это некое представление пользовательского интерфейса, которое можно программировать: все эти маленькие ручки, которыми можно управлять программно.

Ингаллс: Да.

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату