Цифровой журнал «Компьютерра» № 24 - Коллектив Авторов
Шрифт:
Интервал:
Закладка:
Но при этом смотрите, что происходит в «Фантоме»: здесь нет файлов, зато есть объекты. Объекты отличаются от файлов прежде всего тем, что для них можно определить методы — то есть давать им возможность сказать системе, что с ними ещё можно сделать. К примеру, их можно искать по другим критериям; например, их можно по-другому классифицировать, и не одним способом классифицировать.
Даже если брать совершенно прямолинейный уровень: как родным для «Фантома» способом сделать приложение? Приложение — это некоторый класс, реализующий некоторую функциональность. И объекты этого класса являются документами с точки зрения пользователя. Уже сам этот факт означает, что вы можете одним движением найти все документы такого типа.
Мало того, в рамках этих документов вы можете построить свою иерархию и классификацию и потом работать с ней. Если это документы CAD (простой пример из известой области) для разработки схем и прошивок для ПЛИСов — в ней есть своя классификация: печатные платы, схемы, компоненты схем, библиотечные элементы. Операционка про это ничего не знает, но в рамках модели классов этого продукта это представление есть и его можно использовать. То есть можно не имея в операционке никакого знания о том, что бывают печатные платы, схемы и прочие вещи, сказать ей: «Знаешь, у меня тут есть дерево классов, такой-то CAD, а в нём есть такой подкласс — печатные платы, найди мне эти объекты». В данном случае используется некоторое штатное свойство операционной системы, которое не проектировалось специально под эту задачу, но оно есть и оно отражает эту задачу — что меня, конечно, очень радует.
- Но действительно ли пользователям необходима иерархическая структура данных? Логично было бы каждый вид данных хранить наиболее подходящим для него образом...
- Да, но многие люди бесятся и говорят: «Дайте мне файл, я хочу его потрогать». Я бы не хотел их этого лишать. Но в отличие от Windows и Unix, где объект не может не лежать в файловой системе, в «Фантоме» решение об этом принимает приложение. Оно может взять и скрыть от системы именования свои объекты, если считает это удобным и правильным или если это полезно с точки зрения безопасности. Одна из причин, почему в Windows так хорошо живут вирусы (да и в Unix проблема та же) — это собственная файловая система, где можно просканировать всё, что есть. «Фантом» позволяет не показывать то, что программа не хочет. При этом объект существует, доступен тому, кому он нужен по указателю и больше никому. Я полагаю, что это достаточно важный факт с точки зрения защиты от вирусов. У «Фантома» есть и другие свойства, которые сильно осложняют жизнь злоумышленникам.
- Следующая мечта — исчезновение (с пользовательской точки зрения) разницы между оперативной памятью и диском. Это бы отменило необходимость сохранять то и дело свои данные. «Фантом» от этого избавляет?
- Да, «Фантом» здесь больше всего похож на листочек бумажки — вы написали что-то — оно осталось. Хотите копию — сделайте копию. А вот команда Save здесь не нужна по определению. Даже больше скажу — в «Фантоме» нет разницы между иконкой и окном. То есть иконка, документ и окно — это, вообще говоря, одно и то же. Наличие окна, которое показывает содержимое документа — это всего лишь вопрос состояния hide или unhide. По сути дела, окно — это увеличенная иконка.
- То есть можно сделать раскинский zoomable-интерфейс?
- Да-да-да! Это в существенной мере движется именно в эту сторону. Я как раз про это и говорил — в Раскине меня как раз смущает то, что у него есть хорошее представление о том, что он хотел бы видеть, но нет хорошего представления о том, как это положить на реальную софтверную среду. У нас это представление, кажется, даже есть. Оно не вполне однозначно ложится на идеи Раскина, но я в целом вполне разделаю его мечты.
- Далее — разница между запущенной и незапущенной программой. Она тоже, как я понимаю, стирается?
- Да, в «Фантоме» это делается естественным образом. Как только программу перестают беспокоить, она перестала быть запущенной. Начали снова с ней что-то делать — она продолжила работать с того места, где её оставили. Собственно, это к тому же вопросу об иконке, документе и окне. Есть документ, состояние которого присутствует, и если убрали окно, это ни на что не повлияет. Документ останется в прежнем состоянии.
- Последнее — это возможность отмены любого пользовательского действия.
- Здесь система как таковая, к сожалению, ничего предоставить не сможет. У нас есть представление о том, как это можно сделать в рамках реализуемой объектной среды, но уже с некоторой потребностью от программиста предпринять некоторые усилия. Даже не столько усилия, сколько необходимость делать свои приложения некоторым определённым образом. Грубо говоря, если он использует немодифицируемые объекты и применяет функциональный стиль, то более или менее автоматом получается некая среда, в которой можно возвращаться к предыдущему состоянию. В этом месте мы не даём готового решения, но мы говорим, что если в нашей среде придерживаться определённых правил, это будет получаться дёшево и легко.
- Давайте теперь вернёмся к реальности. Какие короткосрочные перспективы стоят перед проектом?
- У нас сейчас достигнута ближайшая цель получить стабильно работающее ядро, в котором хорошо работают снэпшоты, в котором чётко отслеживается перезагрузка. Сейчас есть нормальное, хорошее ядро, разработку которого можно при желании и остановить, и это будет приемлемо. В ядре есть некоторое количество вещей, которые нужно обязательно доделать — они касаются некоторых тонкостей восстановления системы. В системе есть такие места, которые должны быть проинформированы о перезагрузке, и это место пока что не реализовано. Как только пройдём его, разработка ядра будет приторможена.
Следующая задача — сделать пользовательскую среду, для которой которой было бы удобно писать программы. То есть главная стоящая сейчас перед нами задача — сделать релиз, на котором средний программист мог бы уже что-нибудь написать. Строго говоря, этот релиз у нас уже есть, но человеку потребуются усилия на то, чтобы продраться через наши инструменты — способы склеивания кода, миграции, сборки. Не сказать, что они сделаны плохо — просто так, как того требовала текущая ситуация.
Ещё одна вещь, которая сейчас не готова — это графическая подсистема, которая на сегодня реализована только в ядре и почти никак не доведена до пользовательского уровня, и в ней не реализованы некоторые примитивы, которые необходимы в реальной жизни. К примеру, нет примитива, позволяющего подвинуть окно или изменить его размеры. Без этого в режиме демонстрации можно жить, но в реальной жизни хотелось бы, чтобы оно было. Вот такие вещи нужно отработать, и после этого мы бы хотели, чтобы у нас случился релиз, про который мы бы могли сказать «да, интересующийся разработчик может это взять, собрать, попробовать, запустить, написать под это какую-нибудь программку».
Для нас это важно не потому, что под «Фантом» начнут писать (всё же пока что довольно рано для этого), мы бы хотели выйти на каких-то заинтересованных разработчиков, чтобы получать отклик. Чтобы понимать, что в системе ещё сырое, что требует доработок, что неудобно или глупо сделано. И после этого следующий релиз мы бы хотели рассматривать как продакшен.
- Как я понимаю, есть и мысли о коммерческом применении?
- Конечно. Опять же, мы адекватные люди, мы не делаем операционную систему только из желания покрасоваться. Конечно, мы хотим, чтобы у «Фантома» было коммерческое применение. Есть некоторые направления, в которых ощущаются такие потребности. Есть три группы людей, которые в какой-то перспективе объявили о своём интересе. Это всё российские разработки, из совершенно разных областей. Их авторы обращаются к нам по совершенно разным причинам. Мотивация у них, надо сказать, бывает диаметрально противоположенная.
- А за рубежом, несмотря на шум в западной прессе, не интересуются?
- Интересуются, конечно. Я получил тысячи писем из-за рубежа от самых разных людей разного уровня, с разными словами. Как правило, публично ругают много, а в письмах только хвалят. Некоторое количество писем получил от людей из серьёзных компаний типа IBM, которые занимались сходной разработкой и указали на места, которые им кажутся проблемными или рекомендовали другие подходы.
Некоторые из этих писем действительно помогли. Не сказать, что мы бы без них не справились, но опыт всё же полезен. Были люди из университетов, которые предлагали как-то поучаствовать, но, к сожалению, мы слишком рано зазвучали. Тогда у нас практически вообще ничего на руках не было такого, что можно было бы отдать. Я с ними со всеми переписывался, но говорил, что по-настоящему общаться мы будем через годик-другой. Пока что все эти полтора года я эти каналы не трогаю осознанно, потому что хочется показать людям что-нибудь такое, что их бы не демотивировало.