English site

For those who do not read Russian

Вход для клиентов

Задачи по проектам и багтрекинг



Что пишут

09.07.2010, computerra.ru
Дмитрий Завалишин об операционной системе «Фантом»

19.10.2009, kommersant.ru
Тактика операционной борьбы

09.09.2009, highload.ru
Запуск Фантом ОС на HighLoad++

02.09.2009, dz.ru
ОС «Фантом» впервые представлена широкой аудитории

23.04.2009, pcmag.ru
Фантом отечественной сборки

25.02.2009, webplanet.ru
Русская ОС: три с половиной рецепта

13.02.2009, itoday.ru
Phantom Operating System

03.02.2009, theregister.co.uk
Russian rides Phantom to OS immortality

18.01.2009, gzt.ru
Депутаты поищут защиты от Windows у президента


Смотреть еще…

Письмо Дмитрию Завалишину

Здравствуйте Дмитрий!

Возможно мое письмо покажется вам странным, но тем не менее.

Натыкался на помойку на роем.ру, и мне откровенно было противно и обидно даже читать то, что там пишут. По-моему мнению вся эта грязь основана даже не на пессимизме и здоровом скепсисе этих людей(!), а на тупой злобе.

Думал тогда даже написать вам письмо, но тоже решил, что не к месту.

Сегодня посмотрел новую презентацию, и поймал себя на мысли, что даже воспринимаю это как должное, что все так как и должно было быть: говорили что делают, вот делают. Но удивляет, что все равно отношение холодное. Я, конечно, ничего не понимаю в строительстве операционных систем, но мне не понятно, как люди могут вот так вот говорить даже после того как им продемонстрировали что уже сделано так много сложнейших корневых вещей. И все равно народ с задранным носом и умствующим видом продолжает делать пессимистические прогнозы и дуровать.

Так вот что хочу сказать, вы конечно и так знаете, но НЕ СЛУШАЙТЕ ЭТИХ КРЕТИНОВ! Когда им «картинку не показали» — они поливали грязью, но сейчас отношение похоже не изменилось особенно, т.е. дело было не в скепсисе или недоверии, а в банальной их злобе, тупости, и зависти.

А что касается Фантома, я конечно мало в этом разбираюсь, но мне нравится.

Мне 22 года. Я вообще php-программист (это уже смешно да)). Php язык конечно ужасный, но нормальный, если правильно им программировать.

Так вот. Всегда когда я программировал на старой работе меня посещало отвратительное ощущение полной бесполезности моего труда, несмотря на счастье заказчиков, признание шефа и зарплату. Каждый раз, Каждый раз! Когда современный программист решает задачу, он тупо пишет то, что уже миллион раз писалось. Вот приходит заказчик и говорит: мне нужна система где можно будет менеджить XXX, т.е. добавлять XXX, редактировать XXX, и удалять XXX. И тратится огромное кол-во времени и сил на создание этой системы. А почему? Казалось бы даже есть куча паттернов, есть куча инструментов ведения разработки, есть куча «наиболее подходящих» технологий и язков, а уж какое бесконечное множество фреймворков существует! И все равно разработка чего-то это целый проект, занимает кучу времени и стоит прям бешеных денег! Да, конечно, мне приятно что моя профессия оплачивается (хотя мой текущий опыт показывает обратное), и считается вроде как правильной и полезной, так как она действительно бывает очень сложной. Но тем не менее, если быть честным перед самим собой — все это неправильно. Если посмотреть на это как бы с точки зрения «мирового народного хозяйства» — это сумасшествие. На мой взгляд, современная разработка — преступно неэффективна. Очень неэффективна, неэффективнее наверное может быть только современное российское государство. НО в государстве 90% тупо воруют, а тут что? Кто-то ворует из репозитория комиты? Да вроде нет. И даже если рассуждать в некоторых идеальных условиях, когда программисты у нас бесконечно опытные, побитые жизнью, и, при этом трудолюбивые, и до того уникальные, что даже не страдают велосипедизмом — все равно получается неэффективно.

Создание систем на мой взгляд, по-хорошему должно быть в 10 раз быстрее и дешевле. И я стал задумываться, в чем же проблема-то, ну много было мыслей, но конкретно по вашей теме взять один из примеров. Целыми днями, целыми днями! Мы либо пишем SQL, либо корячимся с воркэраундами для ORM. И все это чтобы получить чертов объект, из которого нужно дернуть геттер и отобразить его на экран, всего-то. Отобразить кусочек данных на экран! Это то, что технически компьютер умеет уже лет 50 наверное, просто отобразить на дисплей данные! И как мы не были опытны и сколько бы супер-дупер библиотек не использовали, мы все равно «занимается» этим. А уж если нам надо читать и писать файл... у.. об этом далее.

Небольшое отступление. Мне тут предложили делать шабашку. Там специфическая задача, обрабатывать до тысячи http запросов в секунду. Ну я начал пробовать, сделал прототип на пхп, и сразу от него отказался. Понял что надо писать fastcgi на C. При этом на си писать я не умею, разве что в институте писали пару курсовых, ну и K&R листал. Взял значит и начал писать, потом выяснилось что удобнее писать на с++, но догадался, что менеджить объекты в с++ с такой квалификацией как у меня — опасно т.к. наверняка потечет по памяти, и писал процедурно только пользуясь где надо STL (пришлось быстро вникать). Короче в итоге написал что-то, что работало и даже делало что нужно. Но кошмар это был тот еще. И хоть я даже не нарывался на проблемы и вело оно себя стабильно, из-за трудоемкости этого процесса я отказался от с++. И тут меня осенило, что если я так уже занимаюсь криминалом — программирую на языке который я не знаю, то почему бы не выбрать более нормальный язык. Так вот, я никогда в жизни не писал на Java, и за две недели освоил ее на базовом уровне, при этои переписав этот маленький проект, и добавив в него еще столько же логики. Вообще жавой я просто поражен, это фантастика, оказалось, что тот код, который я писал на php по идеологии был фактически уже кодом на жава в синтаксисе php, за что спасибо М.Фаулеру, и моему шефу со старой работы. Я давно предчувствовал, что хочу статический язык, и я очень счастлив, что мне подвернулся хоть маленький проект на котором можно было освоить жаву. Это колоссальная штука. Хотя C# судя по всему еще круче.

Так к чему я все это. Если вам еще не надоело читать. Встал значит вопрос, что приложение надо конфигурировать. Т.е. надо бы настройки задавать. Ну, казалось бы, чего уж тут, надо файлик и библиотеку, как всегда, ерундовая вещь. Но несмотря на то, что делаю это уже в бесчисленный раз, меня всегда это напрягает. Какая-то неимоверная неприязнь. Снова и снова, каждый раз, приходится решать одну и туже тупую задачу. Ну разумеется, тут в новом языке надо сначала найти библиотеку. Нашел: сохраняет как обычно настройки в xml, сериазизует/десериазизует объект. Но почему-то полдня разбирался (т.к. жаву не особо знаю) и прикручивал. Сделал. С одной стороны хорошо, вроде как задача решена. Но ведь это опять колоссальное супер-дело. Во-первых для того, чтобы болванку этого xml сгенерировать по ее формату, нужно эти объекты, вручную написав код, в нужный вид со всеми ссылками привести и дернуть метод, и получится xml-ка. Как бы даже хорошо, мне не нужно ничего делать, все «само». Но если задуматься, то становится понятно, что особенно то ничего хорошего: по сути сегодня в 2009 году меня разве что избавили от уж совсем сумасшедшей необходимости вручную xml клепать и парсить(а ведь было дело и мне приходилось), вот тебе и прогресс: «скажи спасибо что с диском на низком уровне не работаешь!». Я так понимаю, в Фантоме мне этого делать не придется в принципе. Это охренительно круто.

Но что меня вообще повергло в шок когда я сегодня до конца все осознал (если я конечно правильно понимаю):

Описываю как сейчас я все делаю. Есть линукс, веб-сервер (ngxin) он умеет по fastcgi работать, веб-приложение на жава этот fastcgi реализует через библиотеку, ну и реализует еще и собственно саму логику (на саму логику ушло времене в 10 меньше чем на все остальное). Есть еще сервер mysql, и будет потом memcached. Все это совместно взаимодействует и работает. Вы не представляете, мне, ненавистнику Linux, который старается свести его присутсвие к минимуму, каких трудов стоит все это конфигурирование и настройка, вроде все просто, несколько приложений да и все, но времени отнимает очень много. Особенно если иногда приходится что-то пересобирать, или когда заново разворачивать весь этот зоопарк на других серверах для тестирования, кошмар короче.

А особенно напрягает fastcgi. Вроде логично: быстрый сервер по быстрому протоколу через сеть (ну или юникссокет) взаимодействует с приложением которое написано на java. Но разумеется это сказывается на скорости (это уж не говоря о трудоемкости), скорость конечно, устраивает вполне, но ведь могло бы еще быстрее, но никуда не уйдешь — прослойки бесплатными не бывают, но и многопоточность тут не очень понятно как делать. Похоже в дальнейшем придется писать свой простейший веб-сервер прямо на java, если потяну, а потом уже и многопоточность. Дурдом одним словом.

Как я это понимаю будет в фантоме.

Я просто сделаю:

webServer.registerApplication(new ApplicationPool(new MyApplication, 4));

Никаких, диких копаний с поиском нормального способа связи сервера и приложения, никаких FastCGI, никакого http реверс-проксирования, никаких портов и адресов, никаких «протоколов». В базовом случае даже нет MySQL! Соответственно там где memcahed существует лишь по проблеме MySQL, нет и memcached. Но если будет какая-то возможность гарантировать размещение данных в только в оперативной памяти, то таких вещей как memcahed естественно тоже не будет в принципе! Но ведь и нет никаких файлов конфигурации при развертывании...

Понятное дело, конкретно данная строчка кода утопическая, но если общая идея действительно такова как я ее сейчас понимаю, то у меня просто нет слов выразить восхищение!

Мне искренне жаль, что я, к сожалению, один из тех, кого x86 процессор с его регистрами и прерываниями повергает в шок, да как собственно и любой чип, и я ничем не могу помочь, да и проблем у меня сейчас много других, хоть и свободного времени куча). Но когда будут доступны высокоуровневые средства разработки и будет допилен язык phantom, и оно сможет грузиться в VMWare, я обязательно как минимум попробую написать hello world:)

Если совсем имажинировать и теоретизировать, то для попытки написания например минимального веб приложения наверное было бы достаточно:

  • Шелл
  • Графический интерфейс с окнами
  • Сеть
  • Редактора объектов памяти, правда совсем не представляю как бы это могло выглядеть
  • Текстовый редактор
  • Допиленный язык phantom со стандартной библиотекой (что еще круче — возможноть выполнять java)

И возможности работы с сокетами, дальше думаю даже я при большом усилии смог бы уже попробовать разобраться.

Ну если бы действительно удалось выполнять Java-код, то тогда это было бы просто супер круто. Фактически все нужное прикладное было бы уже сразу портировано. Хотя мне такая задача кажется просто грандиозной — обеспечить выполнение кода монструозной стандартной библиотеки Java, полностью удовлетворить всем спецификациям..

И еще я вот думаю, а так ли мне как разработчику нужен «классический» шелл операционной системы. Ведь там все завязано на файлах, вводе-выводе, что в Фантоме бессмысленно. А вот если бы в фантоме вместо шелла был бы интерактивный интерпретатор phantom (или java), это наверное было бы вообще круто. Т.е. залогинился, написал приложение в интерактивном режиме и... все... — закрывай крышку ноута)

Прошу прощения за отнятое время, наверное мое письмо выглядит немного бредово, я просто очень впечатлен.

Сломленные вами на сегодняшний день преграды — уже колоссальны. Искренне желаю вам успеха, пусть вам сопутствует удача!

Эдуард,
г.Казань