Читать «Цифровой журнал «Компьютерра» № 24» онлайн - страница 58

Коллектив авторов

- Но у такого подхода должны быть и плюсы. Вы говорите, что под «Фантом» легче писать программы. Легче и дешевле. Кроме сохранения состояния это в чём-то проявляется?

- Это дешёвая компонентность. Собственно, вся история программных инструментов, если взять некоторую стартовую точку — когда появился первый компьютер и за него сел первый программист, написал для него первую программу. (Эта программа была написана в некоторой модели, в которой есть только этот программист, только эта программа и этот компьютер, который полностью ей отдан.) Начиная с этой точки и до сегодняшнего дня всё, чем занималось программистское сообщество — это развитие модели, при которой программист может писать меньше и использовать больше чужого. Современные языки программирования, языки программирования вообще, библиотеки, фреймворки, операционные системы — всё это было сделано для решения ровно одной вещи — сделать так, чтобы можно было написать три строки кода, а 333 строки были бы чужими. Это делается всегда ровно одним способом (хоть он и по-разному реализован в разных местах) — дать программисту компоненты, которые он воткнёт в свою программу.

Собственно, я считаю, что успех Unix как операционной системы связан в первую очередь с тем, что Unix предложил возможность сборки утилит командной строки в «пайпы». Таким образом он породил первую командную среду в истории разработки софта. Хоть до него и были библиотеки, но он стал первой средой, где этим мог управлять пользователь. То есть можно взять две вещи, написанные разными людьми, и склеить их воедино, чтобы решить свою третью задачу. Причём, опять же, это не некоторая абстракция. Даже в те годы в ЦСУ СССР была реальная разработка под Unix, для которой использовали утилиты командной строки. Там была обработка статистики, которая делалась этими «грепами», «сортами» и прочими утилитами, которые позволяли данные, представленные в виде текстовых табличек как-то обсчитывать, форматировать и печатать.

То, что мы делаем — это новый шаг в ту сторону; он отличается от того, что существовало, благодаря глобальному адресному пространству. Мы говорим, что всё, что у нас есть в системе, можно использовать. То есть можно достучаться до чужих данных (с учётом желания того, кому они принадлежат, их вам отдать, конечно — в этом смысле «Фантом» система очень защищённая), но если две программы желают обменяться данными, то это можно сделать очень дёшево, очень эффективно и с произвольной степенью сложности.

В современных системах это просто невозможно. Грубо говоря, если работает программа Word, в которой существует документ, представленный в виде некоторого графа объектов, поделиться фрагментом этого графа объектов с другой программой Word не сможет. Потому что видим граф только в рамках одного адресного пространства. Word может его сериализировать, свернуть, засунуть в какую-нибудь трубочку, передать через «пайп», но это всё тяжко и требует того, чтобы обе программы понимали один протокол. Ну, к примеру в Windows есть протокол OLE, который такие возможности предоставляет. Но программ, которые его поддерживают, мало, потому что он сложный. И все такие протоколы сложны. Второй пример — это CORBA, который вообще шикарный инструмент — он платформонезависимый, но примеров его реального использования — единицы, потому что это сложно.