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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.