LINUX.ORG.RU

Ядро на ООП

 ,


2

4

А как вам идея написать ядро ОС, по сложности и возможностям сопоставимой с Linux, с применением ООП (например, на C++) Каждый драйвер, сервис и др. сделать классом (ну группой классов).

Плюс, который я вижу - за счёт применения классов и пространств имён можно повысить структурированность кода, не переходя к микроядерности.

Минус - необходимость поддержки ООП в ядре влечёт за собой некоторый overhead (вот насколько он будет заметен - тоже интересный вопрос).

Высказывайтесь.

★★★★★

А как вам идея написать ядро ОС

А вообще да, напиши нам для ARM замену андроида, чтоб летало всё. если хорошо написать то кремляди даже наверняка на премию выдвинут

Karapuz ★★★★★
()
Ответ на: комментарий от swwwfactory

Но мне показалось, что сейчас язык больше не развивается и был брошен на какой-то стадии развития.

Как и сама inferno. Из живых, кажется, Go наследует основные идеи limbo.

unsigned ★★★★
()
Ответ на: комментарий от true_admin

Хочу в питоне декоратор @kernel

а что он делать должен?

Встраивать декорируемую функцию в ядро, что бы она запущалась непосредственно оттуда?

AIv ★★★★★
()
Ответ на: комментарий от quantum-troll

Plan 9 во многом вдохновлён Обероном же.

С чего вдруг? Здесь об этом ни слова, да и в вике Оберон не упоминается.

Если ты про Inferno, то сразу уж с пруфом.

korvin_ ★★★★★
()
Ответ на: комментарий от quantum-troll

А не наоборот? Plan 9 начали планировать еще в 80-х

jamy
()
Ответ на: комментарий от korvin_

http://doc.cat-v.org/plan_9/4th_edition/papers/acme/

Acme is a new program, a combined window system, editor, and shell, that applies some of the ideas distilled by Oberon. Where Oberon uses objects and modules within a programming language (also called Oberon), Acme uses files and commands within an existing operating system (Plan 9). Unlike Oberon, Acme does not yet have support for graphical output, just text. At least for now, the work on Acme has concentrated on producing the smoothest user interface possible for a programmer at work.

Хотя бы это, на самом деле весь UI в Plan 9 напоминает Оберон.

quantum-troll ★★★★★
()

Тред не читал, но ядро уже написано в ООП-стиле.

за счёт применения классов и пространств имён можно повысить структурированность кода, не переходя к микроядерности.

За счет классов точно нельзя, за счет пространств имен... тоже, в общем. В этом вашем линупсе вместо пространств имен EXPORT_SYMBOL и префиксы имен символов.

tailgunner ★★★★★
()
Ответ на: комментарий от swwwfactory

Интересен механизм каналов.

Limbo это предшественник Go, Rob Pike практически все идеи перенес. Те же каналы есть в Go. Так что если и смотреть, то не лимбо, а го.

Но для ядра оно не нужно.

hexdump01010101
()
Ответ на: комментарий от unsigned

Да, с C++ было бы немного удобнее

Ничуть не удобнее. По опыту узнаю, что понимать и отлаживать ООП на С куда проще, чем ООП на С++. Особенно в низкоуровневых вещах, когда нужно до мелочей представлять, что происходит. С++ только запутывает, скрывая важные детали, не привнося ничего нового.

Но ООП на Си бывает очень разный. Linux — образец хорошего дизайна низкоуровневого ООП, а Glib/GTK+ — образец того, как делать ООП ни в коем случае нельзя.

hexdump01010101
()
Ответ на: комментарий от quantum-troll

Хотя бы это

Acme != Plan 9

на самом деле весь UI в Plan 9 напоминает Оберон.

UI? Вот эти белые прямоугольники с циановой рамкой? Более простого UI придумать сложно, поэтому неудивительно, что он что-то напоминает. Обероновский UI тоже может запускаться рекурсивно?

korvin_ ★★★★★
()

Сколько раз за тред тебе сказали что linux написан в ООП стиле с применением своей собственной объектной системы?

KblCb ★★★★★
()
Ответ на: комментарий от Legioner

И, подозреваю, всех остальных современных операционных систем.

Ну в принципе, любой, кто создавал окна с применением win32 API, видел, что это попытка втиснуть ООП в процедурный язык. И как следствие, программа, работающая напрямую с Win32 API, выглядит более громоздко, чем если бы она работала с классами. Необходимость определять кучу callback-ов и др.

hobbit ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Если ты мыслишь классами в ООП, а не интерфейсами, как положено

Одно другого не отменяет.

Собственно, в языках, где нет понятия интерфейса именно как элемента языка - интерфейс и создаётся как абстрактный класс.

hobbit ★★★★★
() автор топика
Ответ на: комментарий от unsigned

Впрочем, я так и не понял, чего хочет ТС - классы или ОО-дизайн.

В первую очередь, разумеется, дизайн.

Ну а далее есть такая мыслишка, что при помощи классов означенный дизайн реализуется всё же более естественно и читаемо, чем без оных.

Да, про то, что на голом Си можно писать в ОО-стиле, я в курсе, уже 20 лет как. Но всё же это несколько напоминает удаление гландов через задницу. Хотя да, современные ОС именно так и написаны.

hobbit ★★★★★
() автор топика
Ответ на: комментарий от hexdump01010101

По опыту узнаю, что понимать и отлаживать ООП на С куда проще, чем ООП на С++. Особенно в низкоуровневых вещах, когда нужно до мелочей представлять, что происходит. С++ только запутывает, скрывая важные детали, не привнося ничего нового.

Звучит правдоподобно. Но хотелось бы конкретных примеров. Ты про таблицы виртуальных методов?

hobbit ★★★★★
() автор топика
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от hobbit

Ну а далее есть такая мыслишка, что при помощи классов означенный дизайн реализуется всё же более естественно и читаемо, чем без оных.

Например? Что такого дают классы?

korvin_ ★★★★★
()
Ответ на: комментарий от korvin_

Ну первое, что приходит в голову: если я захочу сделать позднее связывание без классов - мне придётся под это дело заводить таблицу указателей и самому её заполнять. Классы делают это за меня.

hobbit ★★★★★
() автор топика
Ответ на: комментарий от hexdump01010101

Limbo это предшественник Go, Rob Pike

Это ведь не функциональны(е|й) язык(и)?

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

swwwfactory ★★
()
Ответ на: комментарий от hobbit

Ну первое, что приходит в голову: если я захочу сделать позднее связывание без классов - мне придётся под это дело заводить таблицу указателей и самому её заполнять. Классы делают это за меня.

Странно, но ведь можно например в качестве интерфейсов использовать каналы...

Да и в Go есть интерфейсы, но нет классов и ничего, динамическая диспетчеризация работает.

korvin_ ★★★★★
()
Ответ на: комментарий от swwwfactory

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

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

korvin_ ★★★★★
()
Ответ на: комментарий от swwwfactory

Один из ярчайших представителей стековых языков: форт.

Да, мощнейшая была штука и очень компактная. Жаль, сейчас про неё мало кто помнит. И даже forth.org.ru пишет «сервер на реконструкции».

hobbit ★★★★★
() автор топика
Ответ на: комментарий от hobbit

Про форт сейчас знают все те, кто про него когда-то и знал. Это просто куча быдлокодеров на жабках-сишечках появилась.

buddhist ★★★★★
()
Ответ на: комментарий от korvin_

Спасибо, учту на будущее.

Только, Вы бы сами поучились чуток, при употреблении местоимений, а потом другим тыкали. С такими походами Вам неразумно рано давать советы другим по проектированию ОС и выбору языков.

Будьте благовоспитанны и люди к Вам потянутся.

swwwfactory ★★
()
Ответ на: комментарий от hobbit

оно все живое. Помнят многие, даже в пакетах всех популярных дистров есть. На форте можно делать чудеса. Очень компактен - остальные нервно курят в сторонке по части компактности.

Но на нем сложно быдлокодить. Народу надо что-то полегче. Например язык-оболочка над фортом. Эдакий компилятор, переводящий все в форт.

Кстати, касаемо ерланга: есть еще эликсир. Новый ООП-язык на базе ерланга. http://elixir-lang.org/

Нечто подобное для форта не помешало бы.

swwwfactory ★★
()
Ответ на: комментарий от korvin_

Что такого дают классы?

Покормлю: наследование не через жопу, безопасные по типам виртуальные функции, в Си++ - конструкторы и деструкторы.

tailgunner ★★★★★
()
Ответ на: комментарий от buddhist

Это просто куча быдлокодеров на жабках-сишечках появилась.

Сильно сказано. И смело.

Ничего, что я когда-то давно одновременно и С, и Форт осваивал? Правда, с С отношения до сих пор продолжаются, а вот с фортом как-то не срослось в конце концов.

Не, ну я, конечно, по большому счёту тоже быдлокодер, но...всегда хочется думать о себе немного лучше, чем есть на самом деле. :)

DeVliegendeHollander ★★
()
Ответ на: комментарий от swwwfactory

Но на нем сложно быдлокодить.

Если под «быдлокодить» понимается процесс производства кривого, глючного и непонятного кода, то Форт очень подходит для быдлокодинга.

tailgunner ★★★★★
()
Ответ на: комментарий от DeVliegendeHollander

Я имел в виду все С-подобные языки, в особенности C# и C++ :) Понятно, что к чистым сишникам это почти не имеет отношения.

buddhist ★★★★★
()
Ответ на: комментарий от swwwfactory

Только, Вы бы сами поучились чуток, при употреблении местоимений, а потом другим тыкали. С такими походами Вам неразумно рано давать советы другим по проектированию ОС и выбору языков.

Будьте благовоспитанны и люди к Вам потянутся.

Таким образом, местоимения Вы, Ваш пишутся с прописной буквы при обращении к одному лицу в текстах следующих жанров:

а) личное письмо (адресат – конкретное лицо; при этом само по себе употребление местоимения Вы вместо ты является выражением вежливости по отношению к адресату);

б) официальные документы, адресованные конкретному лицу;

в) анкеты (адресат – неконкретное лицо).

http://www.gramota.ru/spravka/letters/?rub=rubric_88

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

korvin_ ★★★★★
()
Ответ на: комментарий от buddhist

Понятно, что к чистым сишникам это почти не имеет отношения.

Уточнение «почти» здесь очень уместно. Встречался мне один программер, у которого код на С выглядел так, как будто написан на басике, на котором он до этого писал лет 5-6. Я даже вообразить себе не мог, что на С возможно такое сотворить. :)

DeVliegendeHollander ★★
()
Ответ на: комментарий от tailgunner

Покормлю

Спасибо, а то я все не знал, что бы на ужин сегодня употребить. =)

наследование не через жопу, безопасные по типам виртуальные функции, в Си++ - конструкторы и деструкторы.

Но про наследование нет ни слова в «ООП им. тов. А.Кея».

korvin_ ★★★★★
()
Ответ на: комментарий от tailgunner

надо сказать так: «форт это истинный быдлокодинг» В данном контексте понимается, что для написание рабочего кода на форте, невозможно написать абы как. Шаг влево шаг вправо - расстрел в виде ошибок стека. Оно работает, но никому неизвестно как, кроме автора.

swwwfactory ★★
()
Ответ на: комментарий от korvin_

про наследование нет ни слова в «ООП им. тов. А.Кея».

Потому что оно и не нужно в оригинале. Это поздняя придумка.

buddhist ★★★★★
()

ООП

C++

Так ООП или таки С++?

PolarFox ★★★★★
()
Ответ на: комментарий от buddhist

Это поздняя придумка.

В Фортране не было рекурсии. То, что чего-то где-то когда-то давно не было - это аргумент на уровне карго-культа.

tailgunner ★★★★★
()

Singularity уже упоминали?

Uter
()
Ответ на: комментарий от tailgunner

В Фортране не было рекурсии. То, что чего-то где-то когда-то давно не было - это аргумент на уровне карго-культа.

В Лиспе была, но ты прав, это не аргумент.

А «безопасные по типам виртуальные функции»... Опять же Go — динамическая диспетчеризация есть и безопасна по типам.

korvin_ ★★★★★
()
Ответ на: комментарий от korvin_

Может оно и не нужно вовсе?

В «динамическом быдлоязычке» (ц) вроде Смоллтока - наверное, нет.

А «безопасные по типам виртуальные функции»... Опять же Go — динамическая диспетчеризация есть и безопасна по типам.

Их можно сделать несколькими способами, и классы - один их этих способов.

tailgunner ★★★★★
()
Ответ на: комментарий от korvin_

Форумы выросли из ntp-сервисов, которые в свою очередь из фидошных и bbs-ок. Что по сути является продолжением переписки в виде отдельных писем. объединенных в цепочку. Так-что употребление ВЫ уместно в данном контексте. Кроме того, употребление местоимения к незнакомому собеседнику тем паче. Соответственно можно перейти на ты после взаимной договоренности.

Уже много раз говорилось про употребление ВЫ на форумах и тем более здесь. Начать на ты как-то не вежливо, тем более человека не знаешь, поэтому уж лучше на Вы или вообще без местоимений. Если завязывается приватная беседа на форуме, то целесообразно перейти в приватный режим беседы.

Лично мне форум ЛОРа напоминает эдакую большую курилку, где заходят и выходят разные личности и обмениваются своими соображениями о жизни несомненно и так далее. Происходит обмен мыслями, информацией, что есть благо. Общение дает обмен мыслями. Если кто-то думает не так или непонятно как, это еще не значит что неправильно. Есть мнения, мысли и убеждения.

Проявление всплеска агрессии свидетельствует о жестких условиях в которые поставлен собеседник по жизни. Лучше посочувствовать. Для профессионалов ИТ не должно быть поводов для агрессии иначе они не профессионалы. Если поводы есть, то лучше молчать и слушать, молчать и слушать... (c)

http://www.gramota.ru/spravka/letters/?rub=rubric_88

спасибо за ссылку - почитаю.

http://totaldict.ru/idictation/bykov/

swwwfactory ★★
()
Ответ на: комментарий от tailgunner

Их можно сделать несколькими способами, и классы - один их этих способов.

Ну так не «единственно-верный-и-обязательный».

korvin_ ★★★★★
()
Ответ на: комментарий от swwwfactory

Форумы выросли из ntp-сервисов, которые в свою очередь из фидошных и bbs-ок.

Ok

korvin_ ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.