![]() |
Модераторы: powerfox, ZeeLax |
![]() ![]() ![]() |
|
En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: нет Всего: 20 |
http://www.tux.org/lkml/#s15-3 :
Кто что думает по этому поводу? По мне аргументы типа : "Also there are many more C programmers than C++ programmers around" кажутся смешными, ибо совсем не много из тех людей что знают C могут продуктивно изменять ядро, однако Object-Oriented реализация позволит раздробить ядро на осмысленные части, которые будет проще модифицировать. ИМХО. Добавлено через 8 минут и 52 секунды Как решение многих проблем, которыми аргументируют против авторы ответа в FAQе, можно предложить заново написать ядро на C++(возможно альтернативное), тем более новый стандарт уже близко. Добавлено через 11 минут и 41 секунду К тому же под C++ есть STL, boost и прочие очень полезные вещи, которые существенно помогут сократить количество строк кода, а приминение стандартных алгоритмов позволит избавиться от многих тривиальных циклов. |
|||
|
||||
smartov |
|
|||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: 3 Всего: 259 |
En_t_end, какой смысл?
Добавлено через 12 секунд К тому же Торвальдс против Добавлено через 26 секунд Он не любит плюсы в системной программировании |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 4 Всего: 160 |
En_t_end, Ответ Торвальдса.
Добавлено @ 21:01 http://oberoncore.ru/download/articles/oberontech.pdf
Это сообщение отредактировал(а) kemiisto - 15.7.2008, 21:02 -------------------- |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 8 Всего: 162 |
Ты представляешь себе, сколько кода тебе придётся переписать? Лично я - нет. Кроме того, для ядра важен каждый такт процессора, так что STL и boost идут лесом. |
|||
|
||||
En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: нет Всего: 20 |
ИМХО это рано или поздно придется сделать. Помоему любая система такого масштаба как ядро ОС нуждается в полном пересмотре через некоторое время. Ибо ряд проблем уже будет нельзя решить патчами. Хз что он любит. Я говорю о том что можно альтернативное ядро совершенно новой структуры сделать, а не заместить текущее. Мне интересно по тем пунктам что выше, чисто технически решение такой задачи действительно невыполнимо ? Не думаю что C - язык удобный для совместной разработки. |
|||
|
||||
En_t_end |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: нет Всего: 20 |
После прочтения сложилось впечатление, что Торвальдс просто боится составить ОО-модель.
Если я правильно понял, Линус говорит о том что однажды составив модель и написав приложение ты можешь в итоге понять что модель не эффективна и придется переписывать уже все приложение полностью. Это верно, но вероятность такой ошибки близится к нулю если к отнестись к моделированию как к основной задаче. Помоему грамотная модель стоит дороже даже самых гениальных отдельно реализованных методов. Добавлено @ 10:21 Аргумент:
фтопку Это сообщение отредактировал(а) En_t_end - 16.7.2008, 10:57 |
||||
|
|||||
smartov |
|
|||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: 3 Всего: 259 |
En_t_end,
Почему? Добавлено через 1 минуту и 18 секунд OOP не цель, а средство. Смысл в том, чтобы не облегчать работу программистов ядра ради повышения понимания ими того с чем они работают и что именно делают Добавлено через 2 минуты и 28 секунд Может путанно написал. Короче говоря OOP расслабляет и позволяет меньше думать о том, что происходит на самом деле, а мыслить абстракциями |
|||
|
||||
En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: нет Всего: 20 |
Хотя пожалуй главный аргумент против - это туча софта который под такое ядро станет не доступным
![]() |
|||
|
||||
Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 1 Всего: 134 |
А пример гольдберговского keyword'а можно? -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: нет Всего: 20 |
||||
|
||||
bilbobagginz |
|
||||||||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: 14 Всего: 317 |
насколько хорошо уважаемый знаком с настоящей реализацией и подсистемами ядра ? чем не нравится текущее раздробление ? кстати есть еще одна концептуальная проблема. когда я пишу на C++:
в зависимости от платформы я получу совершенно разные картины памяти, чем в C:
т.е. в C++ sizeof(A) будет возвращать зависимые от компилятора величины (т.е. двойная зависимость), тогда как в C - всё будет зависеть только от архитектуры. Добавлено через 13 минут и 16 секунд
я не могу рассуждать, не зная его лично ![]() но судя по тому, что линуз всё-таки пишет иногда на C++, что страха от ОО у него нет... может быть у него есть другие мотивы, и я не зарекаюсь что они чисто технические. но есть же проекты ОС написанные на C++, или хотя бы с API на C++ -
-------------------- Я ещё не демон. Я только учусь. |
||||||||
|
|||||||||
powerfox |
|
||||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 20 Всего: 97 |
Линус прав.
Оно и так разбито на осмысленные части. |
||||
|
|||||
smartov |
|
|||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: 3 Всего: 259 |
Старательно избегаешь оффтопика? ![]() Добавлено через 59 секунд powerfox, Люблю железные аргументы ![]() |
|||
|
||||
bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: 14 Всего: 317 |
нет. Висту не видел. Видел WindowsCE - написано на Си. -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: нет Всего: 92 |
smartov, неужели ТАМ использовался С++?! ![]() |
|||
|
||||
smartov |
|
|||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: 3 Всего: 259 |
||||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: нет Всего: 92 |
Я думаю C
![]() |
|||
|
||||
smartov |
|
|||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: 3 Всего: 259 |
Гугление дало что там оба.
|
|||
|
||||
powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 20 Всего: 97 |
ООП нужно применять там, где думаешь о сущности, как об объекте. В ядре, конечно, надётся много всего, что можно представить в виде объекта, но я уверен в том, что эти сущности представлены структурами. В системном программировании чаще сталкиваются не с объектами, а чем-то типа: «Сработало прерывание, выполнить ряд действий». Не вижу большой разницы в том, чтобы использовать для инициализации функцию, которая возвращает структуру и набор функция для работы с данной структурой. Я знаком с ядром только ооочень и очень поверхностно. К тому же, кто сказал, что на Си нельзя писать ООП код? Наверняка в ядре не один пример ООП на Си. И я могу привести примеры ООП на Си (и не один). Даже самые крупные (да и самые крутые) проекты KDE и Qt используют во многих местах реализации Сишные приёмы ООП (шаблоны через макросы, например). Пространства имён — другая удобная штука, появившаяся в Си. Во многих крупных проектов всего несколько пространств имён. Если ввести больше, то будет путаница. А если учесть возможность раздельной компиляции, то можно пространства имён вообще отбросить при грамотном проектировании. Шаблоны: вполне реализуются макросами, что даёт некоторые преимущества перед С++-ными (я особо не задумывался над тем, какие, но верю разработчикам KDevelop). Да и применение шаблонов с системном программировании станет нонсансом. Объяснение того, что ядро слишком сложно и его всё равно могут читать единицы Си программистов, вообще абсурд. Есть книги (Таненбаума, Мортона): читайте и разбирайтесь. Если переписать ядро на С++ оно станет ещё запутаннее. У меня есть небольшой опыт работы с крупным С++ проектом (Mozilla): c многочисленными шаблонами, классами просто мозг сломаешь, разбираясь в незнакомом коде. Нужно не просто проследить вызовы функций, а 1) Найти, что это за класс. 2) Найти дефолтный конструктор. 3) Если заинтересовались методом, то нужно понять откуда этот метод взялся (а при множественном наследовании ещё и чей вызывается). 4) Многие методы перегружены. Причём типами, которые вам не знакомы и могут иметь похожие названия. Даже c Jump To Declaration это много и много секса. В процедурном коде можно разобраться быстрее. А что мы видим в предложении? Кучка кодеров (пускай даже хороших) залезла в сложнючий код на Си и они жалуются, что слишком сложно всё. Конечно, хорошо юзать библиотечные абстракции и десяток своих классов. Но тут речь об очень большом проекте. Кстати, по идее, время компилирования С++ кода должно быть больше за счёт поиска имени в разных областях видимости и разрешения перегрузок. Кроме того, на мой взгляд, хороший системщик может писать хороший ООП код, а вот хороший программист ООП — далеко не всегда. Добавлено через 1 минуту и 23 секунды Уверен, что они просто учли в Windows не только код ядра, но и менеджера рабочего стола (и прочего). |
|||
|
||||
En_t_end |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: нет Всего: 20 |
![]() Зачем смотреть в код чтобы понять ядро, когда можно посмотреть на модель ?ИМХО понятнее и доступнее. Я не понимаю, чем проще взять посмотреть на диаграммы, чем отслеживать вызовы функции ![]() Когда ты работаешь с конкретным методом выше перечисленные вещи отваливаются. Если метод наследуется но не переопределяется то он тебе не попадется. Если метод наследуется и переопределяется, да придется узнать чем занимался метод родителя. Если метод перегружается то опять же есть задание, есть требование к методу, не вижу сложности. Находить что за класс не потребуется если каждый программист будет держать в уме хотя бы необходимую ему часть модели. Иначе он просто не будет понимать что он делает.
Как тот так и другой не всегда. Ага, особенно если процедуры и функции слабо фрагментированны находятся в одной еденице компиляции, при этом не очень связаны по смыслу и прочее, прочее, прочее, отчего никак в C не избавится, если только не использовать конвенции, которые не факт что какой-нибудь чукча будет соблюдать.
Я не извращенец, чтобы сидеть и дебажить ядро, я хочу цивилизованные диаграммы, как все это работает ![]() Добавлено через 7 минут и 36 секунд
В чем здесь проблема? Это сообщение отредактировал(а) En_t_end - 16.7.2008, 22:50 |
||||||
|
|||||||
En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: нет Всего: 20 |
ЗЫ powerfox, баггинз, я ничерта не понимаю как ядро работает. Потому что я ленивый
![]() Добавлено @ 23:09 И ещё не надо на меня наезжать. Я специально привел в начале темы аргументы против. Я не хочу писать ядро. Воть. Добавлено @ 23:16 Есть мнение, что C - "портируемый" ассемблер. Интересно, если бы ядро было бы написанно на #чистом ассемблере# мне бы сейчас с таким же рвением доказывали что #...# - это удобно в больших проектах. Это сообщение отредактировал(а) En_t_end - 16.7.2008, 23:17 |
|||
|
||||
En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: нет Всего: 20 |
Есть куча аргументов против этого мнения, но мне лень их искать и писать сюда. Первую сотню искать в причинах создания языка C++. Это сообщение отредактировал(а) En_t_end - 16.7.2008, 23:24 |
|||
|
||||
gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 1 Всего: 17 |
на C + perl надо переписать!
![]()
|
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 1 Всего: 154 |
Это явно какая-то глупость, во первых, я где-то читал статью, в которой говорилось, что там 60 000 000 строк кода... Во вторых, переписать это одно, а протестировать весь код это другое... К тому-же, если проект написан на Си, это не значит что он не объектно ориентированный. |
|||
|
||||
En_t_end |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: нет Всего: 20 |
Lazin,
Разные версии ?
Насколько мне известно, это возможно, если все члены проекта будут следовать общей конвенции. Правил в которой будет больше чем кода который кто-либо захочет внести в проект единовременно. Почему ещё ни один человек не согласился, что C - это неудобно в такого масштаба проектах? Я не буду настаивать больше ни на чем, я согласен что это тупая затея, технически не реализуемая. Но с тем что C удобен для крупных проектов я не соглашусь никогда. ЗЫ Я имел, хоть и скудный, опыт разработки большого проекта на C(кассовая программа). Он загнулся ещё на этапе проектирования, так как правил в конвенции оказалось настолько много, и требовали написания стольких "велосипедов", что решено было оставить эту глупую затею. Хотя на C++ подобно TinyPIM Пабло Халперна эта задача решилась бы меньшей кровью. |
||||
|
|||||
Любитель |
|
||||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: нет Всего: 92 |
К слову, хроший пример - xine ![]()
Реализуемая. Просто это ни кому не надо. Это отдельный проект.
Речь про системное программирование? |
||||
|
|||||
En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: нет Всего: 20 |
||||
|
||||
smartov |
|
|||
![]() свой собственный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4225 Регистрация: 2.2.2006 Где: NJ Репутация: 3 Всего: 259 |
[offtopic]
/me поперхнулся Друже, тебя дизориентировали. http://en.wikipedia.org/wiki/Source_lines_of_code [/offtopic] |
|||
|
||||
En_t_end |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2074 Регистрация: 4.12.2004 Репутация: нет Всего: 20 |
http://www.linux.org.ru/view-message.jsp?msgid=2529251
Решил так, пусть все умники пишут на C и ассемблере, а мы как-нибудь без велосипедов. Воть. удачи |
|||
|
||||
nickless |
|
|||
![]() Гентозавр ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2976 Регистрация: 29.8.2005 Где: Germany Репутация: 7 Всего: 181 |
ИМХО пока абсолютное большинство разработчиков ядра (и особенно ведущие разработчики) не будут поддерживать переход на C++, эта идея не только будет бесполезной, но даже в общем вредной. Вредной не зависимо от плюсов и минусов C++ в системном программировании, просто потому, что по сути это - форк кучкой разработчиков из религиозных побуждений, пустая трата времени и энергии, раздробление итд итп.
ЗЫ Как-то не заметил что тема висит в общих вопросах... Модератор: Тема перенесена -------------------- ![]() Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies - Linus Torvalds |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 4 Всего: 207 |
тут говорили про ОО-модель
а разве сейчас ее нет? структуры - объекты, функции - методы, полиморфизм - void* возьмите любую подсистему ядра *.h файлы определяют интерфейсы, *.c файлы - работу с интерфейсами все логично и вполне ОО ОО - это в первую очередь логика построения, а не ЯП -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 20 Всего: 97 |
Ещё тут говорили, что она есть ![]() |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 4 Всего: 207 |
powerfox,
угу что-то я твой пост пропустил ![]() -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Linux/UNIX: Клуб юнуксоидов" | |
|
Что такое клуб юнуксоидов? Это место более свободного общения специалистов и любителей *NIX систем. Новичкам: Этот раздел предназначен в основном именно для общения а не решения проблем. Правила всего раздела Linux/UNIX сюда не распространяются, но здесь имеются свои правила:
Короче, по репе получите по полной программе ;-) Happy hacking! Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Клуб юнуксоидов | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |