LINUX.ORG.RU

Modern C++ vs шаблонные метапрограммисты

 


2

9

Вот вам пример нормального современного C++, который, кстати, скоро может войти в состав SDK для оффтопа: github.com/kennykerr/modern

Вот вам пример, как библиотечные возможности STL и boost помогают отказаться от большинства паттернов GoF и тем самым избежать мусорных типов, таких как IXxxListener, IXxxObserver и т.д и т.п: accu.org/content/conf2013/Tobias_Darm_Effective_GoF_Patterns.pdf

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

Глядя же на большинство статей по С++11 и C++14, начинает уже тошнить от мета-программирования, супершаблонов с мегавариадиками, гипердеклтайпов с невероятно компильтаймовым вычислением абсолютно ненужных вещей (которые в 99% программ вообще незачем считать в компильтайме).

Почему так?

★★★★

Последнее исправление: quiet_readonly (всего исправлений: 2)

Ответ на: комментарий от callbackhell

Ну OK, испражнили вы из себя очередную глупусть банальщину. Что дальше? Предлагаете C++никам перейти на JavaScript и Io? Или остаться в C++, но не пользоваться шаблонами? Или еще что-то?

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

Ну так начните с себя. А то вы после траха с Io вдруг возомнили себя экспертом по метапрограммированию вообще и по compile-time метапрограммированию в C++ в частности и пришли в тему про С++ поучать сиплюсплюсников. Скромнее надо быть.

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

Хмм...

Как coding guideline очень даже неплох. Даже рискну сказать - хорош.

По поводу styling - ссылаются на K&R плюс пару еще советов. Это, клнечно, многое покрывает, но не всё. Например, оформление шаблонов достаточно неоднозначно. Вот пример для Java: http://www.oracle.com/technetwork/java/javase/documentation/codeconvtoc-13605...

Но за наводку спасибо.

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

Как coding guideline очень даже неплох. Даже рискну сказать - хорош.

Более того, вместе с VS2015 Update 1 Microsoft выпустила первую версию инструмента, который автоматически проверяет выполнение части этих coding guidelines. И ходят разговоры, что подобные инструменты могут быть выпущены и на базе других инструментов, в частности, clang-а.

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

А что-то подобное для мира Линукс есть? Желательно не зависящее от компилятора?

P. S. Интересно, как они будут проверять подобное:

F.2: A function should perform a single logical operation

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

А что-то подобное для мира Линукс есть?

Не знаю. У меня пока даже не было возможности чекер для VC++ проверить в деле.

Но с учетом того, что всей этой затее едва ли полгода, то появление инструментов нужно еще подождать.

Интересно, как они будут проверять подобное:

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

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

Шаблоны это «ну типа вот здесь

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

ты огребаешь комбинаторный взрыв

Комбинаторный взрыв был бы если бы ты инстанцировал все возможное шаблоны. Ты же инстанцируешь только те что используешь, ровно столько и получишь.

императивно собрать класс/функцию/модуль, запихать в него что-то оттуда и вон оттуда

Ты даже шаблоны не осилил, куда тебе императивное метапрограммирование? У тебя же до собственно приложения не дойдёт, так и будешь «степ-by-степ» свой метакод отлаживать. Впрочем, оно наверное и к лучшему. Но потом же ты также пойдёшь в форум позориться, только претензий и нытья будет ещё больше, потому что инструмент неосилятору дали ещё мощнее.

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

Так вали на лисп, делов-то. Он для всего предназначен.

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

У тебя же до собственно приложения не дойдёт, так и будешь «степ-by-степ» свой метакод отлаживать.

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

Так вали на лисп

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

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

Почему-то этим часто страдают С++ники и жависты.

Все этим страдают, в той или иной степени, просто некоторых недостаточно чтобы быть заметными.

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

Может потому, что в сторону C++ и Java высказывается столько горячечного бреда, что это поневоле наводит на мысли об адекватности говорящего?

Ну вот есть в языке шаблоны. Удобны в создании контейнеров. Удобны еще в некоторых вещах (вроде настройки конкретного класса под конкретные условия). Спокойно используются для этих целей кучей народу без желания повторять подвига Александреску и Вандервуда.

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

Т.е. редкие экстремумы выдаются за норму и на основании этого декларируется, что и язык говно, и шаблоны в нем ужасные. Хотя другого языка с такими возможностями для нейтива в мейнстриме просто нет.

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

Я про сборку элементов программы из структур, за них отвечающих, например собрать класс можно было бы с помощью struct c_class, c_class_member, c_function и соотв. API компилятора как среды программирования. Про текстовые замены речи не идет, они и так уже есть в более чем пересыщенном виде.

Но ты обязательно попробовой макнуть меня в следующий раз, глупая обиженка :D

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

Столько вангований, это уже какой-то другой взрыв, не комбинаторный.

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

Но C++ без шаблонов был мало кому нужен еще 20 лет назад. Не говоря уже про сейчас.

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

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

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

Хотя другого языка с такими возможностями для нейтива в мейнстриме просто нет.

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

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

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

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

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

Мне вот интересно, что же вы такое вынуждены писать на C++, что ваша писанина сводится к вышеозначенному? Обо что вы так расшибли свою юную голову, что теперь готовы бросаться в C++ говном?

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

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

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

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

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

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

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

О боли тех, кто пишет десять строк на одну такую :D

Обо что вы так расшибли свою юную голову, что теперь готовы бросаться в C++ говном?

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

Так что мне проще свернуть эту беседу, не обессудь :)

Реализовать что-то подобное for fun стоит в планах, за меня не переживайте.

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

Вы написали комментарий, на который получили ответ от какого-то другого форумчанина, но не от меня. После чего в мой адрес вы высказываете претензии по поводу аргументов «ни асилил» и говорите о моей неадекватной реакции. Тому ли собеседнику вы адресуете свои претензии?

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

Какие это области? Я во всей теме пытаюсь от участников беседы конкретику вытащить, но почему-то никто не может внятно сказать, зачем ему шаблонные навороты в C++...

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

зачем ему шаблонные навороты в C++...

1. Для любых вычислений во время компиляции — рейтрейсер например
2. Метапрограммирование — задание каких-то дополнительных ограничений(которые компилятор не может отловить), создание DSL

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

1. Для любых вычислений во время компиляции — рейтрейсер например

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

2. Метапрограммирование — задание каких-то дополнительных ограничений(которые компилятор не может отловить), создание DSL

В определенных пределах метапрограммирование вполне себе поддерживается. Ну и с годами поддержка таких вещей в языке постоянно улучшается.

По поводу DSL ситуация не однозначная. Кому-то, например, Boost.Spirit кажется нормальным DSL, кому-то нет. Проблема с embedded DSL в C++ в том, что очень легко достичь предела возможностей языка, но не получить достаточной выразительности или мощности результирующего eDSL. Посему касательно eDSL-ей для C++ у меня лично всегда было недоумение: зачем насиловать язык, который для таких целей не предназначен, если можно воспользоваться другими инструментами, потратить меньше сил и получить более качественный результат?

Собственно, такое ощущение, что за прошедшие 10 лет ничего не изменилось: в 2005-м C++03 ругали за то, что вычисления времени компиляции в нем делать неудобно, и eDSL-и корявые получаются, и сейчас, во времена C++11/14, тоже самое. Как будто кто-то обещал, что C++ все это поддерживает и создавался специально для этого.

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

Как ни пробую, все стена текста выходит, извиняй. Давай просто по ключевым словам: arc (прозрачный), orm (и bridges в целом), aspect-oriented programming, object-oriented programming (внезапно, ага), code analysis, preprocessing, monkey patching, class extensions, ffi/abi. Могу продолжить, но надо будет повспоминать.

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

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

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

Как будто кто-то обещал, что C++ все это поддерживает и создавался специально для этого.

Критикуется язык, а не чьи-то обещания.

ощущение, что за прошедшие 10 лет ничего не изменилось

Дык, не у тебя одного.

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

придумать задач, где проще и безопаснее нагенерить кода, чем писать его вручную

Зачем генерировать код в compile-time... Вот это, блин, уже лет 15 для меня полная загадка.

Критикуется язык

Сначала делается тезис о том, что язык выгодно использовать для конкретной задачи. Легко демонстрируется, что для этой самой задачи язык не подходит. После чего критикуются язык, а не уместность первоначального тезиса.

К этому и сводится большинство наездов. Причем как на C++, так и на Java, так и на кучу других языков.

PS. Ну а к OOP в C++ какие претензии?

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

Я же не могу ничего написать на своей метасишке, чтобы показать ущербность крестовых эквивалентов — ее у меня нету!

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

ну, вижла на лине к сожалению не особо то и доступна. только под виртуалкой её крутить, ибо под вайном сомневаюсь, что поднимется. а что там с другими инструментами? Стоит ли хотя бы ожидать в коммерческом Clion(кстати, как эта IDE? Юзабельно?) ? или ждать поддержки всей этой радости от clang. Про такие IDE, как Qt Creator, Kdevelop я молчу - там скорее всего никогда не появится.

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

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

Что значит «мощные макросы»? Макросы — это такой же язык препроцессора, те же самые шаблоны, вид сбоку.

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

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

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

На счет IDE не знаю, не пользуюсь, мне vim-а с лихвой хватает, но у меня и область специфическая.

По поводу инструмента для проверки C++ гайдлайнов, то Страуструп с Саттером говорили о том, что они специально составляют их таким образом, чтобы часть правил могла быть проверена автоматическими инструментами. Первую подобную реализацию выкатил Микрософт, что не удивительно, т.к. там Саттер работает и наверняка приложил к этому руку. Будет ли реализация от MS куда-то портирована — хз. С одной стороны, это крючок, на который MS цепляет пользователей VisualStudio. С другой стороны, MS сейчас пытается расширить в VS поддержку других платформ, для чего даже подтаскивает clang в качестве фронт-энда для своего VC++ (правда сам пока этот вариант не пробовал в деле), так что может и свой чекер куда-нибудь портируют или же полностью откроют.

Так же есть вероятность, что изрядная часть правил из C++ гайдлайнов со временем будет поддерживаться clang-овским статическим анализатором. Но когда это произойдет не знаю, не слежу за развитием компиляторов.

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

А можно подумать что точно так же нельзя погрязнуть в шаблонах

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

вообще, конечно, забавно как некоторые воспринимают наезды на их любимый недоязык так близко к сердцу

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

даже не пытаются привести какие-то аргументы

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

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

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

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

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

Ну давай, тыкни мне. Мне очень интересно.

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

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

У императивщины такой проблемы нет - гцц компилирует сишку 100кстрок/с на тачке за 200бачей с запасом по памяти в районе порядка на оперативе в районе десятка гигов. Где-то на лоре есть мои бенчи.

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

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

Т.е. специализация шаблонов на уровне только переменных. Зачем оно нужно? Если с нормальным доступом к метаинфе с внятном компилтайме - я могу как мне надо преобразовывать код в компилтайме?

typeshit(a, b, c) {
  //я должен мочь посмотреть типы переменных, которые ко мне пришли.
  //можно задать и allowlist и прочее - что мне нужно и как. В зависимости от того где я как я.
  //я выбрал готовую специализацию, либо запилил здесь свою - это не важно.
  //вернул спокойно скобочки - вот тебе и шаблончики.
}

Точно так же ничего не мешает делать:
typeshit(1, 2, 3) = super123; С возможно смешной аргументов, дополнением аргументов.

Всё - тут идеальное куллстори. Вменяемые алиасы для типов данных, именно данных.

Ведь проблем с этим дерьмом выше крыши. Как тайпдеф - т.е. вменямая система метаинфы.

a = typeshit(10);//дерьмо - чего 10?
a = typeshit(10 обезьян), либо (обезьян)10, либо через суфиксы или как там новые куллфичи называются.

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

Мне не побоку когда кто-то, не осилив

Давай ты не будешь кукарекать про это, когда сам не соответствуешь. Я могу про это кукарекать - ты нет. Твоё осиливание императивщины нище уровня моей пятки, но я же тебя в этом не виню?

а вдобавок ещё и придумывать им замену «без фатальных недостатков».

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

Зачем мене получать столько анальной боли, чтобы получить убого дерьмо? Я так понимаю, если мы кукарекаем о шаблонах в широм смысле, как о метапрограммировании, то они в дерьме. Да и как интерфейсы - они дерьмо, да и мне они не нужны.

Ты можешь поискать недостатки в моём описании. Мне даже интересно, правда.

Аргументы можно привести на неверное утверждение

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

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

Далее - если ты можешь - тебя никто не победит и ты помножишь на ноль неугодный тебе высер - если тебя победят, то ты не имеешь права оценивать чей-то высер на тему, ибо некомпетентен. Понимаешь в чём штука?

anonymous
()

А я как раз думал - кого в треде не хватает?

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

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

То есть банальный вектор ты бы писал отдельно для каждого типа или как?

a = typeshit(10 обезьян), либо (обезьян)10, либо через суфиксы или как там новые куллфичи называются.

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

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

Вот у меня жопа горит от убогости сишки

а что, уже есть достойный, НЕ убогий ЯП?

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

Ну вообще, хоть мне и нравятся шаблоны в C++ (они далеко не идеальны, дохрена спорных моментов, но все, что есть в распространенных языках еще хуже), но по-моему комбинаторный взрыв в С++11 можно получить как нефиг делать - просто без меры использовать variadic template, где надо и где не надо. В большинстве случаев они реализуются рекурсивно, поэтому для каждой комбинации параметров будет генерироваться куча инстанцированных типов/функций.

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

Если я приведу один пример, над которым в свое время работал исключительно из академического интереса

Это краткая предыстория 90% статей про C++11

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

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

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

Самое незабываемое воспоминание — шаблонная рекурсия вместо virtual для организации полиморфизма, из-за которой три класса превратились в нечитаемый монолит на 5000 строк.

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

Продакшен код всегда пишется несколько не так, как исследовательские статьи

Однако внешнее впечатление и мода задаются именно такими статьями. Многие новички пытаются повторить и пишут примерно-как-авторы-библиотек, а на самом деле совсем не так и очень плохо. И включать мозги тут бесполезно, потому что логично учесть чужое мнение, а чужое мнение — вот оно, в статьях про компиль-тайм вычисления.

Я ни разу не видел программу, тормозящую из-за отсутствия компиль-тайм вычислений всего и всюду.

P.S. На грабли натыкаются даже опытные и талантливые программисты. Мой прямой начальник когда-то обожал всё делать в виде шаблонных RAII-классов в стиле ATL/WTL, причём шаблон потом специфицируется либо true (если деструктор должен удалять ресурс), либо false (если не должен).

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

Я ни разу не видел программу, тормозящую из-за отсутствия компиль-тайм вычислений всего и всюду.

А программу, тормозящую из-за отсутствия компайл-тайм вычислений кое-чего кое-где, ты видел?

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

Слышал, что уже про паттерны давным-давно на собеседованиях по C++ не спрашивают.

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

В другой контроле C++-код уже был легаси — всё новое только на Unity3D. В третьей только начинали делать на Qt в стиле «чукча не читатель».

quiet_readonly ★★★★
() автор топика

Это все касается не только С++. Как любит говорить один мой коллега — «все дело в качестве инженеров»

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

Ггг, царь сишки настолько велик, что специализирует шаблоны без канпелятора. Прав все-таки тот анон, что советовал подождать пока поциент выйдет из анальной стадии и научится канпелятор запускать.

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

Если из него ещё и шаблоны убрать, получится что-то уж совсем а гранью.

А если после этого убрать классы, то получится няшная сишечка

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