LINUX.ORG.RU

Широкая дискуссия о будущем GCC

 ,


3

5

В прошедший вторник в список рассылки GCC попало одно письмо, вызвавшее множество ответов и даже интересное обсуждение о будущем GNU Compiler Collection, о его конечных целях и об их достижимости. В первом письме просто был задан вопрос о примерных сроках полной реализации стандарта ISO C++11. Но по мере разрастания нити Diego Novillo из Google, хорошо зарекомендовавший себя в роли разработчика GCC, даже высказал опасения, что GCC уже прошёл точку невозврата и ему грозит естественная смерть.

Нить появилась в списках рассылки во вторник и обновляется по сей день. Также промелькнула ссылка на страницу с отчётом о поддержке C++11 в GCC, но обсуждение ушло в другие области, как то: разработка GCC, привлечение новых разработчиков, выживание ведущего свободного компилятора. А теперь проведём обзор самых интересных комментариев нити.

Дискуссия разгорелась после того, как на резонный вопрос «Когда спецификация C++11 будет полностью воплощена в код?» был получен ответ «Как всегда, не раньше чем добровольцы-ментейнеры воплотят её в код».

Фраза «добровольцы-ментейнеры» в ответе и стала поводом широкого обсуждения о нехватке добровольцев, которые желают (это-то легко) и при этом могут работать над GCC (что намного труднее и удаётся меньшинству). Множество людей, занятых в GCC, участвуют в проекте с незапамятных времён. А сколько кода было написано людьми, пришедшими в 2012 и никогда не работавшими прежде? Стоит рассмотреть такую меру, как улучшение понятности компилятора, посредством, например, больших вложений в проектную документацию. Многие знания о структуре GCC до сих пор остаются лишь в памяти людей, которых в любой день может задавить автобус, перевозящий сотрудников Microsoft.

Затем новым разработчикам, мечтающим о том, чтобы им выпала честь работать над GCC, рекомендовали посетить страницу.

В ответ на предложения по уменьшению входного порога для интересующихся GCC также поступали классические отговорки «Компиляторы — это очень сложные программы» и «едва ли несколько человек хотят и при этом способны написать такую документацию».

Разумеется, были и споры на тему LLVM/Clang. Одним из ответов было «Как вам идея, что Clang влияет на эти сроки, потому что GCC теперь вынужден конкурировать с ним? Clang сейчас немного впереди и GCC должен измениться, если он хочет по-прежнему быть ведущим».

В ответ на это, Diego Novillo, всё ещё работающий в Google, поделился своим мнением:

Я вижу несколько прикладных областей, с которыми Clang/LLVM успешно справляется и в которых GCC, на мой взгляд, пока не стремится участвовать: в частности, «инструментабельность» (toolability), за неимением лучшего слова. Архитектурный дизайн clang следует пути, отличному от g++. Это не просто кодогенерирующий парсер, это прежде всего парсер, который помимо прочего генерирует код (прим. переводчика - см. SemaCodeComplete.cpp в исходниках clang, в т.ч. где вызываются эти функции). Это различие позволяет использовать компилятор в инструментах любого рода, которым нужно знать о семантике C++: в статических анализаторах, при форматировании кода, подсветке синтаксиса и т.д. Вдобавок он реализован как библиотека и может встраиваться в приложения.

Это задачи, которые g++ сейчас не может выполнить. С помощью плагинов он, конечно, может выполнить кое-что из перечисленного, но эти плагины куда сложнее и вынуждены влезать в недра компилятора.

Не факт, что всё это является недостатком g++. Но для эффективной конкуренции в этих областях необходима существенная реорганизация.

LLVM имеет схожие с clang свойства. GCC всё ещё имеет некоторые ограничения в портируемости своих бекендов.

Примечательно и другое письмо про необходимость притока свежих сил из числа молодых студентов и университетских исследователей, которые на данный момент почти повсеместно используют LLVM (прим. переводчика — подтверждаю, и в российских ВУЗах LLVM вытеснил MSIL). В ответ на него уже известный вам Diego Novillo создал в рассылке вторую нить для обсуждения выживания GCC в долгосрочном периоде. Диего думает, что проект уже мог незаметно пройти точку невозврата и компилятор FSF может умереть естественной смертью.

Выживание GCC в будущем является нашей задачей. Порой я думаю, что мы уже пропустили критический момент.

При этом тот ограниченный круг разработчиков, что может выполнить задачу, как полагается, меньше всего желает её выполнять. Конкретно эти разработчики уже на «ты» с кодовой базой, они приучились выполнять задачи, ради которых были наняты и вместе с другими наёмными работниками сформировали некоторый коллектив. К тому же, освоившиеся разработчики чаще всего отвергают изменения, потому что в ближайшей перспективе они дают нестабильность и ошибки (читайте: головную боль ментейнера).

Эволюционное улучшение кода остаётся неблагодарной и трудной работой. Как инженеру, она мне интересна, но я здраво оцениваю свои силы. В рабочее время мы выполняем другие задачи, которые зачастую по природе своей конфликтуют с эволюционированием кода. Некоторые разработчики уже внесли вклад в улучшение кода в плане названной задачи, но суммарный технический долг кода в GCC огромен.

Если этакие тенденции продолжатся, команда опытных разработчиков GCC со временем начнёт вырождаться. Без обновления этой команды GCC ждёт естественная смерть. Этот процесс начался давно и продолжается сейчас. Ну и кроме этого, будет интересно иметь два или более сильных и конкурирующих друг с другом компиляторов. Обмен наработками (прим. переводчика - в оригинале «перекрёстное опыление», намёк на улучшение генов путём спаривания), к которому ведёт любая конкуренция в opensource, в конечном счёте выгодна всем, и пользователям, и разработчикам.

Richard Guenther отвечал на это

«Учтите, что мы не вправе поставить GCC в гараж и рефакторить его два года. Любая починка ведётся прямо на оживлённой трассе! Это существенно ограничивает доступные нам методики рефакторинга, что в итоге может ограничить и выгоду от их применения. Всегда дважды подумайте, прежде чем превращать GCC в ещё большее болото, чем сейчас!

Есть много других сообщений для тех, кто хочет оценить разные точки зрения от разработчиков и пользователей на тему будущего наиболее популярного свободного компилятора. Вы можете ознакомиться с ними в индексной странице этой нити.

От переводчика:

От себя добавлю, что Erik Verbruggen и я продолжаем работу над интеграцией clang в QtCreator, что в конечном счёте будет полезно всем, кто работает с C, C++ и ObjectiveC. Сегодня с утра я добавил ряд исправлений в механизм автодополнения, а в середине февраля либо параллельно с выходом QtCreator 2.7 добавлю сборки последних стабильных версий QtCreator, clang и плагина для нескольких дистрибутивов: скорее всего это будут Ubuntu (ppa), OpenSUSE (buildservice) и ROSA (ABF). Плагин на порядок улучшает диагностику ошибок прямо в ходе редактирования кода и добавляет неплохое автодополнение (в целом лучше, но в кое-чём хуже встроенного).

Для пользователей арча уже есть qtcreator-clang-git в АУРЕ, но я советую не использовать его, а подождать, пока будет принят мой коммит и пока я отпишу ментейнеру пакета с просьбой обновить его, либо собрать плагин с пылу да с жару по этой инструкции, (по желанию) наложить ещё не принятый патч

git fetch https://codereview.qt-project.org/p/qt-creator/qt-creator refs/changes/23/45923/2 && git checkout FETCH_HEAD
после чего (обязательно) открыть файл clang_installation.pri и закомментировать знаком # строку
DEFINES += CLANG_INDEXING
Это отключит временно неиспользуемое, но сильно замедляющее работу индексирование.

>>> Подробности

★★★★

Проверено: anonymous_incognito ()
Последнее исправление: JB (всего исправлений: 4)

Текст классный. Я хоть и многого не понял, так как не программист, но благодаря хорошему качеству перевода понял хоть что-то, и это интересно.

ZenitharChampion ★★★★★
()
Ответ на: комментарий от anonymous

Вот уже догадки в ход пошли

Всё правильно он говорит. Программы на С++ быстрее там, где компилятор точно знает тип данных, с которым работает. Потому что может оптимально инлайнить код и проводить разные оптимизации. Шаблоны, которые есть в С++ и нет в С, здесь очень помогают. Много раз это уже разбиралось.

aist1 ★★★
()
Последнее исправление: aist1 (всего исправлений: 1)
Ответ на: комментарий от aist1

Всё правильно он говорит. Программы на С++ быстрее там, где компилятор точно знает тип данных, с которым работает. Потому что может оптимально инлайнить код и проводить разные оптимизации. Шаблоны, которые есть в С++ и нет в С, здесь очень помогают. Много раз это уже разбиралось.

Оу, неужели? - Да это, блин, начальный курс ВУЗа.

По существу вопроса: не об этом речь была насчет догадок.

anonymous
()
Ответ на: комментарий от anonymous

Ты совсем тупой, да?
GCC организован точно так же. Причем в нем несколько очень разных промежуточных виртуальных машин, а в LLVM их только две (LLVM IR и Selection DAG).

То, что компилятор организован подобным образом (интернально унифицированная машина), очень большая пичалька. И для каких целей так произошло? Правильно, в угоду простоты добавления новой архитектуры. А сейчас, когда уже более-менее все архитектуры описаны (как уже подсказывалось выше) определёнными параметризациями, можно и продолжать оптимизировать дальше.

Различайте, интернальные машины внутри компилятора служат немного другим целям :) Не только таргетирование, а ещё и внутреннее представление в рамках одной архитектуры - тот же «86» - весьма условное наименование большой солянки разных векторов исторического развития :)

Это не полемика против ЛЛВМ - который есть хороший метапроцессор, но не более.

sanaris
()

Вообще тет можно сказать, что в многих программных проектах GNU/FSF и прочее открытых компаний не предусмотрен процесс втягивания людей в существующие проекты, т.е. если в коммерческой компании , ты пришел в команду и в идеале тебе дают время освоится , отдают на съеденье какой-то отдельный кусок кода, возможно в грамотном проекте документация есть и прочее....

В мир СПО переходят хакИры, которые и так все знают, а чтобы участвовать и поддерживать существующий открытый проект, тот кто в нем работает должен уже уметь читать год и понимать структуру проекта... там ещё эти вечные холивары, о принятие /не принятии фич.... (особенно это смешно выглядит когда плана того над чем работают разрабы нет). Так, что-то я растекся мыслью...., а она такова, кроме Google Summer Day, хоть какого-то механизма втягивания и обучения новых программистов СПО нет. И в этом и выражена точка не возврата.

DR_SL ★★★★★
()
Ответ на: А не спешите вы хоронить С++ от aist1

в мире С++ появляется jit-интерпретация, а вместе с нею - метапрограммирование времени выполнения, интроспекция, рефлексия, рефакторинг

Что это?

Без Си и оптимизаций переменные-исполнение, не будет вообще ничего из вами перечисленного. Ваш Си++ очень хорошо пишется на Си. И это хорошо. Что, лучше писать плюсы на фортране? Когда-то так и было.

sanaris
()
Ответ на: комментарий от Deleted

Ничего подобного ОО (и на C++ вместе со всеми производными) программирование не дало, кроме того, что дало рабочие места кодерам

Ну, дало привлечение многих-многих в программирование. Так, что многие стали способны написать «класс точка (икс,игрек)». Вопрос, что делать дальше с этой громадной социальной группой. Назовём их объектниками. Они не профи, это просто все кто написал один класс и хотят намного больше, чем им реально нужно.

Предложение Линуса ( см. YOU ARE BULLSHIT пост из Гита ): запретить плюсы в жизненно важных проектах вроде Гит. Чтобы отсеять лишних.

Другие предложения - пересадить за хаскелл, тоже хорошо. Лисп предлагался ранее, оказался слишком сложен. К языку как таковому прослойка ОО не требовательна - сидят же на Дэльфи. Но Паскаль кинули. Что делать?

Моё предложение - перевод на sikuli. Графический язык программирования. Это и вычищает быдло-ОО из мозгов, и способствует правильному ОО-мышлению.

sanaris
()
Ответ на: комментарий от sanaris

Это и вычищает быдло-ОО из мозгов, и способствует правильному ОО-мышлению.

Уточни пожалуйста как понять где правильное а где неправильное ОО-мышление?

anonymous
()
Ответ на: комментарий от anonymous

Требования, как к любым дизайнам. Ортогональность.

Опять же, есть куча авторов, претендующих на свои, истинно правильные воззрения относительно того, как именно понять эту «ортогональность».

Сначала хотел обсудить пример правильного дизайна Си++ проекта, но решил - лучше не надо. Правильный дизайн начинается с дизайна языка. Если вводить объекты, то делать чистый объектный язык.

sanaris
()
Ответ на: комментарий от sanaris

Сначала хотел обсудить пример правильного дизайна Си++ проекта, но решил - лучше не надо. Правильный дизайн начинается с дизайна языка. Если вводить объекты, то делать чистый объектный язык.

От плюсофобии вас избавят Code Complete и высказывание Торвальдса, которого вы уже упоминали выше.

В Code Complete Стивен Макконел писал, что инженер-программист тем и отличается от математиков или академиков с навыками программирования, что работает с грязными задачами. Такими, где найти приемлемое решение сразу, просто сев и подумав, невозможно: приходится вначале делать эксперименты и лишь потом что-то будет видно. Так что

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

И там же заканчивается, и тянется до конца веков.

Ах да, ещё Торвальдс 15-20 лет назад на вопрос, почему он после выкладывания ядра в сеть доверился базарной разработке, ответил, что в крупных проектах планирование бесполезно и код развивается только эволюционно.

quiet_readonly ★★★★
() автор топика
Ответ на: комментарий от quiet_readonly

Ненене, погодите всё складывать в кучу. Была война Си-Паскаль в массовом программировании, без объектов, в конце 80-х. И это тогда Си считался «более грязным», ибо наконец-то ввёл указатели. То есть этот фактор «расширения возможностей», он тогда сыграл. Си заполнил машинную логику до конца: адреса, инструкции, данные.

Плохой дизайн плюсов, он ведь не потому что он расширяет возможности куда-то ещё, куда возможности Си ещё расширять? Дизайн Си++ плохой, как следствие разных пожеланий гигантской соцгруппы его пользователей. Как только эта группа начала распадаться, все эти шаблоны и прочие хитрые плюшки, стали не нужны. Стандарт плюсов надо наоборот, сокращать и переделывать. А кто возьмется его сокращать? Проще разогнать оставшихся в Сишарп и Джаву:) Или в платные компиляторы, где есть деньги платить за разработку тех плюшек, которые нужны %10 от общего числа.

sanaris
()
Ответ на: комментарий от quiet_readonly

Торвальдс 15-20 лет назад на вопрос, почему он после выкладывания ядра в сеть

И при этом, ограничил разработку языком, в котором 90% референса используются 100% пользователей. Хотя, проблемы разрастания стандарта Си тоже имеются.

sanaris
()
Ответ на: комментарий от sanaris

все эти шаблоны и прочие хитрые плюшки, стали не нужны.

ЩИТО?

Стандарт плюсов надо наоборот, сокращать и переделывать.

Во-первых, что именно сокращать? Во-вторых, тогда это уже будут не плюсы.

Reset ★★★★★
()
Ответ на: комментарий от quiet_readonly

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

ООП и модульность - несовместимые понятия.

anonymous
()
Ответ на: комментарий от sanaris

Была война Си-Паскаль в массовом программировании, без объектов, в конце 80-х. И это тогда Си считался «более грязным», ибо наконец-то ввёл указатели.

В Паскале тоже есть указатели, и типизированные, и не типизированные. И это тоже системный язык, ничем не уступающий C. Причина победы C в том, что на нём был написан Юникс. А с точки зрения логики, удобства и, особенно, надёжности программирования C и сейчас проигрывает Паскалю почти везде, кроме некоторых низкоуровневых операций.

Вообще же новость --- провокация. Дело в том, что llvm сейчас мало кто использует на практике, а уж clang и вовсе никому не нужен. Причина проста: кроме самих разработчиков языков и компиляторов, а также жадных корпорастов, они никому не нужны. Потому что gcc имеет ряд ключевых преимуществ:

  • Скомпилированные им программы работают быстрее, иногда в разы быстрее.
  • Он может скомпилировать большее число программ, поскольку поддерживает больше разных расширений.
  • Он работает под большим числом архитектур.
  • Он интегрирован со многими средами разработки от Code::Blocks до QT-Creator.
  • Он Он поддерживает на высоком уровне дольшее число языков программирования, в том числе Fortran, go, а скоро ещё и D.

llvm/clang создавался одною компанией для программирования под её платформу на одном языке --- Objective C, все остальные свойства появились там по ходу дела. И использовать его имеет смысл, если вы пишете для iPhone/iPad очередную платную зомби-стрелялку.

Vudod ★★★★★
()
Ответ на: комментарий от sanaris

А Ваш Си очень хорошо пишется на ассемблере. Но Вы же не пишете на нем, так? Муторно это и бессмысленно, потому что компилятор сейчас дает более быстрый и правильный код, чем это делает умный человек.

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

aist1 ★★★
()
Ответ на: комментарий от CYB3R

Один тролль закинул провокационное письмо в рассылку, другой его покормил. А ITT сейчас начнётся бурление говн по этому поводу.

Не имей GCC проблем, этого не (полу|слу)чилось бы.

An12
()
Последнее исправление: An12 (всего исправлений: 1)
Ответ на: комментарий от aist1

А Ваш Си очень хорошо пишется на ассемблере.

Не пишется. Вдруг начинают вылазить элементы архитектуры.

Но Вы же не пишете на нем, так? Муторно это и бессмысленно, потому что компилятор сейчас дает более быстрый и правильный код, чем это делает умный человек.

Пишем. Это просто и приятно. Что может быть проще ассемблера? Компилятор только микрооптимизацию делает. Это не критично. Однако при желании можно всегда (!) переиграть компилятор.

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

Примеры найдешь в сорцах perl или linux-ядра. Cоветую глубже осилить Си и не позориться больше.

anonymous
()
Ответ на: комментарий от anonymous

Не пишется. Вдруг начинают вылазить элементы архитектуры.

Ну а если от элементов архитектуры абстрагироваться?

Пишем. Это просто и приятно.

И веб-сервер вы на ассемблере будете писать, да?

Примеры найдешь в сорцах perl или linux-ядра.

С потерей эффективности для value-случаев, так?

aist1 ★★★
()
Ответ на: комментарий от aist1

Ну а если от элементов архитектуры абстрагироваться?

А смысл? Мы получим Си в чистом виде. Кстати, именно это обстоятельство побудило создание великого Си.

И веб-сервер вы на ассемблере будете писать, да?

Нет, я же сказал что аппаратные «уши» будут торчать. Поэтому пишем/пишут на Си. Но если вы готовы компенсировать трудозатраты ..

С потерей эффективности для value-случаев, так?

Разверни мысль.

anonymous
()
Ответ на: комментарий от anonymous

А смысл? Мы получим Си в чистом виде.

Ну не в чистом. Но, я вижу, Вы мою мысль поймали. Особенно в контексте этого:

Но если вы готовы компенсировать трудозатраты ..

Да, трудозатраты. Ну вот так и в случае С++ перед С тудозатраты решают.

Разверни мысль.

Позоримся? Шучу :)

Я имел в виду случай, когда структура данных хранит примитивные, value или POD-типы, а не указатели. В С++ это достигается за счет шаблонов. В случае же С нам нужны внешние шаблонные кодогенераторы.

aist1 ★★★
()
Ответ на: комментарий от Deleted

Я думаю, что я не одинок в своих мыслях: «Программы должны работать быстрее, должны быть надежнее и короче».

Ничего подобного ОО (и на C++ вместе со всеми производными) программирование не дало, кроме того, что дало рабочие места кодерам / создало видимость работ по созданию ПО (на деле по распилу государственных бюджетов и не только в России, но и «во всем цивилизованном мире»)/, и каждая новая версия такого ПО, накодированная станочниками, требует более мощных платформ и большего объема ОЗУ и места на дисках, в сравнении с предыдущей версией. В наваре не заказчики в лице государства или пользователей, в наваре лишь корпорации курирующие разработку ПО, в том числе и многих из открытых проектов, хотя как раз они за руку и не пойманы, но любой современный веб-браузер очень требователен к ресурсам машины, и конца этой прожорливости похоже не видно.

Предпосылки правильные но вывод нелогичен и попахивает луддизмом. Процедурные языки имеют вполне ощутимый предел сложности создаваемых программ, так что отказ от ооп в пользу процедурщины равнозначен возврату к софту начала 90х. Источник проблемы ненадежности софта - управление выполнением. От goto отказались 50 лет назад, но дальше шагов в этом отношении не предпринималось. Циклы в явном виде вообще не нужны.

DNA_Seq ★★☆☆☆
()
Последнее исправление: DNA_Seq (всего исправлений: 1)
Ответ на: комментарий от DR_SL

хоть какого-то механизма втягивания и обучения новых программистов СПО нет. И в этом и выражена точка не возврата.

Точка невозврата начинается тогда, когда кто-то начинает мыслить что его обучат, накормят, за него все делать будут.

Учитесь, выращивайте еду своими руками, трудитесь на свое благо и не ждите и даже не желайте чужого.

Deleted
()
Ответ на: комментарий от aist1

Да, трудозатраты. Ну вот так и в случае С++ перед С тудозатраты решают.

Вы видите ответ лишь как вам удобно. На самом деле ответ таков: если бы не проблема переносимости в ассемблере, то народ писал бы на асме (я имею ввиду не хомячкобыдлокодеров, а нормальный народ кто осиливает проекты уровня linux, perl, httpd, gcc, ..). Си-мастер напишет проект быстрее и поддерживать ему его будет много проще чем мастеру на С++ (матерые программисты знают о чем речь). Я отлично знаю С++, но пишу на Си в том числе и из-за того что это мне сильно экономит время.

Я имел в виду случай, когда структура данных хранит примитивные, value или POD-типы, а не указатели. В С++ это достигается за счет шаблонов. В случае же С нам нужны внешние шаблонные кодогенераторы.

Не нужны. Все гораздо проще: вы не знаете Си. Вам указали на сорцы проектов где есть примеры. Если надо - разберетесь (а на вас свое время я больше тратить не буду - нет смысла).

anonymous
()
Ответ на: комментарий от quiet_readonly

Тормозов обычно добиваются встраиванием динамически-типизированных javascript, lua или python

Исправил.

shahid ★★★★★
()
Ответ на: комментарий от Deleted

Учитесь, выращивайте еду своими руками, трудитесь на свое благо и не ждите и даже не желайте чужого.

Зря ты это сказал. Ожидаю что 95% населения тебя начнет склонять.

anonymous
()
Ответ на: комментарий от An12

Не имей GCC проблем, этого не (полу|слу)чилось бы.

Проблемы всегда есть и будут, и списки TODO зачем тогда нужны?

Только вот кто-то их вычитал текущее состояние, и впал в уныние, вместо того, чтобы самостоятельно для C++ предложить решение в виде патча. Но видимо этому спецу проще ныть что C++11 не поддержан как ему видится в gcc и от того gcc конец.

После заявлений таких «гуру» по ссылке из топика - это скорее конец ООП и C++ в частности, чем gcc :).

Такая же ситуация в точности обстоит и с программированием на любом языке, все привыкли паразитировать, вместо того, чтобы хотя бы для нужных им программ и их возможностей, самостоятельно искать решение, и хоть немного напрячь свои последние непропитые и непрокуренные извилины, конечно если они еще остались. Замечу, что на таких «гуру» должностей менеджеров команды на всех-то не хватит, да и спрос с менеджеров скоро будет не формальный как сейчас, а эффективность их работы будет оцениваться не только в «качестве» обоснований распилов бюджетов, но прежде всего в полезной отдаче обществу (потребителям) и государству.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от Vudod

Скомпилированные им программы работают быстрее, иногда в разы быстрее

На каких реальных задачах это заметно? Если на математике, то интел даёт ещё более быстрый код.

Он может скомпилировать большее число программ, поскольку поддерживает больше разных расширений

Правильнее: он может скомпилировать большее число программ, написанных специально под GCC. Причём clang осиливает уже более 90% линуксового софта.

Он работает под большим числом архитектур

Единственное существенное преимущество. И то, интересно это только ембеддщикам.

Он интегрирован со многими средами разработки от Code::Blocks до QT-Creator

Вот про интеграцию лучше не надо. У gcc может здесь быть историческое преимущество, но тенденции и перспективы очевидны (о чём в частности и новость).

Он поддерживает на высоком уровне дольшее число языков программирования, в том числе Fortran, go, а скоро ещё и D.

Вот уж go и D - действительно не нужны никому.

llvm/clang создавался одною компанией для программирования под её платформу на одном языке --- Objective C, все остальные свойства появились там по ходу дела. И использовать его имеет смысл, если вы пишете для iPhone/iPad очередную платную зомби-стрелялку.

В таком случае, использовать gcc имеет смысл только если пишешь очередную свободную GNU-утилиту на си.

unsigned ★★★★
()
Ответ на: комментарий от Deleted

В качестве ответной меры могу предложить разработчикам gcc
вообще откзаться от C++ и всех его предков в gcc,

с++ неосилятор? или очередной школото ембедокодер?

anonymous
()
Ответ на: комментарий от Deleted

Точка невозврата начинается тогда, когда кто-то начинает мыслить что его обучат, накормят, за него все делать будут.

Учитесь, выращивайте еду своими руками, трудитесь на свое благо и не ждите и даже не желайте чужого.

Ухххх, прям в стиле молитесь , поститесь и слушайте радио радонеж.... Теперь серьезно, никто не просил обучать людей языку программирования или работе с git в проекте, а вот извините входить в крупный проект СПО программы надо уметь, иначе при всех даже самых хороших побуждениях люди плюнут и уйдут создавать «велосипеды».

У гугла свои методы, им проще деньги выдавать, я же не говорю что все так должны ,то же FSF ратует за то чтобы в школах было СПО, не представляет даже чему на нем будут учить детей.

DR_SL ★★★★★
()
Ответ на: комментарий от DR_SL

В мир СПО переходят хакИры,

не хакеры а школота

которые и так все знают,

которые ничего не знают

а чтобы участвовать и поддерживать существующий открытый проект,

напомните хоть один открытый проект который поддерживают хакеры

тот кто в нем работает должен уже уметь читать К!од и понимать структуру проекта...

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

даю подсказку - 2-3 человека.

anonymous
()
Ответ на: комментарий от sanaris

Предложение Линуса (см. YOU ARE BULLSHIT пост из Гита):
запретить плюсы в жизненно важных проектах вроде Гит.
Чтобы отсеять лишних.

то что там булькнул самый толстый троль ничего еще ничего не значит, линус не осилятор С++, и наГ**колдил git, читая соурсы git - сразу видно какой бардак у торвальдса в голове

anonymous
()
Ответ на: комментарий от anonymous

не хакеры а школота

Имелось в виду уже обученные давно разбирающиеся в программировании люди, которые долгое время работали в этой области и им объяснять ничего не надо, т.е. обучили их работать с кодом в другом месте.

А «школота» не умеет работать с чужим кодом и прочее и прочее, а так как они врядли найдут обучение в среде СПО-программистов(только илитствующие выкрики), то начинается написание очередного велосипеда.

DR_SL ★★★★★
()
Ответ на: комментарий от anonymous

то что там булькнул самый толстый троль ничего еще ничего не значит, линус не осилятор С++, и наГ**колдил git, читая соурсы git - сразу видно какой бардак у торвальдса в голове

С++ не нужен. Без С++ прекрасно живем несмотря на то что достаточно долго его использовал. Тем не менее, ты меня заинтриговал: найду свободное время и обязательно поизучаю сорцы git-а. Буду признателен если укажешь срез (версию/коммит) сорцов который нужно изучать.

anonymous
()
Ответ на: комментарий от anonymous

напомните хоть один открытый проект который поддерживают хакеры

perl

anonymous
()

Учтите, что мы не вправе поставить GCC в гараж и рефакторить его два года. Любая починка ведётся прямо на оживлённой трассе!

загнать в гараж копию текущего gcc и вылизывать архитектуру + документацию. без внедрения новшеств. это же очевидно.

а вообще мне нравится идея llvm с промежуточным кодом.

Ford_Focus ★★★★★
()
Последнее исправление: Ford_Focus (всего исправлений: 1)
Ответ на: комментарий от aist1

потому что компилятор сейчас дает более быстрый и правильный код, чем это делает умный человек.

ложь. ну и дальнейшие рассуждения про белый и чистый c++ соответственно тоже неверны.

anonymous
()
Ответ на: комментарий от anonymous

потому что компилятор сейчас дает более быстрый и правильный код, чем это делает умный человек.

ложь.

А если сделать поправочку на количество кода, который должен нагенерировать человек? Силенок хватит в голове-то всё оптимизировать?

aist1 ★★★
()
Ответ на: комментарий от anonymous

Я отлично знаю С++, но пишу на Си в том числе и из-за того что это мне сильно экономит время.

Ключевое слово здесь — «Я». Видимо у Вас такие задачи.

Все гораздо проще: вы не знаете Си.

Я готов с этим согласиться, так как на этом языке уже давно не пишу. Но про эффективность Вы меня посылкой в сорцы ядра не убедите. Я писал и на С, и для ядра.

Давайте решим задачу qsort против std::sort. При построении кода для std::sort компилятор точно знает типы данных и может инлайнить код функтора, сравнивающего значения сортируемого массива. Как мы добьемся такого же эффекта для qsort, если в С нет полиморфизма данных?

aist1 ★★★
()
Ответ на: комментарий от Ford_Focus

В gcc точно такой же промежуточный код.

anonymous
()
Ответ на: комментарий от aist1

При построении кода для std::sort компилятор точно знает типы данных

Не только поэтому компилятор С++ может инлайнить оператор() функционального объекта, а потому что разные операторы() принадлежат разным типам и шаблоны С++ по факту - это кодогенератор направляемый типами. Если добавить в С полиморфные функции, то тип компаратора всегда будет bool (a, a) и компилятор не сможет заинлайнить код.

Begemoth ★★★★★
()
Ответ на: комментарий от anonymous

Вполне себе совместимые. Просто туговато с популярными языками, в которых первое и второе сделано хорошо.

hobbit ★★★★★
()
Ответ на: комментарий от aist1

Я отлично знаю С++, но пишу на Си в том числе и из-за того что это мне сильно экономит время.

Ключевое слово здесь — «Я». Видимо у Вас такие задачи.

Видимо нет. Не угадали. Задачи тут не при чем.

Я готов с этим согласиться, так как на этом языке уже давно не пишу. Но про эффективность Вы меня посылкой в сорцы ядра не убедите. Я писал и на С, и для ядра.

И что? Люди по 40 лет работают на работе но кроме тупого функционирования в рамках своих задач ничего не могут. Вы и не знали Си хоть и писали на нем (если писали).

Давайте решим задачу qsort против std::sort. При построении кода для std::sort компилятор точно знает типы данных и может инлайнить код функтора, сравнивающего значения сортируемого массива. Как мы добьемся такого же эффекта для qsort, если в С нет полиморфизма данных?

Некорректная постановка задачи. Нет эквивалентности между qsort и std::sort.

anonymous
()
Ответ на: комментарий от sanaris

То, что компилятор организован подобным образом (интернально унифицированная машина), очень большая пичалька. И для каких целей так произошло? Правильно, в угоду простоты добавления новой архитектуры.

Безграмотная чушь. Не понимаешь ничего в компиляторах - так помалкивай, сойдешь хотя бы за умного.

Читать сюда: https://en.wikipedia.org/wiki/Static_single_assignment_form

anonymous
()
Ответ на: Неущемляемость GPL. от Camel

GPL запрещает накладывать ограничения помимо тех что уже есть в GPL. Можно добавить разрешение, например разрешение на упоминание авторов или перелицензирование, но нельзя потребовать указывать авторов.

Это она запрещает изменять лицензию на код. То есть, кто-то выпустил код под GPL без дополнительных ограничений и нельзя их вводить.

Если код изначально выпущен под BSD а затем сделан форк под GPL с дополнительными ограничениями нельзя будет ограничения добавлять.

x86_64 ★★★
()
Ответ на: комментарий от x86_64

Хотел сказать, что этот пункт к форку проекта под BSD не относится.

x86_64 ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.