а имеет ли смысл вообще писать драйвера на C++ ?
От: U2 Россия  
Дата: 20.02.04 09:14
Оценка: :)
а имеет ли смысл вообще писать драйвера на C++ ?
Re: а имеет ли смысл вообще писать драйвера на C++ ?
От: _cb_  
Дата: 20.02.04 18:34
Оценка:
Здравствуйте, U2, Вы писали:

U2>а имеет ли смысл вообще писать драйвера на C++ ?


этот вопрос больше относится к "философии программирования" чем к "низкоуровневому прог-ю" — может Вам перенести этот вопрос в соответствующий форум?
в любом случае это решение каждый принимает для себя сам.
cb.
Re[2]: а имеет ли смысл вообще писать драйвера на C++ ?
От: Areex  
Дата: 21.02.04 05:25
Оценка:
Здравствуйте, _cb_, Вы писали:

__>Здравствуйте, U2, Вы писали:


U2>>а имеет ли смысл вообще писать драйвера на C++ ?


__>этот вопрос больше относится к "философии программирования" чем к "низкоуровневому прог-ю" — может Вам перенести этот вопрос в соответствующий форум?

__>в любом случае это решение каждый принимает для себя сам.

Ну почему же философия? Вполне нормальный вопрос, только спрашивать надо по-другому. Есть ли смысл писать драйвера на C, если можно на С++.
Re[3]: а имеет ли смысл вообще писать драйвера на C++ ?
От: Murr Россия  
Дата: 21.02.04 16:03
Оценка:
Здравствуйте, Areex, Вы писали:

A>Здравствуйте, _cb_, Вы писали:


__>>Здравствуйте, U2, Вы писали:


U2>>>а имеет ли смысл вообще писать драйвера на C++ ?


__>>этот вопрос больше относится к "философии программирования" чем к "низкоуровневому прог-ю" — может Вам перенести этот вопрос в соответствующий форум?

__>>в любом случае это решение каждый принимает для себя сам.

A>Ну почему же философия? Вполне нормальный вопрос, только спрашивать надо по-другому. Есть ли смысл писать драйвера на C, если можно на С++.


Правильно, мало же в ядро мусора живет ...

Если у человека в ядреном коде появляются классы и прочая мутотень, то он просто не понимает что нужно пихать в ядро, а что нет.
Re[4]: а имеет ли смысл вообще писать драйвера на C++ ?
От: Аноним  
Дата: 21.02.04 17:32
Оценка:
Здравствуйте, Murr, Вы писали:

M>Правильно, мало же в ядро мусора живет ...


M>Если у человека в ядреном коде появляются классы и прочая мутотень, то он просто не понимает что нужно пихать в ядро, а что нет.


И чем тебе так классы не угодили? По мне так пусть лучше там чуть лишнего кодя для поддержки c++ будет, чем проблемы связаные с болезнями С. Переполнение буфера и все такое...
Re: а имеет ли смысл вообще писать драйвера на C++ ?
От: Шахтер Интернет  
Дата: 21.02.04 20:42
Оценка: +1
Здравствуйте, U2, Вы писали:

U2>а имеет ли смысл вообще писать драйвера на C++ ?


Не только драйвера, но и всю систему было бы хорошо переписать на C++. Будет меньше по объёму, быстрее и надёжнее.
... << RSDN@Home 1.1.0 stable >>
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[2]: а имеет ли смысл вообще писать драйвера на C++ ?
От: m.a.g. Мальта http://dottedmag.net/
Дата: 22.02.04 07:32
Оценка:
Здравствуйте, Шахтер, Вы писали:

U2>>а имеет ли смысл вообще писать драйвера на C++ ?


Ш>Не только драйвера, но и всю систему было бы хорошо переписать на C++. Будет меньше по объёму, быстрее и надёжнее.


Абсолютно согласен. Только это должен быть C++, а не C with Classes, что многие под ним понимают (такие, как авторы MFC, к примеру).
... << RSDN@Home 1.1.3 beta 1 >>
Re[5]: а имеет ли смысл вообще писать драйвера на C++ ?
От: Murr Россия  
Дата: 22.02.04 09:36
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Murr, Вы писали:


M>>Правильно, мало же в ядро мусора живет ...


M>>Если у человека в ядреном коде появляются классы и прочая мутотень, то он просто не понимает что нужно пихать в ядро, а что нет.


А>И чем тебе так классы не угодили? По мне так пусть лучше там чуть лишнего кодя для поддержки c++ будет, чем проблемы связаные с болезнями С. Переполнение буфера и все такое...


Ну переполнения буферов все те же и в C++, за исключением разве что каких-то особо экзотических.
Re[2]: а имеет ли смысл вообще писать драйвера на C++ ?
От: Murr Россия  
Дата: 22.02.04 09:53
Оценка:
Здравствуйте, Шахтер, Вы писали:

Ш>Здравствуйте, 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++ ?
От: Шахтер Интернет  
Дата: 22.02.04 17:20
Оценка:
Здравствуйте, Murr, Вы писали:

M>Здравствуйте, Шахтер, Вы писали:


Ш>>Здравствуйте, U2, Вы писали:


U2>>>а имеет ли смысл вообще писать драйвера на C++ ?


Ш>>Не только драйвера, но и всю систему было бы хорошо переписать на C++. Будет меньше по объёму, быстрее и надёжнее.


M>Ага... особенно меньше по объему...

M>Вот такие глюпые в MS, AT&T, Торвальдс и все более-менее известные производители коммерческих ОС.

Глюпые, факт. Или мазохисты.

M>Не хватило им видать умения и знаний применить наследование, полиморфизм или еще какие "метаконцепции"... :-D.


Ну почему, не хватило? Они их применяют. Симулируя их средствами C. Что ведет к большим уродствам, неэффективности и error-prone коду.
... << RSDN@Home 1.1.0 stable >>
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[4]: а имеет ли смысл вообще писать драйвера на C++ ?
От: Murr Россия  
Дата: 24.02.04 07:23
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Угу, ты бы еще OS/360 вспомнил, тоже не на C++.


Ты что ли хочешь сказать что к моменту создания первой NT или Linux или еще чего не было плюсов?
Надеюсь ты имел в виду нечто другое ...

А>Ну если ты обратишь внимание на ядро NT, то оно как раз объектное


Нет в нем ничего объектного. Причем никто до сих пор и не привел примеров, которые бы показывали его мифическую объектность... единственный "пример" на бумаге, который я встречал — это структуры указателей на функции вроде обработчиков IRP (фактически — реализации неких интерфейсов), но причем тут объектность? Или может на объектность указывают группы функций с одинаковыми префиксами или слово "OBJECT" в структурах?

А>хоть еще и не C++.

Так мечтательно... Ну я не поленюсь дополнить: еще "не" и никогда "не".

А>И что это за типовой проектный код? А если в проект драйвера входят?

Слово "userspace" мсье пропустил или просто не понял его смысла?
Re[5]: а имеет ли смысл вообще писать драйвера на C++ ?
От: Murr Россия  
Дата: 24.02.04 07:27
Оценка:
Примерно с таким же успехом объектной является программа "Hello,world", а уж программа использующая GTK+ — так вообще верх объективизма.
Re[4]: а имеет ли смысл вообще писать драйвера на C++ ?
От: Murr Россия  
Дата: 24.02.04 07:30
Оценка:
Здравствуйте, Шахтер, Вы писали:

Ш>Ну почему, не хватило? Они их применяют. Симулируя их средствами C. Что ведет к большим уродствам, неэффективности и error-prone коду.


А можно plz-plz-plz ну хотя бы парочку примеров?
В идеале с Linux, но можно и с NT/2000(благо исходники под рукой).
Re[6]: а имеет ли смысл вообще писать драйвера на C++ ?
От: _wqwa США  
Дата: 24.02.04 07:42
Оценка:
Здравствуйте, 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++ ?
От: Злость Россия  
Дата: 24.02.04 13:54
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, 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

Workaround
You’ll have to write it all yourself. Here is an article on how you might go about supporting static and global initializers: http://msdn.microsoft.com/msdnmag/issues/01/01/hood/

Versions
Win2K, WinXP, WS2003

Правда, Ложь — мне все одно — я имею свое мнение.
Если функция недокументированна — это не значит, что ее не используют все ваши конкуренты в своих продуктах.
Любой строй переходный и отрицать это значит быть закостенелым идиотом.
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++ ?
От: Шахтер Интернет  
Дата: 25.02.04 00:17
Оценка: +1
Здравствуйте, Murr, Вы писали:

M>Здравствуйте, Аноним, Вы писали:


А>>Ну если ты обратишь внимание на ядро NT, то оно как раз объектное


M>Нет в нем ничего объектного. Причем никто до сих пор и не привел примеров, которые бы показывали его мифическую объектность... единственный "пример" на бумаге, который я встречал — это структуры указателей на функции вроде обработчиков IRP (фактически — реализации неких интерфейсов), но причем тут объектность? Или может на объектность указывают группы функций с одинаковыми префиксами или слово "OBJECT" в структурах?


Подучите принципы ООП. И заодно устройство ядра NT.
... << RSDN@Home 1.1.0 stable >>
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.