Michael7 wrote: > Так говорит Линус Торвальдс, основатель ядра операционной системы Gnu/Linux. > здесь > <http://thread.gmane.org/gmane.comp.version-control.git/57643/focus=57918> > Мне кажется, учитывая его заслуги, что это достаточно интересное мнение. > С++ — ужасен, его выбор для проекта — плохое решение
Он в своё время обжегся на ранних версиях С++. И похоже с тех пор
нормально его не использовал.
Его возражения, по большей части "full of bullshit". Их всего два, в
общем-то:
- infinite amounts of pain when they don't work (and anybody who tells me
that STL and especially Boost are stable and portable is just so full
of BS that it's not even funny)
Да, как будто с С-шными библиотеками проще, когда они глючат.
Естественно, использовать Boost.Lambda лучше не надо.
- inefficient abstracted programming models where two years down the road
you notice that some abstraction wasn't very efficient, but now all
your code depends on all the nice object models around it, and you
cannot fix it without rewriting your app.
Угу, с чистым С, конечно, такого никогда не случается. Сколько там раз в
ядре USB-стек переписывали?
Posted via RSDN NNTP Server 2.1 beta
Sapienti sat!
Re: С++ - ужасен, его выбор для проекта - плохое решение
Здравствуйте, Michael7, Вы писали:
M>Так говорит Линус Торвальдс, основатель ядра операционной системы Gnu/Linux.
M>здесь
M>Мне кажется, учитывая его заслуги, что это достаточно интересное мнение.
Для ядра — вполне.
The God is real, unless declared integer.
Re[2]: С++ - ужасен, его выбор для проекта - плохое решение
Здравствуйте, netch80, Вы писали:
M>>Так говорит Линус Торвальдс, основатель ядра операционной системы Gnu/Linux. M>>здесь M>>Мне кажется, учитывая его заслуги, что это достаточно интересное мнение. N>Для ядра — вполне.
Тем не менее, существуют вполне себе неплохие ядра на С++. Например: http://l4ka.org/projects/pistachio/
Про крупные проекты типа KDE тоже не забываем — они вполне себе нормально живут.
Так что я категорически несогласен с Линусом. На чистом С все точно так же плохо можно сделать.
Sapienti sat!
Re[2]: С++ - ужасен, его выбор для проекта - плохое решение
Здравствуйте, netch80, Вы писали:
N>Для ядра — вполне.
По ссылке речь шла вовсе не о ядре, а о git — многопользовательской, распределённой системе контроля версий, которая сейчас используется вместо BitKeeper для разработки ядра линукс. Она была написана пару лет назад Линусом и другими.
Re: С++ - ужасен, его выбор для проекта - плохое решение
Здравствуйте, Michael7, Вы писали:
M>Так говорит Линус Торвальдс, основатель ядра операционной системы Gnu/Linux.
M>здесь
M>Мне кажется, учитывая его заслуги, что это достаточно интересное мнение.
Насколько я понял из чтения "по-диагонали" — он вообще против объектно-ориентированного подхода
Здравствуйте, Cyberax, Вы писали:
C>Про крупные проекты типа KDE тоже не забываем — они вполне себе нормально живут.
Согласен.
C>Так что я категорически несогласен с Линусом. На чистом С все точно так же плохо можно сделать.
Для крупных проектов Си всё же неудобен, хотя при чётко поставленной организации работы, на нём
можно делать очень большие проекты в сотни тысяч и миллионы строк кода. Например, собственно linux, Gnome, X11R6 и другие.
Re[3]: С++ - ужасен, его выбор для проекта - плохое решение
Здравствуйте, Cyberax, Вы писали:
C>Тем не менее, существуют вполне себе неплохие ядра на С++. Например: http://l4ka.org/projects/pistachio/
У C++ есть очень крупный недостаток по сравнению с Си в том, что код C++ библиотек в виде торчащих наружу ООП-интерфейсов не совместим между разными компиляторами. Для совместимости приходится обёртывать в функции.
Re: С++ - ужасен, его выбор для проекта - плохое решение
Здравствуйте, Michael7, Вы писали:
M>Мне кажется, учитывая его заслуги, что это достаточно интересное мнение.
Это мнение типичного "сишника". Слышал не раз и не от одного человека.
Не поручусь, что оно неправильное. Категоричное — да, но в нем есть рациональное зерно.
Хотя бы то, что C++, в отличие от C, имеет "скрытые" пути исполнения — конструкторы/деструкторы, исключения и виртуальные вызовы. С точки зрения "правоверного сишника" — ересь несусветная.
С точки зрения "плюсовика" — палка о двух концах, т.к. с одной стороны удобно, с другой — при кривом дизайне, очень больно вылазит боком, причем в неожиданных местах. А если еще это дело зарефакторить не получается, то вообще гасите свет — начинается писание "антибагов", что есть постоянный источник дичайших регрешенов forever and ever.
ЗЫ. Не далее как сегодня, один из местных C++ "программистов" громко возмущался по поводу, что std::map не имеет доступа к элементам по... ИНДЕКСУ! Его, видите ли, BidirectionalIterator устраивает... Я даже не нашел что сказать, но очень хотелось дать пинка...
__________
16.There is no cause so right that one cannot find a fool following it.
Re[3]: С++ - ужасен, его выбор для проекта - плохое решение
Здравствуйте, Cyberax, Вы писали:
C>Про крупные проекты типа KDE тоже не забываем — они вполне себе нормально живут.
Строго говоря KDE написан на нечто что можно назвать "Objective C++" ибо оно требует
специального препроцессора. Dances around slot/signal как мне помнится.
Да и потом... Чего-то Gnome прозводит более целостное впечталение что-ли. По многим параметрам.
C>Так что я категорически несогласен с Линусом. На чистом С все точно так же плохо можно сделать.
Плохо можно сделать на всем что угодно. C более формален или предсказуем что-ли.
В С++ к сожалению каждый compiler это свой C++ flavor. Куча нюансов которые на больших codebase могут просто убить
идею переносимости на корню.
Re: С++ - ужасен, его выбор для проекта - плохое решение
Здравствуйте, Michael7, Вы писали:
M>Так говорит Линус Торвальдс, основатель ядра операционной системы Gnu/Linux.
M>здесь
M>Мне кажется, учитывая его заслуги, что это достаточно интересное мнение.
In other words, the only way to do good, efficient, and system-level and
portable C++ ends up to limit yourself to all the things that are
basically available in C.
Страуструп:
I never saw a project for which C was better than C++ for any reason but the lack of a good C++ compiler.
По-моему, они говорят об одном и том же, только у Торвальса представления о C++ компиляторах 10-ти летней давности.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[2]: С++ - ужасен, его выбор для проекта - плохое решение
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, Michael7, Вы писали:
M>>Так говорит Линус Торвальдс, основатель ядра операционной системы Gnu/Linux.
M>>здесь
M>>Мне кажется, учитывая его заслуги, что это достаточно интересное мнение.
E>There are only two kinds of languages: the ones people complain about and the ones nobody uses
E>Б.Страуструп, создатель языка C++. Учитывая его заслуги, это достаточно интересное мнение.
Не, неинтересное. Страуструп — лицо заинтересованное
Здравствуйте, Michael7, Вы писали:
M>Так говорит Линус Торвальдс, основатель ядра операционной системы Gnu/Linux. M>здесь M>Мне кажется, учитывая его заслуги, что это достаточно интересное мнение.
- infinite amounts of pain when they don't work (and anybody who tells me
that STL and especially Boost are stable and portable is just so full
of BS that it's not even funny)
C'шные конструкции (и особенно МАКРОСЫ!) можно руками расписать руками вплоть до элементарных операций, в случае сильного ступора сопоставить с генерируемым ассемблером. Удачи фанатам плюсов читать ассемблер операций с std::map в листингах, без дебагера
Наверное, об ответственности стоит говорить. Линус хочет всегда иметь возможность найти и исправить ошибку. А рядовые писатели на С++ не виноваты, что std::map работает не так как они ожидали, и это не их проблемы — они следуют своему пониманию данной им спецификации.
Я. правда, плохо понимаю, с какой радости у git "efficiency was a primary objective". Хранилище кода каких много... Вот если убрать из его текста обощения о любых проектах и говорить только о ядре и проектам подобным ядру (цена разработки не имеет значения, нужен эффективный код, крайне важна легкость вхождения и прозрачность любого уровня абстракции до уровня ассемблера), тогда я с ним согласен.
... << RSDN@Home 1.2.0 alpha rev. 720>>
Re[2]: С++ - ужасен, его выбор для проекта - плохое решение
Здравствуйте, -aka-, Вы писали:
A>Я. правда, плохо понимаю, с какой радости у git "efficiency was a primary objective". Хранилище кода каких много... Вот если убрать из его текста обощения о любых проектах и говорить только о ядре и проектам подобным ядру (цена разработки не имеет значения, нужен эффективный код, крайне важна легкость вхождения и прозрачность любого уровня абстракции до уровня ассемблера), тогда я с ним согласен.
git — таки версионное хранилище вообще, не только кода. Даже наоборот — код не основное применение. Мне попадались варианты как на нём строили универсальный бэкап — вот например:
Здравствуйте, c-smile, Вы писали:
CS>Строго говоря KDE написан на нечто что можно назвать "Objective C++" ибо оно требует CS>специального препроцессора. Dances around slot/signal как мне помнится. CS>Да и потом... Чего-то Gnome прозводит более целостное впечталение что-ли. По многим параметрам.
За внутренности Glib, за код mc, за основы gtk я бы увольнял без выходного пособия.
Более кошмарный дизайн трудно себе придумать. Его можно назвать "C++ для нищих притом через зад".
CS>Плохо можно сделать на всем что угодно. C более формален или предсказуем что-ли. CS>В С++ к сожалению каждый compiler это свой C++ flavor. Куча нюансов которые на больших codebase могут просто убить CS>идею переносимости на корню.
Qt почему-то под винду идёт без переделок диалекта.:)
The God is real, unless declared integer.
Re: С++ - ужасен, его выбор для проекта - плохое решение
Здравствуйте, Michael7, Вы писали:
M>Так говорит Линус Торвальдс, основатель ядра операционной системы Gnu/Linux.
M>здесь
M>Мне кажется, учитывая его заслуги, что это достаточно интересное мнение.
Здравствуйте, Cyberax, Вы писали:
C>Угу, с чистым С, конечно, такого никогда не случается. Сколько там раз в C>ядре USB-стек переписывали?
И как был он гавном, так и остался.
Ну кстати говоря, ядро Линукса -- замечательный пример, что C must die. Если его на С++ переделать, то код сожмется в несколько раз.