Здравствуйте, U2, Вы писали:
U2>а имеет ли смысл вообще писать драйвера на C++ ?
этот вопрос больше относится к "философии программирования" чем к "низкоуровневому прог-ю" — может Вам перенести этот вопрос в соответствующий форум?
в любом случае это решение каждый принимает для себя сам.
cb.
Re[2]: а имеет ли смысл вообще писать драйвера на C++ ?
Здравствуйте, _cb_, Вы писали:
__>Здравствуйте, U2, Вы писали:
U2>>а имеет ли смысл вообще писать драйвера на C++ ?
__>этот вопрос больше относится к "философии программирования" чем к "низкоуровневому прог-ю" — может Вам перенести этот вопрос в соответствующий форум? __>в любом случае это решение каждый принимает для себя сам.
Ну почему же философия? Вполне нормальный вопрос, только спрашивать надо по-другому. Есть ли смысл писать драйвера на C, если можно на С++.
Re[3]: а имеет ли смысл вообще писать драйвера на C++ ?
Здравствуйте, Areex, Вы писали:
A>Здравствуйте, _cb_, Вы писали:
__>>Здравствуйте, U2, Вы писали:
U2>>>а имеет ли смысл вообще писать драйвера на C++ ?
__>>этот вопрос больше относится к "философии программирования" чем к "низкоуровневому прог-ю" — может Вам перенести этот вопрос в соответствующий форум? __>>в любом случае это решение каждый принимает для себя сам.
A>Ну почему же философия? Вполне нормальный вопрос, только спрашивать надо по-другому. Есть ли смысл писать драйвера на C, если можно на С++.
Правильно, мало же в ядро мусора живет ...
Если у человека в ядреном коде появляются классы и прочая мутотень, то он просто не понимает что нужно пихать в ядро, а что нет.
Re[4]: а имеет ли смысл вообще писать драйвера на C++ ?
От:
Аноним
Дата:
21.02.04 17:32
Оценка:
Здравствуйте, Murr, Вы писали:
M>Правильно, мало же в ядро мусора живет ...
M>Если у человека в ядреном коде появляются классы и прочая мутотень, то он просто не понимает что нужно пихать в ядро, а что нет.
И чем тебе так классы не угодили? По мне так пусть лучше там чуть лишнего кодя для поддержки c++ будет, чем проблемы связаные с болезнями С. Переполнение буфера и все такое...
Re: а имеет ли смысл вообще писать драйвера на C++ ?
Здравствуйте, Шахтер, Вы писали:
U2>>а имеет ли смысл вообще писать драйвера на C++ ?
Ш>Не только драйвера, но и всю систему было бы хорошо переписать на C++. Будет меньше по объёму, быстрее и надёжнее.
Абсолютно согласен. Только это должен быть C++, а не C with Classes, что многие под ним понимают (такие, как авторы MFC, к примеру).
... << RSDN@Home 1.1.3 beta 1 >>
Re[5]: а имеет ли смысл вообще писать драйвера на C++ ?
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Murr, Вы писали:
M>>Правильно, мало же в ядро мусора живет ...
M>>Если у человека в ядреном коде появляются классы и прочая мутотень, то он просто не понимает что нужно пихать в ядро, а что нет.
А>И чем тебе так классы не угодили? По мне так пусть лучше там чуть лишнего кодя для поддержки c++ будет, чем проблемы связаные с болезнями С. Переполнение буфера и все такое...
Ну переполнения буферов все те же и в C++, за исключением разве что каких-то особо экзотических.
Re[2]: а имеет ли смысл вообще писать драйвера на C++ ?
Здравствуйте, Шахтер, Вы писали:
Ш>Здравствуйте, U2, Вы писали:
U2>>а имеет ли смысл вообще писать драйвера на C++ ?
Ш>Не только драйвера, но и всю систему было бы хорошо переписать на C++. Будет меньше по объёму, быстрее и надёжнее.
Ага... особенно меньше по объему...
Вот такие глюпые в MS, AT&T, Торвальдс и все более-менее известные производители коммерческих ОС.
Не хватило им видать умения и знаний применить наследование, полиморфизм или еще какие "метаконцепции"... :-D. Ну может Вы поделитесь как Вы их там применять собрались, причем на конкретных (а не абстрактных) примерах? То бишь чтобы было компактнее, нагляднее и одновременно быстрее. Ну или пусть не будет компактнее, нагляднее и одновременно быстрее, но позволит решить какие-нибудь фундаментальные проблемы построения монолитных ядер на C (лабание огромного числа типового проектного кода — userspace задача которая хорошо решается с Smalltalk, Java и C++ — замечу, для нормального моноядра не нужно, а даже наоборот).
Re[6]: а имеет ли смысл вообще писать драйвера на C++ ?
От:
Аноним
Дата:
22.02.04 15:23
Оценка:
Здравствуйте, Murr, Вы писали:
M>Ну переполнения буферов все те же и в C++, за исключением разве что каких-то особо экзотических.
Понятно, что сам по себе С++ не панацея, особенно если не использовать возможности С++. А если подходить с умом, то спользование объектов и, например, стандартных контейнеров сильно упрощает ситуации с утечками памяти, переполениями итп. А как раз для ядра и драйверов такие проблемы наиболее критичны. Но как уже сказали надо писать на C++, а не на С с классами.
Re[3]: а имеет ли смысл вообще писать драйвера на C++ ?
От:
Аноним
Дата:
22.02.04 15:50
Оценка:
Здравствуйте, Murr, Вы писали:
M>Ага... особенно меньше по объему... M>Вот такие глюпые в MS, AT&T, Торвальдс и все более-менее известные производители коммерческих ОС.
Угу, ты бы еще OS/360 вспомнил, тоже не на C++.
M>Не хватило им видать умения и знаний применить наследование, полиморфизм или еще какие "метаконцепции"... :-D.
Ну если ты обратишь внимание на ядро NT, то оно как раз объектное, хоть еще и не C++.
Ну может Вы поделитесь как Вы их там применять собрались, причем на конкретных (а не абстрактных) примерах? То бишь чтобы было компактнее, нагляднее и одновременно быстрее. Ну или пусть не будет компактнее, нагляднее и одновременно быстрее, но позволит решить какие-нибудь фундаментальные проблемы построения монолитных ядер на C (лабание огромного числа типового проектного кода — userspace задача которая хорошо решается с Smalltalk, Java и C++ — замечу, для нормального моноядра не нужно, а даже наоборот).
Эка загнул. "Фундаментальные проблемы построения монолиных ядер на C..." Можно я тебя цитировать буду?
И что это за типовой проектный код? А если в проект драйвера входят?
Re[3]: а имеет ли смысл вообще писать драйвера на C++ ?
Здравствуйте, Murr, Вы писали:
M>Здравствуйте, Шахтер, Вы писали:
Ш>>Здравствуйте, U2, Вы писали:
U2>>>а имеет ли смысл вообще писать драйвера на C++ ?
Ш>>Не только драйвера, но и всю систему было бы хорошо переписать на C++. Будет меньше по объёму, быстрее и надёжнее.
M>Ага... особенно меньше по объему... M>Вот такие глюпые в MS, AT&T, Торвальдс и все более-менее известные производители коммерческих ОС.
Глюпые, факт. Или мазохисты.
M>Не хватило им видать умения и знаний применить наследование, полиморфизм или еще какие "метаконцепции"... :-D.
Ну почему, не хватило? Они их применяют. Симулируя их средствами C. Что ведет к большим уродствам, неэффективности и error-prone коду.
Здравствуйте, Аноним, Вы писали:
А>Угу, ты бы еще OS/360 вспомнил, тоже не на C++.
Ты что ли хочешь сказать что к моменту создания первой NT или Linux или еще чего не было плюсов? Надеюсь ты имел в виду нечто другое ...
А>Ну если ты обратишь внимание на ядро NT, то оно как раз объектное
Нет в нем ничего объектного. Причем никто до сих пор и не привел примеров, которые бы показывали его мифическую объектность... единственный "пример" на бумаге, который я встречал — это структуры указателей на функции вроде обработчиков IRP (фактически — реализации неких интерфейсов), но причем тут объектность? Или может на объектность указывают группы функций с одинаковыми префиксами или слово "OBJECT" в структурах?
А>хоть еще и не C++.
Так мечтательно... Ну я не поленюсь дополнить: еще "не" и никогда "не".
А>И что это за типовой проектный код? А если в проект драйвера входят?
Слово "userspace" мсье пропустил или просто не понял его смысла?
Re[5]: а имеет ли смысл вообще писать драйвера на C++ ?
Здравствуйте, Шахтер, Вы писали:
Ш>Ну почему, не хватило? Они их применяют. Симулируя их средствами C. Что ведет к большим уродствам, неэффективности и error-prone коду.
А можно plz-plz-plz ну хотя бы парочку примеров?
В идеале с Linux, но можно и с NT/2000(благо исходники под рукой).
Re[6]: а имеет ли смысл вообще писать драйвера на C++ ?
Здравствуйте, Murr, Вы писали:
M>Примерно с таким же успехом объектной является программа "Hello,world", а уж программа использующая GTK+ — так вообще верх объективизма.
Программа, использующая -- одно дело.
А сама GTK+ -- чем не ОО-библиотека? Тем что на С написана?
Кто здесь?!
Re[5]: а имеет ли смысл вообще писать драйвера на C++ ?
От:
Аноним
Дата:
24.02.04 09:51
Оценка:
Здравствуйте, Murr, Вы писали:
M>Ты что ли хочешь сказать что к моменту создания первой NT или Linux или еще чего не было плюсов? M> Надеюсь ты имел в виду нечто другое ...
А я, в свою очередь, надеюсь, что ты осознаешь разницу между C++ розливом 1988 и 2004, сюда я включаю и стандарт и существующие компиляторы. Так же надеюсь, что ты не думаешь, что первая NT, равно как и первый Линукс, были написаны накануне вечером. А уж куда, как я полагаю, одним глазом смотрел Товальдс, точно был код не на С++.
А>>Ну если ты обратишь внимание на ядро NT, то оно как раз объектное
M>Нет в нем ничего объектного. Причем никто до сих пор и не привел примеров, которые бы показывали его мифическую объектность... единственный "пример" на бумаге, который я встречал — это структуры указателей на функции вроде обработчиков IRP (фактически — реализации неких интерфейсов), но причем тут объектность?
А что тогда по твоему объетность?
А>>И что это за типовой проектный код? А если в проект драйвера входят? M>Слово "userspace" мсье пропустил или просто не понял его смысла?
А я вообще считаю, что там смысла нет, так псевдоумная фраза. Что это за типовой проектный код и чем он отличается от не типового? Без обид...
Re[7]: а имеет ли смысл вообще писать драйвера на C++ ?
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Murr, Вы писали:
M>>Ну переполнения буферов все те же и в C++, за исключением разве что каких-то особо экзотических.
А>Понятно, что сам по себе С++ не панацея, особенно если не использовать возможности С++. А если подходить с умом, то спользование объектов и, например, стандартных контейнеров сильно упрощает ситуации с утечками памяти, переполениями итп. А как раз для ядра и драйверов такие проблемы наиболее критичны. Но как уже сказали надо писать на C++, а не на С с классами.
Почитайте.
Driver Model
All
Title
Writing drivers using C++
Annoyance
Low
Description
It is possible to write device drivers using C++, but with the following restrictions:
C++ exception handling is not available in kernel-mode
STL is not natively available in the kernel
Global new and delete missing
Support for initialization of static or global objects is missing
Правда, Ложь — мне все одно — я имею свое мнение.
Если функция недокументированна — это не значит, что ее не используют все ваши конкуренты в своих продуктах.
Любой строй переходный и отрицать это значит быть закостенелым идиотом.
Re[8]: а имеет ли смысл вообще писать драйвера на C++ ?
От:
Аноним
Дата:
24.02.04 15:45
Оценка:
Здравствуйте, Злость, Вы писали:
А>>Понятно, что сам по себе С++ не панацея, особенно если не использовать возможности С++. А если подходить с умом, то спользование объектов и, например, стандартных контейнеров сильно упрощает ситуации с утечками памяти, переполениями итп. А как раз для ядра и драйверов такие проблемы наиболее критичны. Но как уже сказали надо писать на C++, а не на С с классами.
З>C++ exception handling is not available in kernel-mode З>STL is not natively available in the kernel З>Global new and delete missing З>Support for initialization of static or global objects is missing
DriverWorks спасет отца русской демократии? Оно конечно не 100% решение, но все же.
Re[5]: а имеет ли смысл вообще писать драйвера на C++ ?
Здравствуйте, Murr, Вы писали:
M>Здравствуйте, Аноним, Вы писали:
А>>Ну если ты обратишь внимание на ядро NT, то оно как раз объектное
M>Нет в нем ничего объектного. Причем никто до сих пор и не привел примеров, которые бы показывали его мифическую объектность... единственный "пример" на бумаге, который я встречал — это структуры указателей на функции вроде обработчиков IRP (фактически — реализации неких интерфейсов), но причем тут объектность? Или может на объектность указывают группы функций с одинаковыми префиксами или слово "OBJECT" в структурах?
Подучите принципы ООП. И заодно устройство ядра NT.