Академический Документы
Профессиональный Документы
Культура Документы
Tango
Операционная система из будущего
http://youtu.be/R7_rnucyZg8
Жизнь и Страсть
0 Оглавление
Оглавление
0.1 О чем эта книга .................................................................................. 14
0.2 Об авторе ............................................................................................ 15
1 Раздел 1 – Послание к человечеству ...................................................... 18
1.1 Послание к человечеству .................................................................. 19
1.2 Почему я решил написать эту книгу ................................................. 20
1.3 Формат книги – «Хотелки» ................................................................ 23
1.3.1 Наиболее важные группы пользователей ............................. 25
1.4 Формат книги – Реализация .............................................................. 28
1.5 Формат книги – Архитектура ............................................................. 29
1.5.1 Глобальный уровень архитектуры .......................................... 33
1.5.2 Макро-уровень архитектуры ................................................... 35
1.5.3 Микро-архитектура .................................................................. 36
1.5.4 Архитектура в жизни ................................................................ 38
1.6 Священные войны ............................................................................. 40
1.7 Формат книги – версия текста........................................................... 41
2 Раздел 2 – Виденье системы – «Хотелки» .............................................. 43
2.1 Введение ............................................................................................ 44
2.2 «Хотелки» ........................................................................................... 45
2.2.1 Обычный пользователь ........................................................... 45
2.2.2 Безопасность и надежность .................................................... 47
2.2.3 Владелец дата-центра ............................................................. 48
2.2.4 Разработчик приложений........................................................ 49
2
Эта книга об операционных системах будущего. Здесь
написано о том, как создать принципиально новую
операционную систему следующего поколения.
0.2 Об авторе
Дубовцев Алексей
Владимирович
Контакты:
Skype DaoOrbita
E-mail alexey@os-tango.com
ВКонтакте http://vkontakte.ru/mrorbita
http://facebook.com/mrorbita
Facebook
http://twitter.com/mrorbita
Twitter
1 Раздел 1 – Послание к
человечеству
1 Послание к
человечеству
Инфо
Планетарная операционная система – система, рассчитанная на
использование в масштабах планеты, спроектированная для обслуживания
миллиардов абонентов.
Меня уже много лет терзает одна мысль, в целом она сводится к довольно
простой формулировке: "Все операционные системы, которыми сейчас
пользуется человечество, принципиально убоги и крайне неудобны в
использовании".
Цель книги: "Я пишу эту книгу потому, что хочу дать людям новый продукт
- операционную систему, которая улучшит жизнь многих и многих людей.
Систему, которая сделает использование и создание компьютерных
программ на порядки более простым понятным и приятным. Этот проект
откроет огромные возможности для людей по всему миру – финансовые,
инновационные, коммуникационные, созидательные".
Пример
Хотелка 1
Я хочу, чтобы любой из моих файлов был доступен с любого устройства в
этом мире.
Хотелка 2
Я не хочу, чтобы посторонние люди читали мои файлы без моего ведома.
1. Домашние пользователи
2. Разработчики
3. Владельцы и создатели видео контента
4. Рекламодатели
Оригинальная классификация
5. Создатели игр
6. Игроки
7. Издатели (книги, статьи, журналы)
8. Торговцы
9. Студенты
10. Заказчики на разработку ПО
11. Владельцы предприятий
12. Директора предприятий и менеджеры
13. Администраторы предприятий
14. Работники предприятий
15. Владельцы и создатели музыки
16. Свободные наёмники, фрилансеры
17. Правительственные заказчики
18. Военные заказчики
19. Мобильные пользователи
20. Создатели взрослого контента
Приведу пример. У вас есть файл, вы хотите, чтобы файл увидела ваша
подруга Александра.
Текущая Модель:
1. Открыть браузер
2. Ввести логин/пароль для входа в почту
Текущая модель
Аналогия
Можно привести аналогию со строительством домов: если вы хотите
построить дом, то нужно придумать: его место расположения, сколько
этажей должно быть в нём, какова конфигурация комнат, какая будет
высота потолков. Затем необходимо организовать команду, которая будет
воплощать этот дом. Команда разработает архитектуру и передаст её на
реализацию строителям. Строители, используя спецификации из
архитектуры, построят дом. Схема, конечно, крайне упрощённая, но даёт
общее представление о процессе создания сложного инженерного
объекта. То же самое справедливо и для создания операционной системы.
1. Глобальный уровень
2. Макро-уровень
3. Микро-уровень
1. Распространение приложений
2. Локализация
3. Глобализация
4. Гео-масштабирование
5. Защита от атак
6. Резервирование
7. Идентификация пользователей
8. Телеметрия
9. Статистика
10. Платежная платформа
1.5.3 Микро-архитектура
Важно
Микро-архитектура системы должна быть открытой!
2
«Хотелки»
Виденье Системы
«Хотелки»
2.1 Введение
Задача этого раздела - сформировать общее представление о системе у
любого человека. Крайне важно, чтобы любой смог понять идеологию
системы, она не должна быть тайным знанием только для узкого круга
«посвященных».
2.2 «Хотелки»
Кратко перечислим «Хотелки» для каждого типа пользователей
21. Хочу, чтобы мои файлы всегда были целы, даже если
компьютер уничтожен
22. Хочу иметь единый каталог приложений
23. Хочу иметь возможность работать с системой автономно без
использования сети
24. Хочу иметь общую единую систему уведомлений
Обычный пользователь
25. Хочу всегда знать, какие файлы к чему относятся и чем занято
у меня место
26. Хочу, чтобы установка Танго была всегда простой и
максимально быстрой
27. Хочу, чтобы операционная система работала всегда
стабильно, и её не нужно было переустанавливать
28. Хочу, чтобы была возможность удаленно дать доступ к
своему экрану любому из своих друзей
29. Хочу иметь простой механизм публикации и доставки видео
контента
30. Хочу иметь понятную систему сообщений об ошибках
31. Хочу, чтобы Танго умела работать на компьютере без
жесткого диска
2.2.5 Верстальщик
любимом языке
4. Хочу использовать сложные каскадные таблицы стилей
один клик
3. Хочу создавать рабочие группы для сотрудников предприятия
4. Хочу разворачивать приложение по всему предприятию
централизованно
5. Хочу обновлять приложения автоматически
6. Хочу, чтобы все документы, которые делают сотрудники в
рамках компании, были всегда доступны и никогда не
терялись
7. Хочу хранить данные предприятия на собственных серверах
8. Хочу полностью изолировать систему от внешнего мира
9. Хочу иметь единый поиск по данным предприятия
10. Хочу иметь возможность быстро организовывать отделы,
группы, проектные команды
2.2.7 Администратор
приложений
5. Хочу иметь встроенный механизм резервирования
приложений от сбоев
6. Хочу, чтобы механизмы масштабирования и резервирования
работали не привязано к одному дата-центру
7. Хочу, чтобы веб приложение на моём старом домене по-
прежнему продолжало работать
8. Хочу иметь возможность удалённо подключаться к
компьютеру и управлять им
9. Хочу иметь встроенные механизмы масштабирования
10. Хочу иметь встроенные механизмы резервирования
11. Хочу, чтобы механизмы масштабирования и резервирования
работали не привязано к дата-центру
12. Хочу выстраивать приложения в рабочие цепочки
приложение
3. Хочу иметь полную информацию о пользователях моих
приложений
4. Хочу иметь единую систему публикации: публикация,
продажа и защита в один клик
5. Реклама: хочу иметь единую и простую рекламную
платформу
6. Хочу иметь простую и удобную систему распространения
приложений
7. Хочу иметь простую и удобную систему получения денег за
мои приложения
8. Хочу иметь простую и удобную систему лицензирования
приложений
Я помню, как ждал того момента, когда родители купят мне мой первый
компьютер. Долгое время мне приходилось допоздна проводить время в
компьютерном классе в школе, потому что компьютер был только там. В те
времена компьютер был очень дорогой игрушкой, и моим родителям
пришлось копить на него, прежде чем они смогли его купить.
Это действительно здорово, когда я в два клика мышки могу найти любого
человека на планете, отправить ему сообщение, фотографию или
послание.
Социальный сервис должен быть точкой хранения всех моих друзей, всех
моих контактов. Когда я открываю свой мобильник, на нем была бы
запущена так же система, и в нём были бы те же самые контакты. На
любом устройстве вводя свой логи/пароль я должен мгновенно получать
доступ к моим контактам.
1. Поиск по названию
Поиск приложений в каталоге
Хороший пример
- Привет, Мама.
- Привет.
- Заходишь в каталог приложений, вводишь в поиске «Карты Марса»,
кликаешь на него и начинаешь смотреть их.
- Отлично, я вижу Марс.
Плохой пример
- Привет, Мама.
- Привет.
- Тебе нужно ввести в строке браузера http://bestmarsmaps.com. Там тебе
нужно найти раздел «скачивание», затем выбрать пункт «бесплатный
вариант», скачать его, не забудь сохранить файл на рабочем столе. Потом
распакуй архив, запусти инсталлятор. Когда спросит, какой тип
инсталляции ты хочешь, выбирай полный, и не забудь поставить галку
«добавить в меню Start». Когда дождешься установки, на всякий случай
перезапусти компьютер, потом зайди в меню старт, найди приложение и
запусти его. Возможно, оно потребует установки дополнительной
компоненты Java - это просто, тебе нужно будет зайти на сайт
http://sun.com и выбрать там установка Java….
- А что ты имел в виду, когда сказал браузер?
Инфо
Сейчас при оплате кредитной картой пользователь должен ввести номер
карты, код CCV2, расположенной на обратной стороне карты, фамилию,
имя и дату окончания срока действия карты. Не секрет, что эти данные
крадут в огромных количествах и продают в сети.
Гораздо надежнее завязать механизм оплаты на код,
передающийся на личный мобильный телефон. Этот
механизм делает кражу самих платежных реквизитов
бессмысленной, ведь без секретного пароля из СМС
оплату провести нельзя.
Сам центр туториалов должен быть доступен в один клик из любого места
системы. При этом портал должен понимать, из какой части системы вы
вошли в него, чтобы предложить вам подходящее на текущий момент
видео.
Любой человек быть доступен в один клик. Это должно быть настолько
естественно и просто, чтобы пользователь даже не задумывался, как ему
связаться с другим человеком.
Есть файл, есть человек, который должен его получить. Я хочу просто
щелкнуть на файл, выбрать человека и нажать «Ок». Всё!
Я хочу, чтобы это было свойством самой операционной системы, чтобы это
работало для любого файла.
Как только над одним файлом начинают работать несколько человек, эта
возможность становиться критически важной. Моментально появляется
множество копий одного документа, никто не знает, кто внёс последние
поправки, и какая версия актуальна на текущий момент.
2. Любые приложения
a. Не требующие авторизации
после старта
3. Регистрацию
Прелесть в том, что все данные пользователя Танго хранятся в сети, и когда
он устанавливает систему на новый компьютер, ему лишь достаточно
ввести свой логин пароль, и данные будут у него под рукой. Никакой
головной боли по поводу переноса и синхронизации данных,
пользователи должны забыть об этом.
Если я нахожу файл на своём жестком диске, я желаю знать, откуда он там
появился, какое приложение его создало, и для чего этот файл нужен. Эта
информация крайне важна для меня, я не хочу оставаться в неведении.
Помню, как одна девушка мне сказала: «Знаешь, когда я вижу подобные
сообщения, мне кажется, что компьютер мне угрожает и, как минимум,
хочет моей смерти». Подобные сообщения об ошибках ставят
пользователя в тупик, они не несут абсолютно никакой полезной
информации. Единственное, что может сделать опытный пользователь –
попытаться найти в интернете описание этой проблемы. Обычному же
пользователю остается лишь осознать собственную беспомощность. Это не
правильно.
1. Почта
2. Директория сотрудников
a. Кто есть кто в компании
Корпоративные сервисы
3. Управление задачами
4. Управление корпоративными ресурсами
a. Склад
b. Поставки
c. Бухгалтерия
d. Финансы
e. Документы
f. И.т.п
b. Приложениями
c. Директорией сотрудников
d. Созданием отделов и филиалов
e. Обменом файлом между сотрудниками
f. Внутренним порталом
g. Внешним порталом
h. Политиками использования корпоративных
сервисов
1. Названию
Поиск файлов в компании
2. Содержимому
3. Создателю
a. Можно будет выбрать сотрудника компании и
узнать, какие документы он создавал
Пример
- Василий Петрович, а где договор, который ведет Петр Андреевич?
- Все просто. Щелкните на Петра Андреевича в компании, далее на его
файлы и там найдете договор.
Помню, довелось работать в одном странном офисе, где каждый раз при
входе в здание нужно было прикладывать свою карточку доступа, и
компьютер здания называл мне место, за которым я буду сидеть сегодня.
Каждый день место менялось. Когда я приходил на место, телефон на
рабочем столе был уже настроен под меня. Каждый день рядом со мной
сидели новые люди, я никак не мог понять, каким образом компьютер
назначает места. Крайне странные были ощущения от работы в этом
месте.
Безопасность – определение
Безопасность – функция программы должна выполняться только с личного
согласия пользователя, и никак иначе
1. Общедоступно
Степени защиты
1. Телефон 1 - Пароль 44 35
2. Телефон 2 - Пароль 87 66
С точки зрения финансов услуги кол центра с каждым днём все дешевеют,
к тому же разработки в области автоматизации подобных служб далеко
шагнули вперёд, и подобные сценарии можно организовать без участия
живого оператора.
Мысли вслух
Осталось только добавить схему с красной кнопкой и двумя стальными
ключами сложной формы, которые поворачивают два офицера,
находящиеся в разных комнатах.
Важно
Система должна контролировать приложения, а не приложения систему.
Сейчас на всегда и везде нужны пароли, куда не ткнись, тебя просят ввести
пароль и логин. Везде нужно вводить разные логины/пароли, как это все
упомнить не понятно. Существуют, конечно, менеджеры паролей, но для
простых пользователей это слишком сложно, они не должны об этом
задумываться, для них все должно быть максимально просто и удобно.
При помощи системы Танго сделать это будет крайне просто. Я установлю
на всех компьютерах операционную систему Танго. Два из них выделю под
управляющие (один ведущий, один резервный). На управляющем
компьютере я зарегистрирую все компьютеры и другие ресурсы моего
дата-центра, после этого опубликую дата-центр в общей директории дата-
центров Танго, указав цены на услуги.
1. Круглосуточная поддержка
2. Голосовая поддержка на родном языке
3. Консультации администраторов и разработчиков
1. Динамика доходности
2. Динамика статистики приложения
a. Сколько текущих пользователей, каков прирост
4. Динамика котировок
5. Объем торгов
6. Социальные обсуждения вокруг приложения
a. Форум, группа, файлы
1. Владельцем дата-центров
a. Не нужно рискованно вкладывать деньги в
рекламу, можно вкладывать деньги в реальную
инфраструктуру и знать, что это окупится
2. Разработчикам приложений
a. Качество услуг предоставляемых дата-центром
будет выше и гораздо более предсказуемым
3. Конечным пользователям
a. Приложения будут работать гораздо более
стабильно и качественно
Пример php
Для того, чтобы сделать простейшее приложение на php, нужно: открыть
файл в любом текстовом редакторе, набросать пару строчек кода,
выложить файл на хостинг (хотя, где взять хостинг, тоже не такая простая
задачка), и приложение сразу же заработает.
Пример asp.net
Для того, чтобы сделать приложение на ASP.NET, необходимо: купить и
скачать Visual Studio .NET размером несколько гигабайт, установить её,
создать файл проекта, разобраться в том, куда нужно внести изменения,
затем скомпилировать проект, затем опубликовать его на хостинг.
Пример
<Logic
compiler="www.os-
tango.com/core/compiler/tangologic/v1">
ShowMessage("Hello world");
</Logic>
Пример
<Logic
compiler="www.somebody.com/tango/python/v1">
Фундаментальный принцип
Код должен всегда использовать именно тот компонент, на который
изначально ссылался.
Пример 1
Вы пишете код, используя некую библиотеку, например - somelibrary.dll.
Потом распространяете приложение всем своим пользователям, а у них
другое приложение обновляет версию библиотеки somelibrary.dll на более
новую или старую. И все! Ваше приложение тут же перестаёт работать
корректно, пользователь не доволен, у вас головная боль.
Пример 2
Вы пишете код html, тестируете его в своём браузере. Выкладываете
приложение в сеть, а пользователи открывают код уже при помощи
другого браузера, и всё отображается неверно.
1. Связаться с ним
2. Сообщить какой проект имеется в виду
3. Сообщить в каком файле содержится код
4. Сообщить номер строки
5. Перейти к сути вопроса
Слишком сложно!
1. Функциональная плоскость
a. Код должен выполнять возложенные на него
функции
2. Нагрузочная плоскость
a. Код должен уметь работать с огромными
массивами информации
3. Ресурсная плоскость
a. Код должен максимально эффективно
Плоскости требований
1. На приложение в целом
лицензирования
2. На количество пользовательских инсталляций
Политика
3. Географически
4. Персонально
5. Корпоративно
6. По времени суток
7. Без ограничений
компонентов.
3. Он выбирает параметры, например, визуальные
компоненты - меню.
4. Перед ним выпадает список из всевозможных меню
5. Он смотрит демонстрационную версию меню
6. Нажимает добавить в моё приложение
7. Меню появляется в приложении пользователя
1. На сервере
Удаленный
2. На клиенте
a. Указать, что метод будет вызываться удалённо
и ссылку на сервер
1. Серверу
2. Приложению
Телеметрия
3. Типу
4. Дате
5. Сообщению
6. Компоненту
7. Дополнительным пользовательским полям
world", Type=Information});
b. И строчка в конфигурационном файле со ссылкой на
сервер, куда всё это отправится
2. Затем необходимо лишь открыть консоль просмотра логов,
подключиться и следить за тем, как приходят новые
сообщения
Всегда крайне важно знать, что творится внутри приложения. Без системы
телеметрии любое приложение это черный ящик, не поддающийся
контролю. Простая, удобная и понятная система телеметрии даст
программистам много полезной информации о работающих приложениях,
а, как следствие, приложения станут более качественными. В итоге
выиграют конечные пользователи.
Я верю в то, что время, когда нужно было писать множество непонятных
скриптов или использовать сложные параметры командной строки,
прошло. На любой случай должны быть визуальные конструкторы, система
должна быть полностью управляема мышкой.
2.9 Верстальщик
Как-то давно я разговаривал с одним промышленником, который
занимается тяжелым машиностроением. Тогда я пытался убедить его в
перспективности компьютерных технологий, развитии сетей, баз данных,
распределённых приложений. Использовал кучу заумных и, как тогда мне
казалось, важных слов. Этот человек внимательно меня слушал, не
перебивая. Затем сказал примерно следующее:
Это не нормально.
Пример
<Visual
renderingEngine="www.os-
tango.com/core/visual/renderingengine/v1">
<h1>Заголовок</h1>
</Visual>
Пример
<Visual
renderingEngine="www.os-
tango.com/core/visual/renderingengine/v1">
<Menu
reference="www.goodguy.com/components/menu/v1”>
<Item>News</Item>
<Item>Products</Item>
<Item>About</Item>
<Item>Contacts</Item>
</Menu>
<Banner
renderingEngine
="www.adobe.com/flash/renderingengine/v10">
<Curve><Points>10,2,3,53,34,23</Point></Curve>
</Banner>
</Visual>
Пример
<Visual
renderingEngine="www.os-
tango.com/core/visual/renderingengine/v1">
<Logic
compiler="www.os-
tango.com/core/compiler/tangologic/v1">
using Tango.Core;
MessageBox($(“NodeSelector”).Text().Trim());
}
}
</Logic>
<h1 Name=”Node”></h1>
</Visual>
Это должно быть просто и осуществляться в один клик, это должно быть
свойством операционной системы.
3. Всё
os-tango.com
Ip Address 1 - 100%
Таблица
адресов
Ip Address 2 - 80%
Ip Address 3 - 10%
В будущем мы придем к тому, что все узлы сети будут использоваться для
запуска приложений, самые крутые приложения будут использовать ваш
домашний пылесос, чтобы увеличить свою производительность.
Глобальный дата-центр
Разумно создавать подобный дата-центр, используя пиринговые
технологии, которые сделают узлами дата-центра все компьютеры
пользователей. Емкость его будет постоянно расти и увеличиваться без
прямых капитальных вложений. Превосходная экономическая модель.
сервера
3. После этого все изменения, которые вносятся на
ведущем сервере, автоматически синхронизируются с
резервными серверами
a. Развертывание новых приложений
b. Изменение настроек
c. Все данные
4. Сервис имён должен поддерживать резервирование
a. a. И если ведущий сервер не отвечает, то
обращение автоматически происходит к
одному из резервных серверов
Эта схема должна работать для всех сервисов. Например, для баз данных.
Их движки должны автоматически понимать, что необходимо включить
репликацию транзакций для реализации этого механизма.
2.11 Итог
Я постарался изложить своё видение возможностей и архитектуры
операционной системы. Я намеренно упрощал описание системы потому,
что для меня было крайне важно донести общую стержневую идею,
множественные детали только запутали бы процесс понимания.
3 Организация
или
«Как съесть слона»
Основной факт: Люди, которые сделают эту систему, уже родились, они
ходят сейчас среди нас по этой планете. Они среди нас.
3.2Принципы в жизни
Важно правильно воплотить принципы в жизни, иначе они останутся
только на словах. Сделать это можно при помощи двух ключевых
компонентов:
Ключевые компоненты
Исходный код
http://os-tango.com/sourcecode
3.4 Сообщество
Сообщество это и есть проект….
Светлячки
Ярким примером явления авто-синхронизации является поле со
светлячками. Если хотя бы 5-10% светлячков начинают синхронно
светиться, то и остальные довольно быстро подстраивают фазу своих
световых колебаний под них. И все светлячки начинают святиться как
единое целое.
1. Люди
2. Требования
Разделы
3. Задачи
4. Ошибки
5. Тесты
6. Статьи
7. Дискуссии
3.5.1 Люди
Команда мечты вот то, что важно; те, кому хотя бы раз довелось
поработать в такой команде, прекрасно меня поймут: объяснить словами
ощущения, которые испытываешь от работы в такой команде,
невозможно.
3.5.2 Требования
3.5.3 Задачи
Полный список задач в открытом доступе это очень важно. Люди смогут
смотреть, кто выполняет задачи, какая помощь требуется, какие задачи
можно выполнить, чтобы помочь проекту.
3.5.4 Ошибки
3.5.5 Тесты
3.5.6 Статьи
3.5.7 Дискуссии
3.5.8 Комментарии
1. Распространение идеи
2. Формирование первоначальных требований
Этапы проекта
Первый прототип крайне важен, как только есть прототип, значит, проект
материализован, существует и его нужно просто развивать и делать. Все
предельно ясно и конкретно.
Первый прототип должен быть простым, чтобы любой мог скачать его и
запустить.
Написать первую строку кода в проекте всегда сложнее, чем сотую или
тысячную.
Самая важная задача прототипа донести общую идею проекта в виде кода,
виде реальной программной логики. Программистам гораздо проще
воспринимать идеи именно в этом виде.
5. Зайти на www.os-tango.com/community
6. Поддержать проект финансово
a. Деньги чудесным способом ускоряют все
процессы
b. Сделать это можно здесь www.os-
tango.com/donate или послав письмо на
alexey@os-tango.com
7. Помочь с техникой и инфраструктурой
8. Помочь в формировании требований
9. Обучить пользоваться системой
a. Когда будет готов первый релиз
10. Предложить, что либо еще
Если у вас есть сайт, блог или страничка в социальной сети, вы можете
разместить ссылку на Танго http://os-tango.com. Чем больше людей узнают
о проекте, тем больше вероятность его успеха.
http://os-tango.com/community/requirements
http://os-tango.com/community/requirements
http://os-tango.com/community/sourcecode
http://os-tango.com/community/people
http://os-tango.com/donate
http://os-tango.com/community/requirements
4 Экономика и
Финансы
a. Для пользователей
b. Для создателей устройств
c. Для создателей приложений
2. Регулярный доход должен идти из следующих
источников
a. Комиссия с транзакций в интегрированной
платежной системе
b. Комиссия с транзакций на бирже приложений
5 Раздел 5 – Архитектура
5 Архитектура
5.1 Принципы
Сложность инженерных систем определяется квадратом количества её
компонентов. Операционная система содержит сотни компонентов,
сложность зашкаливает. Осознать в одной голове систему полностью
практически невозможно, уследить за всем тем более. Тем не менее,
важно создать правильную архитектуру. Именно поэтому, необходимо
отталкиваться не от спецификаций, а от принципов.
Знаете, какая самая хорошая деталь в автомобиле? Та, которой нет. Если
детали нет, то её невозможно сломать, она не поддаётся износу, её не
нужно менять. Уже много лет подряд автомобильные компании бьются
над тем, чтобы сократить количество деталей в автомобиле, а в
особенности в двигателе. Тем совершеннее является система, чем
меньшим количеством деталей она выполняет заданные функции.
Интересный пример
Обратите внимание на стартовый стол запуска космических ракет
американцев и русских. Американская система, поддерживающая ракету
при запуске, отъезжает вбок. Русская система – это металлические балки,
поддерживающие ракету, откидывающиеся в разные стороны.
1. Конструктивный вариант
a. Подумать, как существующий менеджер можно
улучшить
b. Почитать документацию и требования на сайте,
возможно уже кто-то подумал об этом, и там
есть полезная информация
c. Реализовать улучшения и проверить свою
Варианты
5.3 Реализуемость
Мне часто задают вопрос, реализуема ли такая система в принципе. Ответ
– ДА. Система реализуема в разумные сроки.
Реализуемость
Как любит говорить мой учитель по кунг-фу, Дмитрий Анатольевич: «Я
говорил, что будет просто, но я не говорил, что будет легко».
Люди, которые умеют это делать, уже среди нас, нужно лишь привлечь их
к проекту и дать возможность внести свой вклад.
1. Новички
2. Профессионалы
3. Гуру джедаи
Результат это код, который может показать программист. Если нет кода, то
этот человек не программист, чтобы он не говорил и каким бы резюме он
не размахивал.
Важно
Сила разума и емкость сознания вот, что важно.
5.4 Архитектура
Для целостного представления и описания архитектуры я ввел 3 уровня.
Архитектура
1. Глобальная архитектура
2. Макро архитектура
3. Микроархитектура
5.4.2 Макроуровень
1. Среда разработки
2. Сервис хранения исходных кодов
Макро уровень
5.4.3 Микроуровень
1. Виртуальная машина
2. Исполняемый язык
3. Общая система типов
4. Компилятор времени исполнения
5. Уровень абстракции от платформы и железа
6. Динамический компилятор логики
Микро уровень
7. Понятие приложения
8. Логика
9. Визуализация
10. Механизм стилей
11. Динамический компилятор
12. Контекст вызова
13. Модель-представление-контроллер
14. Отладчик и профилировщик
15. Транзакционность
16. Версионность и система ссылок
17. Менеджер памяти
18. Автоматизированные тесты
5.6 Макро-уровень
Макро-уровень системы отвечает за удобство пользователей и
разработчиков программных систем. До того, как готовы основные
контуры виртуальной машины, приступать к детальному проектированию
этого уровня довольно сложно и преждевременно.
5.7 Микро-уровень
На микро-уровне самым важным является архитектура виртуальной
машины.
При этом система ссылок должна быть достаточно простой для того, чтобы
её можно было использовать в текстовых файлах, не прибегая к сложным
инструментам.
5.7.3 Логика
Пример 2
<h2>Здравствуй мир</h2>
Пример 2
</Logic>
</Visual>
Сама технология CSS очень удобна потому, что позволяет при помощи
простого текстового файла трансформировать атрибуты html модели, что
крайне удобно.
.class1
{
border : 5;
}
</Style>
</Style>
5.7.8 Модель-представление-контроллер
Для того, чтобы логике получить доступ к файлам, нужно входить в состав
приложения, запросить через это приложение доступ к файлам и получить
его с разрешения операционной системы.
5.7.12 Транзакционность
Поддержка транзакций
[CommitMethod = TransactionMethod_Commit]
[RoolbackMethod = TransactionMethod_Roolback]
public TransactionMethod()
{
var transactionContext = Context.Transaction;
}
public TransactionMethod_Commit()
{
var transactionContext = Context.Transaction;
}
public TransactionMethod_Rollback()
{
var transactionContext = Context.Transaction;
}
Использование транзакций
Transaction
{
ReadFromDatabase();
WriteToDatabase();
Rollback; // Commit;
}
Использование транзакций
atomic {
newNode->prev = node;
newNode->next = node->next;
node->next->prev = newNode;
node->next = newNode;
}
5.7.19 Безопасность
6 Раздел 6 – Реализация
6 Реализация
6.1 Введение
Для меня крайне важна прикладная сторона вопроса. Я хочу, чтобы
система Танго была воплощена в виде реально работающей системы.
1. Определение требований
2. Подключение людей
Итерации
3. Планирование
4. Реализация
5. Тестирование
6. Документирование
7. Ввод в эксплуатацию
1. Определение требований
2. Подключение людей
Итерации
3. Планирование
4. Реализация
5. Тестирование
6. Документирование
7. Ввод в эксплуатацию
метаинформации о типах
c. Базовые структуры представления для языка
исполнения
d. Компилятор времени исполнения
i. Компиляции для инструкций call и
загрузки ссылки на строку
e. Механизм запуска языка исполнения
3. Механизм построения билда
4. Скрипты для сборки приложения под Windows
Файл: ExecutionManager.Contract.Model.h
struct Instruction
{
int code;
};
Файл: ExecutionManager.Contract.Interface.h
class IExecutionManager
{
public:
virtual void Execute(Instruction* instruction) =
0;
};
Файл: ExecutionManager.Impl.h
class ExecutionManager : public IExecutionManager
{
public:
virtual void Execute(Instruction* instruction);
};
Файл: ExecutionManager.Impl.cpp
#include "stdafx.h"
#include "ExecutionManager.Contract.Model.h"
#include "ExecutionManager.Contract.Interface.h"
#include "ExecutionManager.Impl.h"
Файл: Sample.cpp
#include "stdafx.h"
#include "ExecutionManager.Contract.Model.h"
#include "ExecutionManager.Contract.Interface.h"
#include "ExecutionManager.Impl.h"
instr->code = 100;
executionManager->Execute(instr);
return 0;
}
Теперь пояснения.
ExecutionManager.Contract.Model.h
ExecutionManager.Contract.Interface.h
ExecutionManager.Impl.h
Естественно, что для того, чтобы этот подход работал, все модули должны
взаимодействовать друг с другом только через контракты.
Такой подход так же удобен тем, что тесты пишутся не для конкретной
реализации, а для контрактов, и если реализация обновляется или
заменятся, то тесты остаются по-прежнему актуальными.
6.1.4 Планирование
6.1.5 Реализация
6.1.6 Тестирование
6.1.7 Документирование
Простейшее приложение
<Logic compiler=”TangoLogicCompiler/v1”>
var i = 10;
for (var counter = 10; counter < 10;
counter++)
{
Tango.Console.WriteLine(“Hello world”);
}
</Logic>
1. Загрузчик файлов
исполнения
2. Парсер XML
Цепочка
return callMethod;
}
__asm
{
call callInstruction
}
return 0;
}
7
Права и
интеллектуальная
собственность
7.1 Права
Главное
Система должна быть общедоступна и открыта.
8 Раздел 8 – Заключение
8 Заключение
Спасибо больше за то, что прочитали книгу, за то, что дали мне
возможность поделиться с вами своими идеями.
http://os-tango.com