- А программа сама контролирует, когда её объекты сохраняются?
- Нет. Этого программе вообще не видно. С точки зрения программы, она существует в системе, которая живёт вечно — для неё ничего не меняется. Я полагаю, что современные операционные системы требуют слишком обширных знаний от разработчика, и стремлюсь сделать систему, в которой многие вещи делались бы настолько прозрачно и незаметно, что просто не требовали бы даже думать о них. Это одна из причин, почему ОС называется «Фантом». В «Фантоме» автор программы вообще не должен знать, что такое диск. Он её просто пишет, она просто существует. И часть задачи просто отпадает.
Скорость, с которой система делает снэпшоты, регулируется. Можно сказать — раз в минуту, можно — вообще непрерывно. Закончился один и сразу пошёл другой. Более того, у нас есть желание сделать версию для специальных применений, в которой это будет делаться со скоростью порядка миллисекунд. То есть система будет хранить очень подробную запись того, что происходило, по методу журналирования. Раз в минуту будут делаться полные срезы, а между ними будет вестись список частых изменений. Это позволит получить на обычном «железе» систему, которая сможет восстанавливать очень близкое к моменту сбоя состояние. Но принципиально программа для этого ничего не должна делать.
- Эта непохожесть «Фантома» на другие среды означает, что старые компоненты систем Unix нельзя будет использовать? X Window, к примеру, или OpenGL.
- Вовсе нет. OpenGL у нас даже в каком-то виде сейчас есть в системе. В довольно сыром, правда.
- И это не собственная реализация, а оригинальный код, скомпилированный под «Фантом»?
- Да. Здесь есть две стороны жизни: есть объектная персистентная среда, которую «Фантом» предлагает в качестве родной. Под неё мы собираемся построить способ миграции, который позволил бы втаскивать на неё код, написанный на современных языках — на Java, Python, C#. Это очень большой объём кода, и он, на самом деле, превосходит то, что сделано для Unix. Мы считаем, что это основное направление, в котором нужно двигаться. Конечно же, мы не хотим сделать систему, для которой всё придётся писать заново. Это не оставило бы мне абсолютно никаких шансов.
С Unix ситуация вот какая. Изначально вообще не планировалось поддерживать юниксовый код, потому что родная среда «Фантома» не позволяет поддерживать старые языки программирования — такие как C и Pascal. Есть очень чёткое разделение: есть managed языки и не-managed языки. Managed-языки мы напрямую не поддерживаем. Это совершенно не проблема для современной разработки, потому что сейчас всё делается уже на managed-языках. Но есть довольно большое количество старого кода, написанного на C, на Pascal, на C++.
Изначально я предполагал, что им не нужно заниматься, ещё и потому, что за то время, которое мы будем делать стабильную версию «Фантома», мир ещё раз шагнёт вперёд, и всё старое наследние окажется совершенно неактуальным. Тем не менее, в сегодняшней стадии в «Фантоме» делается Unix-подсистема, которая позволит запускать под ним более или менее немодифицированный Unix-код, хотя X Window мы, наверное, не будем туда затаскивать.
- То есть будет собственная оконная система?
- Да. Она уже в какой-то степени есть, и не так уж много кода X Window, который было бы интересно в неё тащить. А делать X Window — это довольно серьёзная задача, которая, я боюсь, не окупится. Ну и, кроме того, есть довольно много кода, написанного под вещи типа SVGALib, который вполне можно портировать под «Фантом». То есть framebuffer и прочие инструменты обмена мы сделаем.
- Но программы, написанные под X Window, придётся модифицировать?
- Придётся модифицировать, да. В текущей ситуации мы не видим достаточной необходимости делать эту часть работы. Мы больше ждём, что программы, написанные за последнее время будут реализованы скорее для Java SWING, чем для X Window.
- Но у такого подхода должны быть и плюсы. Вы говорите, что под «Фантом» легче писать программы. Легче и дешевле. Кроме сохранения состояния это в чём-то проявляется?
- Это дешёвая компонентность. Собственно, вся история программных инструментов, если взять некоторую стартовую точку — когда появился первый компьютер и за него сел первый программист, написал для него первую программу. (Эта программа была написана в некоторой модели, в которой есть только этот программист, только эта программа и этот компьютер, который полностью ей отдан.) Начиная с этой точки и до сегодняшнего дня всё, чем занималось программистское сообщество — это развитие модели, при которой программист может писать меньше и использовать больше чужого. Современные языки программирования, языки программирования вообще, библиотеки, фреймворки, операционные системы — всё это было сделано для решения ровно одной вещи — сделать так, чтобы можно было написать три строки кода, а 333 строки были бы чужими. Это делается всегда ровно одним способом (хоть он и по-разному реализован в разных местах) — дать программисту компоненты, которые он воткнёт в свою программу.