Pull to refresh

Comments 48

UFO just landed and posted this here
Вы бы хоть спойлер в посте открыли — посмотрите насколько код упростился и стал безопаснее ;) Всё хорошо в общем, я бы даже сказал просто отлично!
UFO just landed and posted this here
*(тудаже)
> и более чистом коде на «плюсах»
Чище чем на чем интересно?
там же примеры кода есть:)
Честно говоря, не впечатляют. Одинаково нечитаемо и там, и там. А если вспомнить про всякую придурь 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.
UFO just landed and posted this here
Варианты функций для разных процессоров можно было сделать и раньше (с gcc 4.4) через __attribute__(target), но диспатчить их нужно было самостоятельно.
Осталось D завершить миграцию на D и мир станет немного лучше.
На самом деле, для D нужна масса вещей. Во-первых, нужно чтобы базовая библиотека была допилена до условно-полноценного состояния, а это масштаб работы сравнимый с созданием .NET Framework или Java-библиотек. Схизма с Phobos/Tango этому явно не помогла. Ну и конечно вопрос в инструментарии, в частности хочется хорошие возможности профилирования и отладки. Сейчас С++ соблазняет также тем что есть вагон фреймворков для параллелизации и оптимизированных вычислений, один Intel с их библиотеками чего стоит.
Обсуждалось не так давно, не вызвало энтузиазма у сообщества.
Отличная новость! Хотя то, что команда GCC переходит на С++, действительно ни для кого уже давно не тайна :)

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

Но как?!!!
UFO just landed and posted this here
Бросать ценные ресурсы на порт, который нет возможности нормально протестировать? Ну не знаю…
Очевидно, эти ценные ресурсы бросила на порт компания 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
О том мы
Я попрежнему непонимаю ради чего? Ради чего я должен в С++ дергать сишный недообьект «хендл», радичего все эти какбы конструкторы и деструкторы опенхендл/клоз хендл? ради чего все эти трюки с Агрегацией и превидением вместо наследования? Ради чего все эти вложенные структуры с указателями на функции вместо виртуальных функций; Ради чего мне обезличенный Указатель вместо обьекта с инкапсуляцией — а уж про отладку макросов и ловлю фальшивых эксепшенов я уже говорил/-)
Sign up to leave a comment.

Articles