Читаем Кодеры за работой. Размышления о ремесле программиста полностью

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

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

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

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

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

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

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

Ингаллс: Да.

Сейбел: Мне кажется, это запутывает. Я программирую или использую приложение? Хотелось бы, чтобы различия были более явными.

Ингаллс: Да, это палка о двух концах. И не думаю, что здесь есть простой ответ. Если говорить в целом, то прекрасно, что мы создаем компьютеры, которые позволяют любые изменения. Это и прямой доступ к памяти, и программирование. Мне важно, чтобы сохранялась живость, податливость, способность к изменениям. Если система динамичная и меняющаяся, то значительно проще ограничить ее и сказать: «Вот в этих рамках ничего изменить нельзя», — чем разработать что-то статичное и неизменное и пытаться потом это использовать.

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

Сейбел: Да, проще для всех, кроме тех, кто просто хотел ввести в Сеть немного текста.

Ингаллс: Видимо, так и есть. Но проще тогда добавить сверху слой вроде HTML. Думаю, базовые системы должны быть динамичными, насколько возможно. Затем можно наложить ограничения по типу или синтаксису — то, другое, третье, чтобы ее зафиксировать. Конечно, бывают ситуации, когда люди просто пользуются системой, и тогда нужна неизменность, а не гибкость. И даже, когда до них доходит, что система гибкая, это несколько пугает. Возьмем Lively Kernel: в том виде, как сейчас, это не то, что хотел бы получить конечный пользователь. Вряд ли кому-то захочется увидеть, как окно интерфейса внезапно наклоняется на 20 градусов.

Сейбел: Или проверять код кнопки, на которую пытаешься нажать.

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

Сейбел: Вы действительно полагаете, что нынешняя Lively Kernel или какая-то из ее ближайших модификаций способна стать образцом создания приложений, или это очередной мысленный эксперимент от Sun Labs, чтобы показать людям, в каком направлении думать?

Перейти на страницу:

Похожие книги

Адмирал Советского Союза
Адмирал Советского Союза

Николай Герасимович Кузнецов – адмирал Флота Советского Союза, один из тех, кому мы обязаны победой в Великой Отечественной войне. В 1939 г., по личному указанию Сталина, 34-летний Кузнецов был назначен народным комиссаром ВМФ СССР. Во время войны он входил в Ставку Верховного Главнокомандования, оперативно и энергично руководил флотом. За свои выдающиеся заслуги Н.Г. Кузнецов получил высшее воинское звание на флоте и стал Героем Советского Союза.В своей книге Н.Г. Кузнецов рассказывает о своем боевом пути начиная от Гражданской войны в Испании до окончательного разгрома гитлеровской Германии и поражения милитаристской Японии. Оборона Ханко, Либавы, Таллина, Одессы, Севастополя, Москвы, Ленинграда, Сталинграда, крупнейшие операции флотов на Севере, Балтике и Черном море – все это есть в книге легендарного советского адмирала. Кроме того, он вспоминает о своих встречах с высшими государственными, партийными и военными руководителями СССР, рассказывает о методах и стиле работы И.В. Сталина, Г.К. Жукова и многих других известных деятелей своего времени.Воспоминания впервые выходят в полном виде, ранее они никогда не издавались под одной обложкой.

Николай Герасимович Кузнецов

Биографии и Мемуары
100 великих гениев
100 великих гениев

Существует много определений гениальности. Например, Ньютон полагал, что гениальность – это терпение мысли, сосредоточенной в известном направлении. Гёте считал, что отличительная черта гениальности – умение духа распознать, что ему на пользу. Кант говорил, что гениальность – это талант изобретения того, чему нельзя научиться. То есть гению дано открыть нечто неведомое. Автор книги Р.К. Баландин попытался дать свое определение гениальности и составить свой рассказ о наиболее прославленных гениях человечества.Принцип классификации в книге простой – персоналии располагаются по роду занятий (особо выделены универсальные гении). Автор рассматривает достижения великих созидателей, прежде всего, в сфере религии, философии, искусства, литературы и науки, то есть в тех областях духа, где наиболее полно проявились их творческие способности. Раздел «Неведомый гений» призван показать, как много замечательных творцов остаются безымянными и как мало нам известно о них.

Рудольф Константинович Баландин

Биографии и Мемуары
100 великих интриг
100 великих интриг

Нередко политические интриги становятся главными двигателями истории. Заговоры, покушения, провокации, аресты, казни, бунты и военные перевороты – все эти события могут составлять только часть одной, хитро спланированной, интриги, начинавшейся с короткой записки, вовремя произнесенной фразы или многозначительного молчания во время важной беседы царствующих особ и закончившейся грандиозным сломом целой эпохи.Суд над Сократом, заговор Катилины, Цезарь и Клеопатра, интриги Мессалины, мрачная слава Старца Горы, заговор Пацци, Варфоломеевская ночь, убийство Валленштейна, таинственная смерть Людвига Баварского, загадки Нюрнбергского процесса… Об этом и многом другом рассказывает очередная книга серии.

Виктор Николаевич Еремин

Биографии и Мемуары / История / Энциклопедии / Образование и наука / Словари и Энциклопедии