Модераторы: powerfox, ZeeLax

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему не переписать ядро на C++ ? http://www.tux.org/lkml/#s15-3 
V
    Опции темы
smartov
Дата 16.7.2008, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 3
Всего: 259



Цитата(Любитель @  16.7.2008,  18:19 Найти цитируемый пост)
неужели ТАМ использовался С++

А ты думал Вижуал Бэйсик?  smile 
PM MAIL   Вверх
Любитель
Дата 16.7.2008, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: нет
Всего: 92



Я думаю C smile 


--------------------
PM MAIL ICQ Skype   Вверх
smartov
Дата 16.7.2008, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 3
Всего: 259



Гугление дало что там оба.
PM MAIL   Вверх
powerfox
Дата 16.7.2008, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 20
Всего: 97



Цитата(smartov @  16.7.2008,  17:57 Найти цитируемый пост)
Люблю железные аргументы  smile  

ООП нужно применять там, где думаешь о сущности, как об объекте. В ядре, конечно, надётся много всего, что можно представить в виде объекта, но я уверен в том, что эти сущности представлены структурами. В системном программировании чаще сталкиваются не с объектами, а чем-то типа: «Сработало прерывание, выполнить ряд действий». Не вижу большой разницы в том, чтобы использовать для инициализации функцию, которая возвращает структуру и набор функция для работы с данной структурой.  Я знаком с ядром только ооочень и очень поверхностно.
К тому же, кто сказал, что на Си нельзя писать ООП код? Наверняка в ядре не один пример ООП на Си. И я могу привести примеры ООП на Си (и не один). Даже самые крупные (да и самые крутые) проекты KDE и Qt используют во многих местах реализации Сишные приёмы ООП (шаблоны через макросы, например).
Пространства имён — другая удобная штука, появившаяся в Си. Во многих крупных проектов всего несколько пространств имён. Если ввести больше, то будет путаница. А если учесть возможность раздельной компиляции, то можно пространства имён вообще отбросить при грамотном проектировании.
Шаблоны: вполне реализуются макросами, что даёт некоторые преимущества перед С++-ными (я особо не задумывался над тем, какие, но верю разработчикам KDevelop). Да и применение шаблонов с системном программировании станет нонсансом.

Объяснение того, что ядро слишком сложно и его всё равно могут читать единицы Си программистов, вообще абсурд. Есть книги (Таненбаума, Мортона): читайте и разбирайтесь. Если переписать ядро на С++ оно станет ещё запутаннее.
У меня есть небольшой опыт работы с крупным С++ проектом (Mozilla): c многочисленными шаблонами, классами просто мозг сломаешь, разбираясь в незнакомом коде. Нужно не просто проследить вызовы функций, а
1) Найти, что это за класс.
2) Найти дефолтный конструктор.
3) Если заинтересовались методом, то нужно понять откуда этот метод взялся (а при множественном наследовании ещё и чей вызывается).
4) Многие методы перегружены. Причём типами, которые вам не знакомы и могут иметь похожие названия.
Даже c Jump To Declaration это много и много секса. В процедурном коде можно разобраться быстрее. 
А что мы видим в предложении? Кучка кодеров (пускай даже хороших) залезла в сложнючий код на Си и они жалуются, что слишком сложно всё. Конечно, хорошо юзать библиотечные абстракции и десяток своих классов. Но тут речь об очень большом проекте.

Кстати, по идее, время компилирования С++ кода должно быть больше за счёт поиска имени в разных областях видимости и разрешения перегрузок.

Кроме того, на мой взгляд, хороший системщик может писать хороший ООП код, а вот хороший программист ООП — далеко не всегда.

Добавлено через 1 минуту и 23 секунды
Цитата(smartov @  16.7.2008,  20:52 Найти цитируемый пост)
Гугление дало что там оба. 

Уверен, что они просто учли в Windows не только код ядра, но и менеджера рабочего стола (и прочего).


--------------------
user posted image
PM WWW   Вверх
En_t_end
Дата 16.7.2008, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



Цитата(powerfox @  17.7.2008,  00:27 Найти цитируемый пост)
шаблоны через макросы, например

 smile
Цитата(powerfox @  17.7.2008,  00:27 Найти цитируемый пост)
Если переписать ядро на С++ оно станет ещё запутаннее.

Зачем смотреть в код чтобы понять ядро, когда можно посмотреть на модель ?ИМХО понятнее и доступнее.
Цитата(powerfox @  17.7.2008,  00:27 Найти цитируемый пост)
Нужно не просто проследить вызовы функций, а

Я не понимаю, чем проще взять посмотреть на диаграммы, чем отслеживать вызовы функции smile
Цитата(powerfox @  17.7.2008,  00:27 Найти цитируемый пост)
1) Найти, что это за класс.
2) Найти дефолтный конструктор.
3) Если заинтересовались методом, то нужно понять откуда этот метод взялся (а при множественном наследовании ещё и чей вызывается).
4) Многие методы перегружены. Причём типами, которые вам не знакомы и могут иметь похожие названия.

Когда ты работаешь с конкретным методом выше перечисленные вещи отваливаются. Если метод наследуется но не переопределяется то он тебе не попадется. Если метод наследуется и переопределяется, да придется узнать чем занимался метод родителя. Если метод перегружается то опять же есть задание, есть требование к методу, не вижу сложности.
Находить что за класс не потребуется если каждый программист будет держать в уме хотя бы необходимую ему часть модели. Иначе он просто не будет понимать что он делает.
Цитата(powerfox @  17.7.2008,  00:27 Найти цитируемый пост)
Кроме того, на мой взгляд, хороший системщик может писать хороший ООП код, а вот хороший программист ООП — далеко не всегда.

Как тот так и другой не всегда.
Цитата(powerfox @  17.7.2008,  00:27 Найти цитируемый пост)
В процедурном коде можно разобраться быстрее. 

Ага, особенно если процедуры и функции слабо фрагментированны находятся в одной еденице компиляции, при этом не очень связаны по смыслу и прочее, прочее, прочее, отчего никак в C не избавится, если только не использовать конвенции, которые не факт что какой-нибудь чукча будет соблюдать. 
Цитата(powerfox @  17.7.2008,  00:27 Найти цитируемый пост)
Объяснение того, что ядро слишком сложно и его всё равно могут читать единицы Си программистов, вообще абсурд.

Я не извращенец, чтобы сидеть и дебажить ядро, я хочу цивилизованные диаграммы, как все это работает smile

Добавлено через 7 минут и 36 секунд
Цитата(bilbobagginz @  16.7.2008,  20:02 Найти цитируемый пост)

т.е. в C++ sizeof(A) будет возвращать зависимые от компилятора величины (т.е. двойная зависимость), тогда как в C - всё будет зависеть только от архитектуры.

В чем здесь проблема?

Это сообщение отредактировал(а) En_t_end - 16.7.2008, 22:50
PM MAIL ICQ Skype GTalk Jabber   Вверх
En_t_end
Дата 16.7.2008, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



ЗЫ powerfox, баггинз, я ничерта не понимаю как ядро работает. Потому что я ленивый  smile безумный тип. Незнаю тому кто в этой туче кода разбирается необходимо срочно сохранить днк для потомков.

Добавлено @ 23:09
И ещё не надо на меня наезжать. Я специально привел в начале темы аргументы против. Я не хочу писать ядро. Воть.

Добавлено @ 23:16
Есть мнение, что C - "портируемый" ассемблер. Интересно, если бы ядро было бы написанно на #чистом ассемблере# мне бы сейчас с таким же рвением доказывали что #...# - это удобно в больших проектах.

Это сообщение отредактировал(а) En_t_end - 16.7.2008, 23:17
PM MAIL ICQ Skype GTalk Jabber   Вверх
En_t_end
Дата 16.7.2008, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



Цитата(powerfox @  17.7.2008,  00:27 Найти цитируемый пост)
У меня есть небольшой опыт работы с крупным С++ проектом (Mozilla): c многочисленными шаблонами, классами просто мозг сломаешь, разбираясь в незнакомом коде.

Есть куча аргументов против этого мнения, но мне лень их искать и писать сюда. Первую сотню искать в причинах создания языка C++.

Это сообщение отредактировал(а) En_t_end - 16.7.2008, 23:24
PM MAIL ICQ Skype GTalk Jabber   Вверх
gcc
Дата 17.7.2008, 07:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



на C + perl надо переписать!  smile 

Код


#!/usr/bin/perl -w                                      # camel code
use strict;

                                           $_='ev
                                       al("seek\040D
           ATA,0,                  0;");foreach(1..3)
       {<DATA>;}my               @camel1hump;my$camel;
  my$Camel  ;while(             <DATA>){$_=sprintf("%-6
9s",$_);my@dromedary           1=split(//);if(defined($
_=<DATA>)){@camel1hum        p=split(//);}while(@dromeda
 ry1){my$camel1hump=0      ;my$CAMEL=3;if(defined($_=shif
        t(@dromedary1    ))&&/\S/){$camel1hump+=1<<$CAMEL;}
       $CAMEL--;if(d   efined($_=shift(@dromedary1))&&/\S/){
      $camel1hump+=1  <<$CAMEL;}$CAMEL--;if(defined($_=shift(
     @camel1hump))&&/\S/){$camel1hump+=1<<$CAMEL;}$CAMEL--;if(
     defined($_=shift(@camel1hump))&&/\S/){$camel1hump+=1<<$CAME
     L;;}$camel.=(split(//,"\040..m`{/J\047\134}L^7FX"))[$camel1h
      ump];}$camel.="\n";}@camel1hump=split(/\n/,$camel);foreach(@
      camel1hump){chomp;$Camel=$_;y/LJF7\173\175`\047/\061\062\063\
      064\065\066\067\070/;y/12345678/JL7F\175\173\047`/;$_=reverse;
       print"$_\040$Camel\n";}foreach(@camel1hump){chomp;$Camel=$_;y
        /LJF7\173\175`\047/12345678/;y/12345678/JL7F\175\173\0 47`/;
         $_=reverse;print"\040$_$Camel\n";}';;s/\s*//g;;eval;   eval
           ("seek\040DATA,0,0;");undef$/;$_=<DATA>;s/\s*//g;(   );;s
             ;^.*_;;;map{eval"print\"$_\"";}/.{4}/g; __DATA__   \124
               \1   50\145\040\165\163\145\040\157\1 46\040\1  41\0
                    40\143\141  \155\145\1 54\040\1   51\155\  141
                    \147\145\0  40\151\156 \040\141    \163\16 3\
                     157\143\   151\141\16  4\151\1     57\156
                     \040\167  \151\164\1   50\040\      120\1
                     45\162\   154\040\15    1\163\      040\14
                     1\040\1   64\162\1      41\144       \145\
                     155\14    1\162\       153\04        0\157
                      \146\     040\11     7\047\         122\1
                      45\15      1\154\1  54\171          \040
                      \046\         012\101\16            3\16
                      3\15           7\143\15             1\14
                      1\16            4\145\163           \054
                     \040            \111\156\14         3\056
                    \040\         125\163\145\14         4\040\
                    167\1        51\164\1  50\0         40\160\
                  145\162                              \155\151
                \163\163                                \151\1
              57\156\056

PM WWW ICQ Skype GTalk Jabber   Вверх
Lazin
Дата 17.7.2008, 07:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 1
Всего: 154



Цитата(En_t_end @  15.7.2008,  18:52 Найти цитируемый пост)
     So there's over 4 million lines of kernel source. Let's assume 10% is
      comments, so there's about 3.6 million lines left. Each of those lines
      has to be checked for C++ keywords. Assume that you can do about 5
      seconds per line (very optimistic), work 24 hours per day, and 7 days
      a week:
                        5 s   1 hour     1 day   1 week
      3600000 lines * ------ * -------- * ---------- * -------- = 29.8 weeks
                       line     3600 s     24 hours     7 days

Это явно какая-то глупость, во первых, я где-то читал статью, в которой говорилось, что там 60 000 000 строк кода...
Во вторых, переписать это одно, а протестировать весь код это другое...

К тому-же, если проект написан на Си, это не значит что он не объектно ориентированный. 
PM MAIL Skype GTalk   Вверх
En_t_end
Дата 17.7.2008, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



Lazin
Цитата(Lazin @  17.7.2008,  11:43 Найти цитируемый пост)
Это явно какая-то глупость, во первых, я где-то читал статью, в которой говорилось, что там 60 000 000 строк кода...

Разные версии ?
Цитата(Lazin @  17.7.2008,  11:43 Найти цитируемый пост)
К тому-же, если проект написан на Си, это не значит что он не объектно ориентированный.  

Насколько мне известно, это возможно, если все члены проекта будут следовать общей конвенции. Правил в которой будет больше чем кода который кто-либо захочет внести в проект единовременно.
Почему ещё ни один человек не согласился, что C - это неудобно в такого масштаба проектах?
Я не буду настаивать больше ни на чем, я согласен что это тупая затея, технически не реализуемая. Но с тем что C удобен для крупных проектов я не соглашусь никогда.
ЗЫ Я имел, хоть и скудный, опыт разработки большого проекта на C(кассовая программа). Он загнулся ещё на этапе проектирования, так как правил в конвенции оказалось настолько много, и требовали написания стольких "велосипедов", что решено было оставить эту глупую затею.
Хотя на C++ подобно TinyPIM Пабло Халперна эта задача решилась бы меньшей кровью.
PM MAIL ICQ Skype GTalk Jabber   Вверх
Любитель
Дата 17.7.2008, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Программист-романтик
****


Профиль
Группа: Комодератор
Сообщений: 3645
Регистрация: 21.5.2005
Где: Воронеж

Репутация: нет
Всего: 92



Цитата(powerfox @  16.7.2008,  20:27 Найти цитируемый пост)
И я могу привести примеры ООП на Си

К слову, хроший пример - xine smile

Цитата(En_t_end @  17.7.2008,  11:19 Найти цитируемый пост)
Я не буду настаивать больше ни на чем, я согласен что это тупая затея, технически не реализуемая.

Реализуемая. Просто это ни кому не надо. Это отдельный проект.

Цитата(En_t_end @  17.7.2008,  11:19 Найти цитируемый пост)
Но с тем что C удобен для крупных проектов я не соглашусь никогда.

Речь про системное программирование?


--------------------
PM MAIL ICQ Skype   Вверх
En_t_end
Дата 17.7.2008, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



Цитата(Любитель @  17.7.2008,  16:37 Найти цитируемый пост)
Реализуемая. Просто это ни кому не надо. Это отдельный проект.

А как же технические проблемы изложенные в начале темы?
ЗЫ Я спрашивал как раз о их правдивости.

PM MAIL ICQ Skype GTalk Jabber   Вверх
smartov
Дата 17.7.2008, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 3
Всего: 259



[offtopic]
Цитата(Lazin @  17.7.2008,  07:43 Найти цитируемый пост)
я где-то читал статью, в которой говорилось, что там 60 000 000 строк кода...

/me поперхнулся
Друже, тебя дизориентировали.
http://en.wikipedia.org/wiki/Source_lines_of_code
[/offtopic]
PM MAIL   Вверх
En_t_end
Дата 17.7.2008, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2074
Регистрация: 4.12.2004

Репутация: нет
Всего: 20



http://www.linux.org.ru/view-message.jsp?msgid=2529251
Решил так, пусть все умники пишут на C и ассемблере, а мы как-нибудь без велосипедов. Воть. удачи
PM MAIL ICQ Skype GTalk Jabber   Вверх
nickless
Дата 18.7.2008, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 7
Всего: 181



ИМХО пока абсолютное большинство разработчиков ядра (и особенно ведущие разработчики) не будут поддерживать переход на C++, эта идея не только будет бесполезной, но даже в общем вредной. Вредной не зависимо от плюсов и минусов C++ в системном программировании, просто потому, что по сути это - форк кучкой разработчиков из религиозных побуждений, пустая трата времени и энергии, раздробление итд итп. 


ЗЫ
Как-то не заметил что тема висит в общих вопросах...

Модератор: Тема перенесена


--------------------
user posted image

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
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Клуб юнуксоидов"
powerfox
ZeeLax
nickless

Что такое клуб юнуксоидов?

Это место более свободного общения специалистов и любителей *NIX систем.


Новичкам: Этот раздел предназначен в основном именно для общения а не решения проблем.


Правила всего раздела Linux/UNIX сюда не распространяются, но здесь имеются свои правила:


  • Оскорбления запрещены.
  • Holy wars разрешены, но в небольших размерах. Если вы создаёте что-то уровня Windows vs. Linux, то постите это в Религиозных войнах, пожалуйста.
  • Если вы хотите выставить здесь какое-либо своё творение - милости просим.
  • За интересные новости, интересные статьи, высказывания и юмор (в тему) + в репу.

Короче, по репе получите по полной программе ;-) Happy hacking!



Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Клуб юнуксоидов | Следующая тема »


 




[ Время генерации скрипта: 0.1028 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.