Как стать автором
Обновить

Комментарии 48

Печально. Куда Линус смотрит?
А чего печального то?
НЛО прилетело и опубликовало эту надпись здесь
Вы бы хоть спойлер в посте открыли — посмотрите насколько код упростился и стал безопаснее ;) Всё хорошо в общем, я бы даже сказал просто отлично!
НЛО прилетело и опубликовало эту надпись здесь
*(тудаже)
> и более чистом коде на «плюсах»
Чище чем на чем интересно?
там же примеры кода есть:)
Честно говоря, не впечатляют. Одинаково нечитаемо и там, и там. А если вспомнить про всякую придурь C++, так лучше уж с макропроцессором.
Кхм кхм… учите мат.часть, препроцессор у C текстовый, и его все по делу ругают из-за огромных потенциальных проблем, которые не просто позволяют выстрелить себе в ногу, а скорее автоматом взорвать атомную бомбу. А в С++ шаблонах и контейнерах строгая типизация, что значительно сокращает количество невидимых ошибок.
Пожалуйста, не учите меня пользоваться препроцессором. Лучше препроцессор, правила которого просты и легкопонимаемы, чем дебри C++. Строуструп неспроста сказал, что C позволяет выстрелить в ногу, но с C++ если уж выстрелишь, то оторвёт всю ногу сразу.
Да делайте, что хотите.
И да, если не умеете писать на C и пользоваться препроцессором — так и скажите. А не говорите, что якобы C++ проще и и защищённее, потому как это далеко не так.
Умею, использую, ибо частенько приходится писать для контроллеров, где кроме С 98 ничего нету.
С++ строго типизирован, а препроцессор позволяет сделать всё, что угодно. И если код с ошибками на C++ не скомпилируется, или вылезет куча предупреждений, то на C ошибка проскочит.
Если у Вас ошибка проскакивает — значит умеете не достаточно хорошо. У меня в моём коде на C даже разницы в размерностях массивов и индексирующих их enum-ов отлавливаются автоматически.

И да, нету C98. Есть C99.
Да у меня тоже нормально всё, препроцессор не сложен сам по себе, а диагностикой обложено всё, на чём бы оно не было написано. А вот в больших проектах бывает, что случаются всякие чудеса.
Собственно даже когда пишу на С++ считаю разумным использование препроцессора, для генерации кода в некоторых случаях, ибо стрингификация — удобный инструмент, однако при этом больших конструкций всё равно стараюсь избегать.

Агу, C99.
Я на препроцессоре делал достаточно сложные конструкции. Иногда, к сожалению, мощности не хватает, приходится делать не очень красивые решения. Есть, правда, такая замечательноя штука, как m4, но с ней проблема с читаемостью препроцессорного кода усугубляется: код приложения становится суперлегкочитаемым, зато в макросы переходит эссенция нечитаемости, и они превращаются в ужасное нагромождение скобок и двух видов кавычек. А так да, хороший инструмент :)
Охренеть — спор что лучше C или C++ в 2013 году…

P.S. Вы серьёзно думаете что для такого большого проекта как gcc лучше C или вам просто за державу за C обидно? Не слышали отзывов про код gcc от не последних людей пытающихся разобраться в нём? Поверьте там нету восхищения препроцессором и танцами вокруг куцых возможностей C. Да и когда приходится что-то поменять глобально на это уходило о-о-очень много времени потому что там был замечательный препроцессорный C код. Цитату одного из разработчиков gcc что «пытаться заставить бегемота танцевать не так уж и весело» (за дословность не поручусь, но примерно так) тоже не слышали?

P.P.S. Я не против C, но доводы за и против C++ уже минимум два десятилетия вроде как обсуждают — неужели вы их не слышали? Или у вас телевизор только Столлмана показывает? И тот же clang написанный на ненавистном вам C++ и развивающийся с неслабой скоростью тоже мимо вас как-то пролетел незаметно?
Я считаю, что раз разработчикам так удобнее — есть на то причины. Я не против сабжа, если Вы не поняли :)

Тем не менее, я не считаю нужным применять C++ вообще. Для тех проектов, где действительно нужен низкоуровневый язык, C лучше. Для тех, где нужен уровень выше, нужны высокоуровневые языки. C++ — не высокоуровневый язык, увы, хоть и пытается быть таким.

З.Ы. Телевизора у меня нет.
Понятно.

Я могу согласиться что C++ не по настоящему высокоуровневый(хотя тут скользкая терминология, формально-то высокоуровневый). Но учитывая задачу(gcc) и все факторы, думаю что он единственная реальная альтернатива C в сегодняшних реалиях. Ну и с учетом принятого но пока не особенно реализованного и тем более грядущего стандартов не так уж там всё и плохо.

Ну не на Java же писать? Чтобы оно заработало с той же скоростью всё равно пришлось бы опускаться до байтиков и вышло бы ещё уродливее чем на C++. Да и неправильно это — яйцо рождающее курицу. :)
Ожидаем переход на js:)
БОльшая поплулярность => больше потенциальных разработчиков. Так что причина в общем-то весомая, как ни странно она на первый взгляд звучит.
и более чистом коде на «плюсах»

т.е. на деле, нужен был повод провести масштабный рефакторинг, а что может быть масштабнее перехода на другой язык? =)
Из их вики:
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.
Они это осознаЮт
«Never requires» просто потому, что сейчас даже «няшная сишка» — это на самом деле пересечение Си и Си++. Где C++ работает плохо, никаких проблем писать без плюсов.
Ну да, золотой таблетки, как сказал некий Брукс, всё-таки не существует. Сложности — существуют, и если хоть какие-то сложности удаётся пресечь, это уже круто.
Тут ключевое слово не «never», а «requires». В самом деле, на плюсах можно писать так, что сам автор потом голову сломает; а можно писать чисто.

Ближайший аналог (только, пожалуйста, посчитайте до 10 прежде чем минусовать каммент:) — PHP5. Можно писать очень аккуратно и чисто. А можно… ну ты в курсе.
Вы очень смелый человек. Нужно быть очень смелым чтобы приравнивать C++ к PHP5 в теме о выходе нового компилятора C++, переписанного на C++.
Согласен. Ну я понимал, на какой риск я иду, оставляя каммент с упоминанием PHP.
НЛО прилетело и опубликовало эту надпись здесь
Варианты функций для разных процессоров можно было сделать и раньше (с gcc 4.4) через __attribute__(target), но диспатчить их нужно было самостоятельно.
Осталось D завершить миграцию на D и мир станет немного лучше.
На самом деле, для D нужна масса вещей. Во-первых, нужно чтобы базовая библиотека была допилена до условно-полноценного состояния, а это масштаб работы сравнимый с созданием .NET Framework или Java-библиотек. Схизма с Phobos/Tango этому явно не помогла. Ну и конечно вопрос в инструментарии, в частности хочется хорошие возможности профилирования и отладки. Сейчас С++ соблазняет также тем что есть вагон фреймворков для параллелизации и оптимизированных вычислений, один Intel с их библиотеками чего стоит.
Обсуждалось не так давно, не вызвало энтузиазма у сообщества.
Отличная новость! Хотя то, что команда GCC переходит на С++, действительно ни для кого уже давно не тайна :)

Кто-то уже собрал MinGW 4.8?
>появилась поддержка архитектуры AArch64(ARM64), присутствующей в процессорах с набором команд ARMv8, хотя на рынке пока нет устройств с таким набором команд.

Но как?!!!
НЛО прилетело и опубликовало эту надпись здесь
Бросать ценные ресурсы на порт, который нет возможности нормально протестировать? Ну не знаю…
Очевидно, эти ценные ресурсы бросила на порт компания ARM. Догадайтесь с трех раз, зачем.

И конечно же у них есть возможность нормально протестировать.
На рынке нет, но инженерные образцы чипов и отладочных плат на их основе, полученные в ходе НИОКР, могут быть раздаваемы энтузиастам и разработчикам, в том числе свободным, для тестирования средств разработки, в т.ч. программных, и для подготовки к выходу как самихх чипов, так и устройств на их основе, на рынок. Как-то так.
Слава богу — давно пора, осталось создателей либджипега и прочих опенсорсных библиотек перевести на с++, ато эти хендлы с сокрытитем реального типа вместо инкапсуляции, все эти опенхандл/клозхенд вместо конструкции/деструкции, а уж система вложенных в структуру указателей на фуннкции — ребят вам виртуальные функции нужны, а огромные алгоритмы на макросах — инлайн же и отлаживать теперь можно
Ну Вас с такими предложениями. Нет других языков, кроме C++, разве? Вы хоть представляете, каково это — писать интерфейс к библиотеке, написанной на C++? Изучите, пожалуйста, и не делайте в приличном обществе больше таких заявлений. И меньше не делайте. Вообще не делайте.
Минусующие пусть поделятся опытом. Даже интересно, неужели кому-то доставляет удовольствие писать врапперы к библиотекам на C++?
Нужен врапер — напиши, а вот при внутреннем либы креше уперется отладчиком в макрос-имитацию инлайновой функции ой как хреново, поймать эрзац эксепшен неизвестно откуда еще хреновее — пора признать возможности С++ давно востребованы и нужны
В C есть инлайновые функции, это раз. А два — сразу видно, что комментарий написан абстрактным строителем велосипедов на квадратных колёсах на C++, который никогда не писал никаких интерфейсов к чему-либо.
Обана — сразу ярлык повесил? Как раз на С++ интерфейсы пишутся очень часто и любой кто много пишет на С++ если не писал то наследывал точно.
ПС Если в Си есть инлайновые функции то чтож выш брат целые вложенные циклы на макросах лабает? Ах да шаблонов нет, а что такого есть в Си чтоб на нем так самотверженно лабать и просто кровью и потом получать то что в С++ есть и так?
Это не ярлык. Если бы Вы написали хоть один интерфейс к библиотеке на C++, Вы бы не писали такую ахинею. И да, Вы правы, на C++ интерфейсы к библиотекам на C пишутся постоянно. А не наоборот. Именно по той самой причине. А теперь перечитайте, что я написал выше, я говорил о написании интерфейсов, которые позволяют использовать библиотеки, написанные на C++, в других языках.

P.S. Вложенные циклы? На макросах? О чём Вы? Ну и использование слова «лабать» чести Вам явно не делает.
>>>О чём Вы?
Смотрите ниже
>>>О чём Вы?
www.opensource.apple.com/source/xnu/xnu-1228.5.20/libsa/sort.c
О том мы
Я попрежнему непонимаю ради чего? Ради чего я должен в С++ дергать сишный недообьект «хендл», радичего все эти какбы конструкторы и деструкторы опенхендл/клоз хендл? ради чего все эти трюки с Агрегацией и превидением вместо наследования? Ради чего все эти вложенные структуры с указателями на функции вместо виртуальных функций; Ради чего мне обезличенный Указатель вместо обьекта с инкапсуляцией — а уж про отладку макросов и ловлю фальшивых эксепшенов я уже говорил/-)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории