Комментарии 48
Печально. Куда Линус смотрит?
-28
НЛО прилетело и опубликовало эту надпись здесь
*(тудаже)
> и более чистом коде на «плюсах»
Чище чем на чем интересно?
> и более чистом коде на «плюсах»
Чище чем на чем интересно?
0
там же примеры кода есть:)
0
Честно говоря, не впечатляют. Одинаково нечитаемо и там, и там. А если вспомнить про всякую придурь C++, так лучше уж с макропроцессором.
+1
Кхм кхм… учите мат.часть, препроцессор у C текстовый, и его все по делу ругают из-за огромных потенциальных проблем, которые не просто позволяют выстрелить себе в ногу, а скорее автоматом взорвать атомную бомбу. А в С++ шаблонах и контейнерах строгая типизация, что значительно сокращает количество невидимых ошибок.
-2
Пожалуйста, не учите меня пользоваться препроцессором. Лучше препроцессор, правила которого просты и легкопонимаемы, чем дебри C++. Строуструп неспроста сказал, что C позволяет выстрелить в ногу, но с C++ если уж выстрелишь, то оторвёт всю ногу сразу.
+2
И да, если не умеете писать на C и пользоваться препроцессором — так и скажите. А не говорите, что якобы C++ проще и и защищённее, потому как это далеко не так.
-1
Умею, использую, ибо частенько приходится писать для контроллеров, где кроме С 98 ничего нету.
С++ строго типизирован, а препроцессор позволяет сделать всё, что угодно. И если код с ошибками на C++ не скомпилируется, или вылезет куча предупреждений, то на C ошибка проскочит.
С++ строго типизирован, а препроцессор позволяет сделать всё, что угодно. И если код с ошибками на C++ не скомпилируется, или вылезет куча предупреждений, то на C ошибка проскочит.
0
Если у Вас ошибка проскакивает — значит умеете не достаточно хорошо. У меня в моём коде на C даже разницы в размерностях массивов и индексирующих их enum-ов отлавливаются автоматически.
И да, нету C98. Есть C99.
И да, нету C98. Есть C99.
+2
Да у меня тоже нормально всё, препроцессор не сложен сам по себе, а диагностикой обложено всё, на чём бы оно не было написано. А вот в больших проектах бывает, что случаются всякие чудеса.
Собственно даже когда пишу на С++ считаю разумным использование препроцессора, для генерации кода в некоторых случаях, ибо стрингификация — удобный инструмент, однако при этом больших конструкций всё равно стараюсь избегать.
Агу, C99.
Собственно даже когда пишу на С++ считаю разумным использование препроцессора, для генерации кода в некоторых случаях, ибо стрингификация — удобный инструмент, однако при этом больших конструкций всё равно стараюсь избегать.
Агу, C99.
-1
Я на препроцессоре делал достаточно сложные конструкции. Иногда, к сожалению, мощности не хватает, приходится делать не очень красивые решения. Есть, правда, такая замечательноя штука, как m4, но с ней проблема с читаемостью препроцессорного кода усугубляется: код приложения становится суперлегкочитаемым, зато в макросы переходит эссенция нечитаемости, и они превращаются в ужасное нагромождение скобок и двух видов кавычек. А так да, хороший инструмент :)
0
Охренеть — спор что лучше C или C++ в 2013 году…
P.S. Вы серьёзно думаете что для такого большого проекта как gcc лучше C или вам простоза державу за C обидно? Не слышали отзывов про код gcc от не последних людей пытающихся разобраться в нём? Поверьте там нету восхищения препроцессором и танцами вокруг куцых возможностей C. Да и когда приходится что-то поменять глобально на это уходило о-о-очень много времени потому что там был замечательный препроцессорный C код. Цитату одного из разработчиков gcc что «пытаться заставить бегемота танцевать не так уж и весело» (за дословность не поручусь, но примерно так) тоже не слышали?
P.P.S. Я не против C, но доводы за и против C++ уже минимум два десятилетия вроде как обсуждают — неужели вы их не слышали? Или у вас телевизор только Столлмана показывает? И тот же clang написанный на ненавистном вам C++ и развивающийся с неслабой скоростью тоже мимо вас как-то пролетел незаметно?
P.S. Вы серьёзно думаете что для такого большого проекта как gcc лучше C или вам просто
P.P.S. Я не против C, но доводы за и против C++ уже минимум два десятилетия вроде как обсуждают — неужели вы их не слышали? Или у вас телевизор только Столлмана показывает? И тот же clang написанный на ненавистном вам C++ и развивающийся с неслабой скоростью тоже мимо вас как-то пролетел незаметно?
0
Я считаю, что раз разработчикам так удобнее — есть на то причины. Я не против сабжа, если Вы не поняли :)
Тем не менее, я не считаю нужным применять C++ вообще. Для тех проектов, где действительно нужен низкоуровневый язык, C лучше. Для тех, где нужен уровень выше, нужны высокоуровневые языки. C++ — не высокоуровневый язык, увы, хоть и пытается быть таким.
З.Ы. Телевизора у меня нет.
Тем не менее, я не считаю нужным применять C++ вообще. Для тех проектов, где действительно нужен низкоуровневый язык, C лучше. Для тех, где нужен уровень выше, нужны высокоуровневые языки. C++ — не высокоуровневый язык, увы, хоть и пытается быть таким.
З.Ы. Телевизора у меня нет.
+1
Понятно.
Я могу согласиться что C++ не по настоящему высокоуровневый(хотя тут скользкая терминология, формально-то высокоуровневый). Но учитывая задачу(gcc) и все факторы, думаю что он единственная реальная альтернатива C в сегодняшних реалиях. Ну и с учетом принятого но пока не особенно реализованного и тем более грядущего стандартов не так уж там всё и плохо.
Ну не на Java же писать? Чтобы оно заработало с той же скоростью всё равно пришлось бы опускаться до байтиков и вышло бы ещё уродливее чем на C++. Да и неправильно это — яйцо рождающее курицу. :)
Я могу согласиться что C++ не по настоящему высокоуровневый(хотя тут скользкая терминология, формально-то высокоуровневый). Но учитывая задачу(gcc) и все факторы, думаю что он единственная реальная альтернатива C в сегодняшних реалиях. Ну и с учетом принятого но пока не особенно реализованного и тем более грядущего стандартов не так уж там всё и плохо.
Ну не на Java же писать? Чтобы оно заработало с той же скоростью всё равно пришлось бы опускаться до байтиков и вышло бы ещё уродливее чем на C++. Да и неправильно это — яйцо рождающее курицу. :)
+1
Ожидаем переход на js:)
+12
БОльшая поплулярность => больше потенциальных разработчиков. Так что причина в общем-то весомая, как ни странно она на первый взгляд звучит.
0
и более чистом коде на «плюсах»
т.е. на деле, нужен был повод провести масштабный рефакторинг, а что может быть масштабнее перехода на другой язык? =)
+10
Из их вики:
Rationale
Migrating GCC to C++ as implementation language:
***
— C++ never requires uglier code.
C «never» они явно погорячились, но…
— C++ is not a panacea but it is an improvement.
Они это осознаЮт
Rationale
Migrating GCC to C++ as implementation language:
***
— C++ never requires uglier code.
C «never» они явно погорячились, но…
— C++ is not a panacea but it is an improvement.
Они это осознаЮт
-2
«Never requires» просто потому, что сейчас даже «няшная сишка» — это на самом деле пересечение Си и Си++. Где C++ работает плохо, никаких проблем писать без плюсов.
Ну да, золотой таблетки, как сказал некий Брукс, всё-таки не существует. Сложности — существуют, и если хоть какие-то сложности удаётся пресечь, это уже круто.
Ну да, золотой таблетки, как сказал некий Брукс, всё-таки не существует. Сложности — существуют, и если хоть какие-то сложности удаётся пресечь, это уже круто.
+1
Тут ключевое слово не «never», а «requires». В самом деле, на плюсах можно писать так, что сам автор потом голову сломает; а можно писать чисто.
Ближайший аналог (только, пожалуйста, посчитайте до 10 прежде чем минусовать каммент:) — PHP5. Можно писать очень аккуратно и чисто. А можно… ну ты в курсе.
Ближайший аналог (только, пожалуйста, посчитайте до 10 прежде чем минусовать каммент:) — PHP5. Можно писать очень аккуратно и чисто. А можно… ну ты в курсе.
+3
НЛО прилетело и опубликовало эту надпись здесь
Осталось D завершить миграцию на D и мир станет немного лучше.
0
На самом деле, для D нужна масса вещей. Во-первых, нужно чтобы базовая библиотека была допилена до условно-полноценного состояния, а это масштаб работы сравнимый с созданием .NET Framework или Java-библиотек. Схизма с Phobos/Tango этому явно не помогла. Ну и конечно вопрос в инструментарии, в частности хочется хорошие возможности профилирования и отладки. Сейчас С++ соблазняет также тем что есть вагон фреймворков для параллелизации и оптимизированных вычислений, один Intel с их библиотеками чего стоит.
0
Обсуждалось не так давно, не вызвало энтузиазма у сообщества.
+1
Отличная новость! Хотя то, что команда GCC переходит на С++, действительно ни для кого уже давно не тайна :)
Кто-то уже собрал MinGW 4.8?
Кто-то уже собрал MinGW 4.8?
-1
>появилась поддержка архитектуры AArch64(ARM64), присутствующей в процессорах с набором команд ARMv8, хотя на рынке пока нет устройств с таким набором команд.
Но как?!!!
Но как?!!!
-1
НЛО прилетело и опубликовало эту надпись здесь
На рынке нет, но инженерные образцы чипов и отладочных плат на их основе, полученные в ходе НИОКР, могут быть раздаваемы энтузиастам и разработчикам, в том числе свободным, для тестирования средств разработки, в т.ч. программных, и для подготовки к выходу как самихх чипов, так и устройств на их основе, на рынок. Как-то так.
+3
Слава богу — давно пора, осталось создателей либджипега и прочих опенсорсных библиотек перевести на с++, ато эти хендлы с сокрытитем реального типа вместо инкапсуляции, все эти опенхандл/клозхенд вместо конструкции/деструкции, а уж система вложенных в структуру указателей на фуннкции — ребят вам виртуальные функции нужны, а огромные алгоритмы на макросах — инлайн же и отлаживать теперь можно
-1
Ну Вас с такими предложениями. Нет других языков, кроме C++, разве? Вы хоть представляете, каково это — писать интерфейс к библиотеке, написанной на C++? Изучите, пожалуйста, и не делайте в приличном обществе больше таких заявлений. И меньше не делайте. Вообще не делайте.
+1
Минусующие пусть поделятся опытом. Даже интересно, неужели кому-то доставляет удовольствие писать врапперы к библиотекам на C++?
+1
Нужен врапер — напиши, а вот при внутреннем либы креше уперется отладчиком в макрос-имитацию инлайновой функции ой как хреново, поймать эрзац эксепшен неизвестно откуда еще хреновее — пора признать возможности С++ давно востребованы и нужны
-2
В C есть инлайновые функции, это раз. А два — сразу видно, что комментарий написан абстрактным строителем велосипедов на квадратных колёсах на C++, который никогда не писал никаких интерфейсов к чему-либо.
+1
Обана — сразу ярлык повесил? Как раз на С++ интерфейсы пишутся очень часто и любой кто много пишет на С++ если не писал то наследывал точно.
ПС Если в Си есть инлайновые функции то чтож выш брат целые вложенные циклы на макросах лабает? Ах да шаблонов нет, а что такого есть в Си чтоб на нем так самотверженно лабать и просто кровью и потом получать то что в С++ есть и так?
ПС Если в Си есть инлайновые функции то чтож выш брат целые вложенные циклы на макросах лабает? Ах да шаблонов нет, а что такого есть в Си чтоб на нем так самотверженно лабать и просто кровью и потом получать то что в С++ есть и так?
-1
Это не ярлык. Если бы Вы написали хоть один интерфейс к библиотеке на C++, Вы бы не писали такую ахинею. И да, Вы правы, на C++ интерфейсы к библиотекам на C пишутся постоянно. А не наоборот. Именно по той самой причине. А теперь перечитайте, что я написал выше, я говорил о написании интерфейсов, которые позволяют использовать библиотеки, написанные на C++, в других языках.
P.S. Вложенные циклы? На макросах? О чём Вы? Ну и использование слова «лабать» чести Вам явно не делает.
P.S. Вложенные циклы? На макросах? О чём Вы? Ну и использование слова «лабать» чести Вам явно не делает.
0
>>>О чём Вы?
www.opensource.apple.com/source/xnu/xnu-1228.5.20/libsa/sort.c
О том мы
Я попрежнему непонимаю ради чего? Ради чего я должен в С++ дергать сишный недообьект «хендл», радичего все эти какбы конструкторы и деструкторы опенхендл/клоз хендл? ради чего все эти трюки с Агрегацией и превидением вместо наследования? Ради чего все эти вложенные структуры с указателями на функции вместо виртуальных функций; Ради чего мне обезличенный Указатель вместо обьекта с инкапсуляцией — а уж про отладку макросов и ловлю фальшивых эксепшенов я уже говорил/-)
www.opensource.apple.com/source/xnu/xnu-1228.5.20/libsa/sort.c
О том мы
Я попрежнему непонимаю ради чего? Ради чего я должен в С++ дергать сишный недообьект «хендл», радичего все эти какбы конструкторы и деструкторы опенхендл/клоз хендл? ради чего все эти трюки с Агрегацией и превидением вместо наследования? Ради чего все эти вложенные структуры с указателями на функции вместо виртуальных функций; Ради чего мне обезличенный Указатель вместо обьекта с инкапсуляцией — а уж про отладку макросов и ловлю фальшивых эксепшенов я уже говорил/-)
-1
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
GCC 4.8 завершил миграцию на C++