Предлагаю разработать набор библиотек и приложений для нормальной разработки приложений. Достаточно подробное описание находится в приложении.
Если кто-то хочет присоединится к разработке, пишите сюда. Если таковые не найдутся, я, конечно, что-то напишу, однако вряд ли многое. Хотя бы потому, что мне будет проще это реализовать в другом проекте, ради которого я собственно и занимаюсь разработкой под KOS.
PS: то, что написано в документе, является примерным наброском, а не ТЗ. Любая конструктивная критика или дополнения приветствуются.
PS2: разместил в разделе программы, т.к. Kobra уже существует, да и GUI будет основан на libGUI.
Проект нового фреймворка для Колибри
-
- Attachments
-
-
framework.odt (8.58 KiB)
- Описание проекта
Downloaded 418 times
-
Добавь в другом формате описание проекта.
<Lrz>
Вообще OpenDocument это стандарт, и неплохо бы иметь возможность его читать. Но вот в PDF, если надо.
Вообще OpenDocument это стандарт, и неплохо бы иметь возможность его читать. Но вот в PDF, если надо.
- Attachments
-
-
framework.pdf (44.48 KiB)Downloaded 458 times
-
для чего стандарт? да и Колибри его пока не читает
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!
Gluk
Для текстовых документов.
Для текстовых документов.
Ну из Колибри и скачать-то (нормально) документ, вроде не получится. Да и разве у кого-то она стоит основной системой?да и Колибри его пока не читает
Прочитал.
vkos, тебе респект, т.к. эта идея витала в воздухе. Я и сам о таком думал, но постить такое не стал - т.к. опять сказали бы "максимализм".
Но. Проблема кроется глубже. Она идет от ядра (API, различные подсистемы, впихнутые в ядро, сеть). Не спорю, проблемы системные и прикладные - абсолютно разные, и как раз такой фремймворк решит проблему (за счет того, что фреймворк нужно будет только переписать, а не все приложения).
А вообще, мысль конечно дельная.
vkos, тебе респект, т.к. эта идея витала в воздухе. Я и сам о таком думал, но постить такое не стал - т.к. опять сказали бы "максимализм".
Но. Проблема кроется глубже. Она идет от ядра (API, различные подсистемы, впихнутые в ядро, сеть). Не спорю, проблемы системные и прикладные - абсолютно разные, и как раз такой фремймворк решит проблему (за счет того, что фреймворк нужно будет только переписать, а не все приложения).
А вообще, мысль конечно дельная.
Да я знаю, но ядром лично я заниматься всё равно не буду.Она идет от ядра (API, различные подсистемы, впихнутые в ядро, сеть).
А я и не предлагал Просто обострил внимание.
Особенно мне понравилась (читай задела) эта фраза:
Как для проекта Just for fun, над которым работал один разработчик (ну ладно, два - diamond тоже приложил свою руку, за что ему огромнейшее спасибо), функциональность shell'а я считаю вполне нормальной. Вспоминаются заявления кого-то из сообщества перенести его на ассемблер за 2 дня. Ну, и? Надо бы написать diamond'у, чтобы он исключил shell из дистрибутива.Можно ещё упомянуть старую консоль cmd, которая уже не развивается (хотя она и функциональнее shell/console.obj)
Albom
Не хотел тебя обидеть, однако cmd предоставляет возможность написания осмысленных консольных приложений, а shell нет. С точки зрения пользователя shell функциональнее, но я имел ввиду с точки зрения разработчика.
Не хотел тебя обидеть, однако cmd предоставляет возможность написания осмысленных консольных приложений, а shell нет. С точки зрения пользователя shell функциональнее, но я имел ввиду с точки зрения разработчика.
Я не могу не прокомментировать этот текст.Как показывает практика, одним из главных факторов популярности той или иной платформы является простота и удобство разработки. Именно по этой причине завоевали популярность Windows (ещё во времена 3.1), Java, KDE, .NET, Mono... Пользователю нужны приложения, а их количество и качество зависит от дружественности платформы к программисту. Поэтому, для развития Колибри нужно писать прежде всего не конечные приложения, а библиотеки для разработки или вспомогательные приложения.
В те времена, когда windows3.1 ещё под столом ползала уже существовала очень функциональная графическая операционная система NextStep. В ней было всё, что есть в современных графических операционных системах: перекрывающиеся окна, премещаемые окна с возможностью выхода за пределы экрана, технология Drag & Drop, десктоп с иконками ярлыками, меню, графическими компонентами и много чего еще(и всё это в цвете!). А разрабатывать графические приложения можно было вообще не написав ни одной строчки кода! А всё благодаря применению языка Objective-C , являющегося объектно ориентированным(ООП) расширением языка C. Был использован специальный объектно-ориентированный подход, позволяющий создавать динамические расширяемые объекты(причём расширить функциональность интерфейса можно было даже не перекомпилировав GUI библиотеки). И всё это работало на процессоре в 25Mhz и 8 MB RAM. Наверное у вас возник вопрос куда исчезла эта система. Она никуда не исчезла. Где то примерно в 1995 году компанию NextStep купила Apple. И все возможности этой системы теперь есть в Mac OS X. Часть возможностей NextStep перекопировала Microsoft в свою Windows и Visual Studio (причём кривовато), а что-то не реализовано до сих пор.
Я нашёл в интернете открытый проект-альтернативу NextStep - это OpenStep. Но проект реализован на Objective-C. Хотя gcc поддерживает Objective-C, но большая часть функциональности этого языка реализована в runtime библиотеке(то есть исполняемой библиотеке). Размер её приличный. С учётом реализации dll в KolibriOS лучше не применять её для реализации GUI. Зато я нашёл реализацию базовых возможностей языка Objective-C на C++. Используя базовый C++ класс со специальным интерфейсом(то есть специальными методами класса), можно реализовать любой абстрактный тип данных с возможностью динамического управления этими данными. Созданные на основе этих классов объекты сами будут обеспечивать свою инициализацию,доступ к данным, своё удаление. Программисту вообще незачем думать об управлении объектами. Объекты сами удаляю себя, когда становятся ненужными, выполняют все операции по работе с хранимыми данными. Используя этот базовый класс и созданные на его основе объекты можно реализовать динамически создаваемый и расширяемый GUI интерфейс. Только вот есть две проблемы:
1)Как реализовать на C++ DLL для KolibriOS.
2)Как получить доступ к методам классов в такой DLL.
Проблему 2 можно решить, если решить проблему 1.
Так же хочу напомнить, что идеи ООП, приеменяемые в NextStep неплохо было бы задействовать и реализовать на ассемблере в оконной подсистеме. По сути я работаю в направлении применения такого подхода к оконной системе и к libGUI. Для ядра это должно быть на ассемблере, а для libGUI на С++.
P.S.
Не люблю много болтать и мало делать. Но тут без обсуждения к сожалению никак не обойтись.
KolibriOS-перспективная ос!
Kolibri is best operation system in the world!
Kolibri is best operation system in the world!
1. diamond сделал утиль, для конвертирования DLL в COFF-объект, которым я и пользуюсь.
2. Давно существует ABI для разделения ОО сущностьей между динамическими библиотеками (вообще их несколько), это GObject, который я и планирую переносить со временем. А как компилятор X заставить собирать классы именно в таком формате, это проблема этого компилятора. Пока есть только Vala, которая который использует GObject при создании классов, на сколько мне известно. Конечно можно работать с GObject на C (на чем он и написан) и на любом другом языке, только это будет очень странное ООП.
..bw
2. Давно существует ABI для разделения ОО сущностьей между динамическими библиотеками (вообще их несколько), это GObject, который я и планирую переносить со временем. А как компилятор X заставить собирать классы именно в таком формате, это проблема этого компилятора. Пока есть только Vala, которая который использует GObject при создании классов, на сколько мне известно. Конечно можно работать с GObject на C (на чем он и написан) и на любом другом языке, только это будет очень странное ООП.
..bw
И где можно скачать эту утилиту? На новом сайте diamond-а вообще ссылок стало значительно меньше, чем на старом сайте. И теперь я почти ничего там не могу найти.1. diamond сделал утиль, для конвертирования DLL в COFF-объект, которым я и пользуюсь.
KolibriOS-перспективная ос!
Kolibri is best operation system in the world!
Kolibri is best operation system in the world!
andrew_programmer
Я слышал про NextStep, однако у меня есть большие подозрения, что на тогдашних PC она бы просто не запустилась. Поэтому для windows она не была конкурентом.
По поводу C++, я его точно использовать не буду. Мне он вообще не нравится и, кроме того, я не вижу больших преимуществ в отличии от C. А недостатки есть - писать универсальное API для библиотеки на C гораздо проще, чем для библиотеки на C++ (взять хотя бы кол-во языков, поддерживаемых Gtk+ и Qt).
Я слышал про NextStep, однако у меня есть большие подозрения, что на тогдашних PC она бы просто не запустилась. Поэтому для windows она не была конкурентом.
По поводу C++, я его точно использовать не буду. Мне он вообще не нравится и, кроме того, я не вижу больших преимуществ в отличии от C. А недостатки есть - писать универсальное API для библиотеки на C гораздо проще, чем для библиотеки на C++ (взять хотя бы кол-во языков, поддерживаемых Gtk+ и Qt).
Ещё раз повторю, что я не хочу разделять оконную систему и графическую библиотеку. И пихать графику в ядро я тоже не хочу. А по поводу идей ООП, их конечно необходимо использовать, иначе написания фреймворка затянется на очень долгий срок..Так же хочу напомнить, что идеи ООП, приеменяемые в NextStep неплохо было бы задействовать и реализовать на ассемблере в оконной подсистеме. По сути я работаю в направлении применения такого подхода к оконной системе и к libGUI. Для ядра это должно быть на ассемблере, а для libGUI на С++.
Who is online
Users browsing this forum: No registered users and 6 guests