LINUX.ORG.RU

C++ в ядре Linux


0

0
Группа исследователей из университета г. Рейкъявик (Исландия) выпустила патч к ядру 2.6, позволяющий полноценное использование C++ в ядре. Поддерживаются исключения, динамические типы и глобальные объекты.

Разработка основана на коде GNU g++, но содержит также некоторые оптимизации, ускоряющее работы механизма исключений на порядок.

>>> netlab.ru.is

★★★

Проверено: Demetrio ()
>C++ runtime support for 2.6.9 (Last update 27 october 2004)

хоть убейте, но слова 'рантайм' и 'ядро ос' для меня не совместимы...

посмотрим во что это выльется, мож чё толковое получится

Pi ★★★★★
()
И даже в софт прокрались террористы ... Другим словом их не назовешь.
anonymous
()
А для ocaml когда патч напишут?
anonymous
()
Все, не собрать его теперь TCC-ой
angel_il ★★★★
()
А почему не для Java? Круто будет!
hdlc
()
M$ нам падлит, как пить дать M$ !
anonymous
()
наконец-то я смогу использовать coutk вместо обрыдлого printk!
anonymous
()
Ответ на: комментарий от V0ID
Батенька, вы сурьёзно? Вы хотите, чтобы разработка велась в 5 раз медленнее, код был непортируемым
и каждый баг было поймать в Х раз труднее? Флаг вам в руки. Напишите, только юзайте это сами.
Не хотел бы спровоцировать флейм, но ИМХО писать все подряд на АСМЕ это было ОК 30 лет назад.
АСМА в ядре должен быть разумный минимум, только там, где ведется низкоуровневая
работа с железом + некоторые оптимизации. Вон есть супернаворочанный и "суперстабильный" MenuetOS,
естественно само собой на АСМЕ. Там критических багов хватит лет на 10.
По теме: ОК!


XCHG
()
Как грицца, что делает кот когда ему нехрен делать: яйца лижет.

На кой фиг с++ в ядре нужно. Что там других проблем нет?

qqqq ★★
()
Ответ на: комментарий от qqqq
C++ заметно упрощает понимание и сопровождение системы. В коде C++ проще разобраться и его проще модифицировать.

Для тех кто считает (до сих пор), что объекты - это тормоза, предлагаю изучить как они выглядят на низком уровне. Тест прост - заведите класс, сделайте вызов, потом транслируйте этот код в ASM и посмотрите что собой представляет объект и собственно вызов его метода. Затем попробуйте это для наследника и вызова виртуальной функции.

Для тех что считает, что концепция - говно. Рекомендую почитать литературу по ОО и наконец-то понять, что такое инкапсуляция & etc. Не трудно увидеть, что подобие этих приемов присутствует в хорошо спроектированной программе на C. Так что С++ - это просто более удобный инструмент.
anonymous
()
Да чё там C++... Давайте на LISP-е перепишем. На нём Бог прогмает, значит одно авторитетное мнение у нас уже есть!
phicus
()
Ответ на: комментарий от anonymous
> Для тех кто считает (до сих пор), что объекты - это тормоза, предлагаю изучить как они выглядят на низком уровне. Тест прост - заведите класс, сделайте вызов, потом транслируйте этот код в ASM и посмотрите что собой представляет объект и собственно вызов его метода. Затем попробуйте это для наследника и вызова виртуальной функции.

Действительно, и что это все пишут на c? c++ же удобнее и быстрее. Наверное все дураки просто..

init ★★★★★
()
Новость со слешдота, где в комментах много раз упоминается, что подобные идеи уже неоднократно всплывали в различных осевых проектах. В основном в учебных. И почему-то (дураки наверное потомучто, а иначе как?) от этих идей очень быстро отказывались.
realloc ★★★★
()
Ответ на: комментарий от init
Дык енд юзверю пофигу на чем пишут, главное чтоб пахало , без багов и шустро. И нефиг спорить. Проведите иследование. Выделите пару "свободных" прогеров на обкатку с++ в ядре. Если дело действительно имеет положительные свойства - юзать в ядре. А не флеймить и п"здоболить в мэйл листах. Нам нужны конкретные резальтаты, а не мозгоплавление. Народ предпологает, а Линус Торвальдс распологает.
anonymous
()
Ответ на: комментарий от kelyar
нихрена.. тока питон! потом можна будет пальцы топырить "вишь эти пробелы перед строчками!? это я их вставлял!!! я кул кернелхацкер!"
anonymous
()
Ответ на: комментарий от anonymous
>> В коде C++ проще разобраться и его проще модифицировать Разбираться проще в коде, который хорошо написан. А это (умение качественно писать программы) не зависит от языка программирования. Ты, если пишешь, добавляй "имхо". Вот знаешь, мне например проще разбираться в проге на C, чем её аналоге на C++. Из всех проектов на C++ (относительно больших) лишь про некоторые я могу сказать - вот, действительно, здорово написано. Такие, пожалуй, можно пересчитать по пальцам. А вот почему-то действительно хороших программ на C куда больше.
idLe
()
Ответ на: комментарий от kelyar
php - для ламирофф. perl - вот енто для риел хакиров

make CC=perlcc bzImage

ananas ★★★★★
()
Ответ на: комментарий от anonymous
c++ по любому более сложный инструмент, чем с. :) Так что... Лучше не рисковать. ;) А то, нахакают. %))
hdlc
()
Sledushim shagom budet jadro na Haskelu :) Nu ili nakrajniak CLisp!
anonymous
()
Ответ на: комментарий от realloc
>И почему-то (дураки наверное потомучто, а иначе как?) от этих идей очень быстро отказывались.

Буш смеятся но именно по этому (что дураки) ;) . Как-то Линус уже отвечал на это вопрос.

PS: На самом деле (ImHO) проблема в наличае адекватных плюсовых инструментов (в основном это то, что у g++ живет в libstd++) для писания кода ядра и топик как раз про попытку такой инструментарий создать.

PS2: Не приведи господь если народу понравится ;)... опять начнут курочить дизайн ядра, но на этот раз под плюсы ;)

sS ★★★★★
()
Хорошо было бы если бы Линус все-таки включил этот патч в ядро. Еще лучше, если бы как опцию. С портированием виндовых драйверов было бы значительно меньше проблем. (По крайней мере у меня :))
anonymous
()
писец, развели флейма... форк как форк... нАрмАльные пАцАны будут юзать... а мы, красноглазые, и vanilla'й обОйдемся...
anonymous
()
Маразм крепчал, деревья гнулись...
anonymous
()
"мы с не знаем, зато умеем с++, и нам очень хочется засунуть что-нибудь в ядро линуха. вот такие мы извращенцы"
geek ★★★
()
Ответ на: комментарий от Oval
А что такое метапрограммирование, почему оно будет именно в ядре, и с чего ты взял, что С++ удобен для этого метапрограммирования?

anonymous
()
Ответ на: комментарий от init
>>Действительно, и что это все пишут на c? c++ же удобнее и быстрее. Наверное все дураки просто.

Ну допустим не все QNX например писан на C++ тормозом не считается

Pavel_and
()
Ну и что вы тут раскудахтались ?
C++ и ООП хорошо знаете ? Много ядреного кода написали ?

Люди полезную вещь делают, в отличии от вас.
Лиш бы обосрать, одним словом LOR :|
ed ★★
()
Лучше б ADA прикрутили... там и типизация и рандеву ... надёжность.
anonymous
()
Ответ на: комментарий от anonymous
>Для тех что считает, что концепция - говно.

Кстати, о концепциях. Алан Кокс считает, что потоками пользуются те, кто не умеет программировать конечные автоматы.

Как насчет многопоточной концепции?

jackill ★★★★★
()
Ответ на: комментарий от ed
Линус против С++ в ядре - для меня это достаточный аргумент.
anonymous
()
Вспоминается случай с Торвальдсом, который божился перед Тененбаумом переписать Linux на C++. :-)))
anonymous
()
Ответ на: комментарий от anonymous
>А что такое метапрограммирование, почему оно будет именно в ядре, и >с чего ты взял, что С++ удобен для этого метапрограммирования? Ты слишком часто задаешь вопросы. Попробуй найди ответ на первый и возможно остальные два тебя перестанут интересовать.
anonymous
()
Это просто ни к чему ИМХО.

Винда со своими плюсами полна багов. Не хватало нам еще путанного, но "объектно-ориентированного" проектирования ядра.

В топку!

P.S. C -- это язык для системного программирования, а C++ -- для прикладного.

anonymous
()
А я на bsd перешел, мне пох ;))
morge ★★
()
Ответ на: комментарий от anonymous
Именно, думаю, что с С++ делать ось Just for Fun не получится, и может уменьшится число контрибуторов. Хотя это все равно решать тем, кто больше всех участвует в разработке. В лююом случае это будет дополнительной преградой в развитии Linux.
anonymous
()
Оч полезная штука. Жалко что в основную ветвь это дело не внесут.
eXOR ★★★★★
()
Ответ на: комментарий от anonymous
Есть такая конторка, OSR (www.osr.com). Одна из авторитетнейших в области kernel-mode программирования для NT. Дык вот они грят, что скармливают весь свой сишный код компилятору C++, и он _всегда_ находит ошибки, которые пропускает сишный компилятор. Это они рекомендуют делать всем. Крутость с++ как раз в том, что у него офигенная обратная совместимость с си. Можно писать на с++ и без RTTI, исключений, полиморфизма и даже без классов и даже при этом иметь более качественный код, хотя бы благодаря более жесткой типизации плюсов. Для меня с++ - это прежде всего, жесткая типизация, автоматическое освобождение ресурсов через деструкторы локальных объектов и хороший коэфициент повторно используемого кода. Кстати, способ использования исключения и RTTI (что взаимосвязано) в NT было найдено народом очень давно, но вряд ли кто-нить это активно юзает, это как раз стремно. Да и MS не рекомендует, официально плюсы так и не поддерживаются в ядре :( Хотя сама MS уже давно пишет часть драйверов на плюсах. Я бы от официальной поддержки исключений в ядре не отказался бы, хотя бы код портировать было бы легче :) Кстати STL от SGI прекрасно работает, только что аллокатор свой прикрутил.
tazo
()
Ответ на: комментарий от tazo
Угу. Только меня этот гемор с типизированием как-то раз порядком подз**бал. Компилил libxml++ и несколько раз огребал ошибки из-за того, что ф-ция требовала char*, а std::string::c_str() возвращал const char*.

Каждый язык хорош для тех целей, для которых изначально создавался. Что-то я не слышу о широком распространении kylix в мире Linux. Как-то все больше Qt да GTK+ попадаются...

anonymous
()
Ответ на: комментарий от anonymous
>>Винда со своими плюсами полна багов. ядрышко то у винды в основном на С написано. А если мозг не позволяет писать нормальный код на любом языке, то надо что-то не с языками делать, а с головой
Pavel_and
()
Ответ на: комментарий от Pavel_and
Чу. Смотри bagtraq. Сплошь buffer overrun. Ошибка, которая при правильном программировании на плюсах в принципе невозможна. А на си сплошь и рядом. Ты скажи, сколько MS код чистили, сколько фиксов за пятнадцать лет? Если бы C++ стандартизировали бы в 80-х, ядро NT было бы менее глючное.
tazo
()
Пожет, ещё и иксы на 40-е прерывание пустить, как в Menuet? Или на Бейсике написать?
drish ★★
()
Ответ на: комментарий от tazo
> Ошибка, которая при правильном программировании на плюсах в принципе невозможна

При правильном программировании она невозможна нигде. А в С++ она возможна при неправильном программировании. С и С++ в этом отношении - близецы-братья.

anonymous
()
абсолютно ненужная вещь - не должно быть в ядре плюсов - не нужны они там;

в топку данное изделие;

В сторону асма двигаться тоже не надо - бред. Лучше просто С.

alphex_kaanoken ★★★
()
может С++ в ярде и не надо (что интересно на это скажет Линус?), а вот забэкпортить эти их оптимизации обратно в g++ было бы недурно. Все-таки сокращение времени типовой операции с 18 до 2.1 мс это не хрен собачий.

Статью на их странице кто-нибудь читал? я имею в виду ту что в PDF

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