Новый этап в разработке моей ОС

Всех программистов можно условно разделить на две группы — смелые и несмелые. Смелые чаще видят наиболее простые решения задач, которые возникают у пользователя. Именно у пользователя, а не у криво понявшего потребности пользователя начальника, или заказчика. На эту тему писали многое, например о том, как потребность «выложить файл для просмотра знакомыми» превращалась в груду ненужных требований и многолистовое ТЗ. Несмелые программисты при появлении желания написать небольшую программу обычно сразу представляют эти огромные, и при этом часто изменяющиеся ТЗ. А зря. Чаще это происходит, конечно, когда программисты не знают конкретной цели разработки. Цель похожа на «написать комбайн с кучей всевозможных функций и настроек», а требуется всего лишь «программка для выполнения одной задачи».

Это все, конечно, лирика. Попытка смелого отмазаться перед несмелыми. Эта тема уже заезжена, часто можно видеть топики на том же Хабре о том, что кто-то собирается писать свою операционную систему, и видно, сколько людей пишут о том, что у него ничего не получится. Кроме таких топиков, к счастью, бывают статьи о том, КАК лучше начинать писать свою ОС. Дело в том, что большинство статей по написанию ОС сводятся к тому, чтобы объяснить как загружается обычный компьютер, с какого сектора диска читаются данные, по какому адресу в памяти кладутся, и как туда передается управление. Это всё обычно пишется на ассемблере, а на нем всякую красоту написать довольно сложно. А ведь операционная система для пользователя это именно красивый интерфейс и набор качественных программ. Здесь можно упомянуть текущие распространенные ОС и их особенности.

Первой у нас будет Mac OS X, потому, что сейчас наблюдается некий бум iДевайсов. С помощью iPhone Джобсу удалось повернуть взгляды обычных, непродвинутых пользователей к своим продуктам. Эти непродвинутые пользователи кричат на каждом углу, что Mac OS является идеалом красоты и удобства. Но, если посмотреть без фанатизма, мы видим, что в самих системных программах юзабилити совсем ужасна, а в простеньких диалогах, состоящих из трех элементов, они находятся не на одном уровне. Плюс к этому, возможность изменять размеры окон за любой край появилась только в прошлом году, с выпуском Mac OS X Lion. Пользователи этой системы находятся в добровольном заточении. А ведь экосистема Apple заточена именно для удержания пользователей.

Вторым в списке будет GNU/Linux — свободная ОС в виде множества дистрибутивов разной степени несовместимости между собой.  В действительности, это поделка студента, без будущего. В далеком 1991-ом году студент Линус Торвальдс решил сделать клон распространенной тогда ОС UNIX. Та как он не думал о будущем, о пользователях, о задачах, которые будут появляться в скором будущем, эта система была основана на устаревающих принципах POSIX и так называемом Unix-way. Последний является ничем иным, как принципом, что каждой малюсенькой задачке должна соответствовать отдельная программа-утилита. Если посмотреть с другой стороны, то получается, что полноценных продуктов, со своим решением для каждой подзадачи, во вселенной Unix писать НЕЛЬЗЯ. Поэтому, в Линуксе почти все программы состоят из нескольких частей. Чаще всего наблюдается такое, когда программа, выполняющая задачу является утилитой командной строки, а поверх неё пишутся графические интерфейсы различной степени кривости. Почему во множественном числе? Потому, что в Линуксе существует множество разных графических и интерфейсных библиотек. Линукс это свобода. Свобода выбора из всего того хлама, который написан непрофессиональными программистами по всему миру. Поэтому, выбрав некую графическую среду, пользователь обязан выбрать те программы, которые будут работать в этой среде. Выбрать графические оболочки к тем утилитам, которые, например, умеют записывать диски, или обрабатывать фотографии. Проблем там, конечно, намного больше, ибо систем, которые работают в области интерфейсов с пользователем, множество, и большинство из них кривы.

Последним пунктом надо описать самую распространенную на обычных компьютерах операционную систему — Windows. Давайте вспомним, как и из чего развивалась эта система? Всё очень просто,  но лучше по пунктам:

Графический интерфейс. В Windows главный упор ставился на использование инновационных интерфейсных устройств и использование «настоящей информации». Среди первых были мышки, новые графические и звуковые карты, джойстики. А «настоящей» информацией были статические и анимированные картинки. Не текстовая информация, а именно графика.

Разделение программ на перекрывающие друг-друга окна. Так как Windows умела параллельно исполнять несколько программ, было нерационально использовать под каждое приложение весь экран (привет рабочим столам в Линукс). В Microsoft сразу поняли, что наличие на ОДНОМ экране нескольких работающих программ это огромный плюс для пользователя.

Предоставление огромных возможностей разработчикам. Несмотря на «закрытость» кода самой ОС, программисты имеют очень обширный набор функций и внутренних интерфейсов для разработки очень необычных программ. Конечно, в данном случае вспоминаются вирусы и трояны, но система UAC, вкупе с большим выбором бесплатных антивирусов, довольно хорошо решает эту проблему.

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

Кстати об Андроиде… Так как я не хочу пока раскрывать все свои планы, могу только намекнуть. Airely тоже ориентирована на интерфейс, тоже использует виртуальную машину, да еще и запускается поверх любого ядра, даже ядра linux. В жизни этого проекта было несколько этапов, когда я выбирал разные технологии, языки программирования, ядра… Сейчас, как мне кажется, я нашел самый удобный способ разработки операционной системы, которая будет легкой, удобной, как для пользователей, так и для программистов. Кроме того, я постараюсь не наступать на те грабли, на которых плотно стоят разработчики других систем. В процессе работы над ней у меня появляются такие идеи, которые до сих пор не реализованы в других ОС, либо это сделано не полно, либо недоступно обычному пользователю.