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)
Ответ на: комментарий от quiet_readonly

часть разработчиков GCC заметила некоторые пятнышки в светлом будущем

Ну все же понимают, что это за «часть» такая. rguenth всё правильно сказал, кстати.

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

Да? Ну и как им там без autotools и без GDB?

а зачем им отказываться от них? ну и альтернативы есть, насчет autotools ты сам должен знать (правда отказаться от него полностью нереально), насчет GDB - уже есть LLDB

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

Ни пакетов к убунтам

а я вот собираю ^_^

ни сборок GIMP для Windows

мир этого не переживет

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

1) Autotools ни малейшего отношения к gcc не имеют, и прекрасно работают с превеликим множеством других компиляторов (собственно, для того они и создавались, во времена адского зоопарка, когда gcc был одним из многих, причем не самым популярным).

2) gdb - отстой, lldb рулит

3) gdb тоже ни разу не является частью gcc

anonymous
()

У меня идея. Если корифеи не хотят писать доки, а новички копаться в тоннах кода, то пусть скинутся на его аудит.

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

FreeBSD полностью от GCC отказались

Теперь фряха не только будет RIP, но еще и медленная донельзя. Прогресс!

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

С того, что шланг/llvm - тормозное уродство.

Заходим на http://octane-benchmark.googlecode.com/svn/latest/index.html

Запускаем тесты и ждем сколько же попугаев выдаст (чем выше тем лучше):

chromium-24.0.1312.52 (сборка LLVM/Clang 3.1) Octane Score: 8268

chromium-24.0.1312.52 (сборка GCC-4.6.3) Octane Score: 8676

firefox-18.0 (сборка GCC-4.6.3) Octane Score: 5855

firefox-18.0 (сборка LLVM/Clang 3.2) Octane Score: 5822

В каком месте «тормозное уродство»?

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

В каком месте «тормозное уродство»?

CFLAGS свои дай, а.
У меня clang при любых вариантах оптимизации отстает от gcc процентов на 20, не меньше.

А, и еще какой проц.

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

CFLAGS свои дай, а.

Где он прописан, я не знаю. По дефолту всё собираю из портов.

А, и еще какой проц.

AMD Phenom II X4 810

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

Где он прописан, я не знаю

О_о в /etc/make.conf вроде же

По дефолту всё собираю из портов.

Значит где-то -march=i686 -O2 или -march=amd64 -O2
Тогда неудивительно, стандартные оптимизации примерно одинаковые. Но вот выше них у clang не прыгнуть, а у gcc можно например -ffast-math / -mfpmath=both / -fno-tree-pre включить.

AMD Phenom II X4 810

Ноутбучный T5600@1.83 получает 6844 в этом марке. Хром 25.0.1364.45 beta

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

Тогда неудивительно, стандартные оптимизации примерно одинаковые. Но вот выше них у clang не прыгнуть, а у gcc можно например -ffast-math / -mfpmath=both / -fno-tree-pre включить.

Угу, а у gcc прыгнуть, скажете тоже.

С LTO уже можно собрать что-нибудь мелкое (даже демки типа glxinfo в составе месы), но реальный софт ломается. PGO вообще никто не использует, ибо неудобно дюже. -ffast-math даёт ускорение ценой изменения семантики типов с плавающей точкой и потому в некоторых случаях приводит к неверной работе приложения (ЕМНИП это один из секретов скорости intel compiler).

А всякие unroll loops и иже с ним могут за просто так поднять размер бинарника на 10-20%. Эффект в плане скорости в среднем меньше 5 процентов.

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

Ах да, я ещё забыл добавить, что в плане скорости у пользователя нет понятий больше/меньше, если только мы не говорим о любителях дефрагментировать диск ради дефрагментации. Бывает скорость хорошая, а бывает раздражающая. Никакие 10-20% ускорения на подобранных бенчмарках никак не изменят того факта, что отзывчивость приложения пользователя раздражает или не раздражает.

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

О_о в /etc/make.conf вроде же

> cat /etc/make.conf
KERNCONF=ROXY
WRKDIRPREFIX=/usr/obj
MAKE_JOBS_NUMBER=4
.if ${.CURDIR:M/usr/ports/www/libxul*} \
 || ${.CURDIR:M/usr/ports/editors/openoffice-3*}
CC=/usr/bin/gcc
CXX=/usr/bin/g++
CPP=/usr/bin/gcpp
.endif
LOADER_ZFS_SUPPORT=true
LOCALIZED_LANG=ru
WITH_LCD_FILTERING=true
WITH_XFT=true
WITHOUT_TTF_BYTECODE_ENABLED=false
WITH_TTF_BYTECODE_ENABLED=true
WITH_MSWINDOWS_LICENSE=true
WITH_VPX=true
WITH_A4SIZE=true
WITHOUT_DEBUG=true
WITHOUT_NOUVEAU=true
# Keep ruby 1.9 as default version.
RUBY_DEFAULT_VER=1.9
# added by use.perl 2013-01-21 20:21:45
PERL_VERSION=5.16.2
iZEN ★★★★★
()
Ответ на: комментарий от quiet_readonly

ЕМНИП это один из секретов скорости intel compiler

Потому что по заявлениям интела у них он «безопаснее». Никто не запрещает отключить.

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

С LTO уже можно собрать что-нибудь мелкое

У меня с lto половина системы была собрана - брат жив.

но реальный софт ломается

Он может не собраться. Поломок не было.

за просто так поднять размер бинарника на 10-20%

Процентов на 10 в среднем. Копейки.

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

Никакие 10-20% ускорения на подобранных бенчмарках никак не изменят того факта, что отзывчивость приложения пользователя раздражает или не раздражает.

В 95% случаев отзывчивость зависит не столько от приложения, сколько от шедулера.

в плане скорости у пользователя нет понятий больше/меньше

Вот тут согласен - либо тормозит, либо не тормозит. Но эти юзвери и про gcc не знают.
А вот иметь профит на реальных задачах - это труЪ.

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

Ну так добавь
CFLAGS=-march=native -O2 -s -g0 -pipe

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

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

Все нужные опции компиляции прописаны для каждого порта в отдельности в его Makefile и патчах порта

epic_brutal_facepalm.bmp
ну удачи с таким подходом.

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

То есть ты хочешь сказать, что мантейнеры хуже меня знают, как собирать тот или иной порт, который они сопровождают, вставляя в Makefile этого или зависимого порта в параметр CFLAGS кое-где "-O2 -pipe", а кое-где и "-O3"?

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

мантейнеры хуже меня знают, как собирать тот или иной порт

Они ставят дефолтные флаги, которые заработают у всех и далеко не всегда оптимально. Думаешь почему гентушники CFLAGS мучают.

они -march=native вставляют? нет? Ну тогда какой разговор.

devl547 ★★★★★
()
Последнее исправление: devl547 (всего исправлений: 1)
Ответ на: комментарий от devl547
> grep "march=native" -r /usr/ports
/usr/ports/security/tthsum/files/patch-Makefile:-  CFLAGS += -O3 #-fno-stack-protector #-march=native
/usr/ports/security/tthsum/files/patch-Makefile:-  LDFLAGS += -O3 #-march=native
/usr/ports/www/free-sa-devel/Makefile:	@${ECHO_MSG} ">>> 'CFLAGS= -O4 -pipe -march=native' and 'CC= gcc' to advantage."
/usr/ports/math/superlu/files/patch-make.inc:+#CFLAGS       ?= -O3 -pipe -fno-strict-aliasing -march=native -Wl,-rpath=/usr/local/lib/gcc46
/usr/ports/math/stp/Makefile:BROKEN=		Does not compile on ia64, powerpc, or sparc64: unrecognized command line option -march=native
/usr/ports/graphics/fyre/Makefile:CFLAGS+=	-march=native -O3 -ffast-math -fomit-frame-pointer
/usr/ports/lang/luajit/files/patch-src_Makefile: # the binaries to a different machine you could also use: -march=native
/usr/ports/lang/ypsilon/files/patch-Makefile:-  ifeq ($(shell $(CXX) -dumpspecs | grep 'march=native'), )
/usr/ports/lang/ypsilon/files/patch-Makefile:-    CXXFLAGS += -march=native
/usr/ports/databases/mdcached/Makefile:	@${REINPLACE_CMD} 's|ADDCFLAGS = -Wall -g -O3 -march=native|ADDCFLAGS = ${CFLAGS}|' \
/usr/ports/emulators/bsnes/files/patch-Makefile:   flags += -march=native
iZEN ★★★★★
()
Ответ на: комментарий от Vudod

Зомби тоже живут. Или это им так кажется.

Вот же гнида! Тебе кажется, что ты живешь. Иллюзия. Никому твоя жалкая жизнь не нужна.

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

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

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

ключевое слово «Хиндли-Милнер»... Вам достаточно ознакомиться с языками ML-семейства. Кроме полиморфизма там еще и модульность нормальная, кстати. Наглядно показывающая что ООП - вредно. (наследование нарушает инкапсуляцию. а без наследования это уже не ООП будет)

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

да, и еще. тут часто говорят про SSA форму, что она удобна для разных трансформаций кода и тыпы. но никто почему-то не задумывается что это по сути функциональный язык. Те-же идеи. математизация переменных, однократность присваивания упрощает анализ зависимостей. И получается что на него уже принудительно конвертируется все. Так почему бы сразу не писать на строгом функциональном языке?

какой смысл спорить о С-против-С++? все процедурное устарело давно, по причине многоядерности и GPU. пора уже стать профессионалами в инженерном плане и научиться оценивать реальную пользу и вред применяемых инструментов без фанатизма. научиться абстрагировать и модуляризовать ВСЕ зависимости в коде по нормальному. императивные программы ведь действительно сложнее автоматически параллелить, факт.

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

Адепт?

Все твои предположения и розовые мечты, о мире в котором «написал 3строчки - работает нормально» рушатся об жестокую реальность ввиде такой штуке как «универсальность».

Давай я тебя объясню, почему программирование и ЯП в тупике.

Универсальность - это сложность, а сложность это безвозвратно потеряная производительность + время на разработку. Это всё растёт очень даже не линейно.

Сложность поржадает раздробленность, а раздробленность порждает всё новые и новые абстракции и каждая часть наследует все болячки предка, ибо делается тоже универсальной.

Время, большие затраты на разработку пораждают потребность в людях, но реальных программистов очень мало - это пораждает люжное предложение. Этим вырождается всё «поколение». С ростом универсальной системы единицы, создающие её в среднем деградируют, ибо уровень новопоступившех всегда уменьшается.

И вся эта пирамида говна будет жить до тех пор, пока её будет тянуть вершина - это те СИ программисты с цельным знанием, те инжинеры и иные труЪ спецы. В конце концов верхушка отомрёт и пирамида развалится. Это абсалютно тупиковый путь.

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

Вы, как и все.

Вы всё думаете, что за вас всё сделают. Вы всех призываете к функциональщине, ОПП и прощей ереси, в надежде на то, что кто-то за этим будет следить. Да, вы будите жить. А ты думаешь, что когда-то некому будет тащить на низком уровне твой ЯП? Ни ты, ни кто-то иной это не осилит, ибо зачем вам знать низы?

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

Но это не уйдёт, ибо сейчас культура потребления. Всё про сделать говно, ибо «я не буду в этом доме жить», «я не буду в этой стране жить», «я не буду этот код соправождать», «это будет кто-то, но не я».

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

Это не ответ, это просто моё мнение по этому поводу.

Я ничего не имею против шланга. Все радужные разговоры о том, как это круты его фичи - это круто. Это хорошо, что есть фичи. «Хорошо», что кто-то не будет пилить велосипед, но.

Про комментарии:

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

Вот он пишет «строчка:символ бла-бла», потом мне показывает эту строку с кривым треугольничком. Синтаксис мне подстветит та же иде, если я где накосячу. А если это warning, то треугольник со строчкой нидадут мне ничего полезного, ибо я иду в код, читаю ту строку и думаю - «что же тут такогого плохого».

Я вообще не вижу смысла в этих крутых «комментариях».

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

Это не ответ, это просто моё мнение по этому поводу.

Про там «понтовый код», «либшланк» и прочее.

Это хорошо, но хорошо для плюсов. Поэтому не считаю, что это аргументом в мире Си. Да и всё это, имхо, не аргумент против гцц.

Моя мечта - отдать плюсы шлангу, а Си гцц. Выпилить из ггц всякие нунжности типа го, фортрана, обжц и т.п. И перестать гцц гонятся за всем, а сосредоточится на Си, а иные языки форкнуть и сделать отдельные компиляторы, если они вообще нужны.

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

Я считаю, что мильёны ненужных архитектур нужно выпилить. Редизайн требуется и глибц, ибо это тихий ужос. Каждый раз когда мне надо залезть туда - я плююсь.

Весь мир спо повяз в баласте. Всё стараются не забывать про всё, но силы и время не безграничны.

Я вижу развитие СПО в объекдинении, отречение от баласта и ухода от попыток упращения.

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

А на это я ответил во втором посте.

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

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

В чем заключаются тормаза я не понимаю. Распарсить, разобрать и закешировать все классы. А уж дополнить - это не особо сложнее поиска по дереву.

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

В чем заключаются тормаза я не понимаю. Распарсить, разобрать и закешировать все классы. А уж дополнить - это не особо сложнее поиска по дереву.

В дизайне clang, там автодополнение выполняется путём повторного парсинга. Действительно, это проблема универсальности clang. Да и работы оплачивает в основном Apple, у которой objective-c, в котором нет шаблонов и больших объявлений в заголовках.

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

Эпично.

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

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

Покачто спасают оптимизаторы, как уничтожители универсальности. Вот блин мир - одни создают универсальность и живут этим. Вторы борятся с последвиями, попытками свести универсальность к частному случаю тем самым сводя на нет накладные расходы. Это как с ГЦ, одни знают когда не нужно, но им лень сказать, что ненужно. Вторые же пытаются угадать, что не нужно первым.

Этот мир прекрасен своим безумством.

otnnte
()
Ответ на: Эпично. от otnnte

Т.е. дополнительная фича шланга не будет работать для C++ без редизайна шланга или самого C++

фикс

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

Как раз шланговцы универсальностью не страдают. Во-первых текущее автодополнение работает быстро для C и ObjectiveC, во-вторых внутри шланга прямо в высокоуровневом методе я тут же видел низкоуровневый и размноженный копипастом код для логгирования работы clang по протоколу UDP. По дефолту он отключён и никому особо не мешает, потому и живёт.

Редизайн автодополнения плюсов в clang сделать просто некому.

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

Так, постой.

Шланг по качеству кода уступает, по скорости выигрывает(хотя я этого не заметил) т.е. в среднем ничем не лучше гцц( это в лучше случае).

А все, включая вас, товарищь, говорят, что шланг не этим силён, а силён своей архитектурой - т.е. либшланг. Теперь же вы гвоорите, что любшланг нифига не работает, а работает нормально только там, где это не нужно. Уж у Си с автодополнением проблем я никогда не замечал. И то, работает лишь благодаря тому, что Си проще и это не сильно выдаёт тормаза шланга.

Лично я не верю в компилятор на плюсах, но хорошо - это мой пунктик. А вот в чем вообще смысл шланга? Зачем он нужен? Не проще ли пилить гцц?

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