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

С++ избавится от протухшего препроцессора

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

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

речь не о необходимости знания пл/и сущьностно - а истории появления и бытия пл/и , истории появления 68алгола и не взлёта

Я знаю истории обоих языков.

опять же смотри как менял свой маркетинг Страуструп продвигая язык что в разные года он считал сильными сторонами - и как они в его спичах морфировали(в дизайне и филосифии это есть).

Я спросил, где ты видишь аналогии с PL/I и Algol68. Так где?

поэтому и стоит при использовании языка по возможности дисциплинировать себя минимумом стабильным.

Ага. Например, requires.

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

аналогии с PL/I и Algol68

выше по треду было утверждение о наличии аналогии с++ с pl/1 и скорее противопоставление краха алгол68 с успехом плюсов.

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

далее параллели между успешно взлетевшими(++пл/1):

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

зы. про рекваярс(пожелания-требования) - в буклете это пока(на тот момент) по факту комментарии-документации с надеждой в дальнейшем наличия транслятора который будет чекать таковые пожелания (линт очередной крч)

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

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

Для Си++ такой компилятор был в 1985 году, еще _до_ публикации первой редакции книги Страуструпа.

(плюсы так вообще начинали как пропатченный препроцессор над сишкой)

Ну и что? Это был вполне настоящий компилятор, просто на выходе был не ассемблер, а Си.

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

Латынь, греческий... в PL/I были путаные правила определения типа переменных, если он не указан явно. Ничего подобного в Си++ нет и не было.

У Си++ и PL/I с Algol68 общего только одно - сложность. И то Algol68 в свое время реализовать в полном объеме тупо не смогли - в отличие от Си++.

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

(type *)void * - почему этот интерфейс не может хранить «однотипные объекты»?

Потому что это неудобно и надо кастовать туда/сюда постоянно? Плюс дополнительная возможность для ошибки, что тоже важно, хотя тебе похоже не понять.

Это можно сделать на любом дерьме - это никого не интересует.

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

А если мне нужно 2 тега? А 10?

А в чём проблема?

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

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

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

Ну и что? Это был вполне настоящий компилятор, просто на выходе был не ассемблер, а Си.

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

в С++ до сих пор достаточно мест(поэтому то и следует как вариант придерживаться кодагида писаного годными ассами ) где отсутсвует нормативное определение какой же вариант разбора крокодила эталонный.

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

надо кастовать туда/сюда постоянно

Вообще-то в сишке ничего кастовать из/в void* не нужно (GCC переходит на С++ компиляцию самого себя с целью улучшения качества кода (комментарий) и дальше по треду). А вот с типобезопасностью всё действительно плохо.

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

И это - одна из его бед.

Это обратная сторона обратной совместимости.

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

Итого, в сухом остатке: вы заявили, что имеет смысл ограничится некоторым подмножеством языка C++, описанным в приложении B.1 книги Elements of Programming от 2009-го года.

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

Отсылки к истории PL/1 и algol68 у меня лично (да и не только у меня) вызывают недоумение: этом может быть и интересно в философском смысле, но совершенно бесполезно в качестве критерия, скажем, чтобы принять решение, использовать ли в каком-то конкретном случае CRTP или же это неразумно.

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

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

Потому что это неудобно

Меня не интересуют твои нулёвые интепретации и мнения.

и надо кастовать туда/сюда постоянно?

Очередная жертва некомпетентности.

Плюс дополнительная возможность для ошибки

Какой именно ошибки - удиви меня.

что тоже важно, хотя тебе похоже не понять.

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

Ведь ты сказал не «более „безопасная“, более „удобная“» - ты сказал именно для, т.е. приравнял средство к факту. Я тебе на это указал и ты продолжаешь мне твердить о том, что мой вариант какой-то не такой. Зачем? Ты действительно не понимаешь в чём твоя проблема?

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

На любом где есть классики/структурки. В целом замена типа-значение на тип-структуру/классик реализуется везде.

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

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

А в чём проблема?

Ну первая ссылка в гугле на буст таким функционалом не обладает.

В остальном отвечать нет никакого желания.

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

Ты просто помножил себя на ноль. Твоё мнение стоит что-то, либо ничего не стоит? Если не стоит, то какого отношения ты можешь от меня требовать к себе, а если стоит - покажи это.

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

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

И вот опять тот же вопрос - зачем ты это написал? Адекватно и нормально не отвечаешь мне ты - я не знаю почему. Ты либо реально такой нулёвый, либо просто притворяешься. Фактом твоих утверждений, т.е. явным намёкам на твою компетентность - ты определил себя как не нулевым и я вынужден относится к тебе, как к «ненулёвому».

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

Правда это только у тебя в глазах выглядит как «всех обоссал» на самом деле ты сам дерьмом обмазываешься.

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

А обмазался дерьмом я - ну да, конечно.

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

Я тебе уже популярно объяснил - почему твои выводы дерьмо - я жду ответа. И про твой некомпентный пердёжь про самолёты и прочее.

«инструмент (шаблоны) не решает всех проблем - значит он говно»

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

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

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

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

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

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

Важен не факт написания, а факт уникальности. 100% пишут код - это по умолчанию. Как другая обезьяна метёт улицу, либо пишет текста на на обычном языке - это не важно. Пока не определишь ту причину, почему код писать лучше, чем драить сортиры - ты будешь эквивалентен любой заедушной обезьяне.

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

Поэтому факт писания кода/сортиров определён внешней средой и от тебя никак не зависит и к тебе никак не относится. Без определения и обоснования того, что писая код - ты лучше, чем драильщик сортиров - вы эквивалентны.

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

А так да - привыкай. В мире так и есть - факт деланья дерьма ничем не отличается от факта ничего не деланья.

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

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

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

Хотя казалось бы - вы живёте в мире и видите, что трусы - это не достижение, ибо есть у всех, а вот машина - это достижение, ибо есть не у всех. Поэтому планктонятина так любит кредитные пустые фокусы - ведь я среднийкласс, нахрен. Вы понимаете, что достижением является что-то не по факту наличия чего-то, а по факту трудозатрат/редкости в получении чего-то.

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

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

На какой уровень - какой у тебя уровень? Что ты мне можешь противопоставить?

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

Причём все оценки, в первую очередь, эмоциональные.

Приведи пример «эмоциональной» оценки. Это вроде должно быть просто - я даю тебе шанс.

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

Тебе так же популярно объяснили - для чего используются шаблоны и для чего они хоть как-то годны - это обобщенные интерфейсы для нулей.

Уймите свой словесный понос и покажите пример кода: вот, мол, убогий код на шаблонах для нулей, а вот как это должно быть на самом деле.

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

Для Си++ такой компилятор был в 1985 году, еще _до_ публикации первой редакции к

в отличии от случая с(k&r) c++ по миру пополз широко ещё до первого издания фундаментальной thec++pl

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

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

в отличии от случая с(k&r) c++ по миру пополз широко ещё до первого издания фундаментальной thec++pl

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

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

Вот пожалуйста — простая задача, компайл-тайм счётчик дайте мне

А вот интересно: в каком мейнстримовом статически-типизированном языке (дабы само понятие компайл-тайм имело смысл) есть компайл-тайм счетчик из коробки? И как выглядит его использование в этом языке?

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

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

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

закругляя весь этот спич.

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

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

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

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

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

Как наивно это звучит... :)

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

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

Братишка, я тебе точек и запятых принёс: ......,,,,,

закругляя весь этот спич

Такой спич и раскруглять не стоило.

tailgunner ★★★★★
()

JFI

Вдруг кто не знает, Майерс выпилился из плюсов. Всё пропало, C++17 никто не осилит :D

anonymous
()
Ответ на: JFI от anonymous

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

Че так?

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

Незадолго до этого он предложил сломать совместимость в C++17. Совпадение? Не думаю.

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

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

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

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

С такой формулировкой вопроса - жопа у вас трещит по швам, ибо аргументов, кроме как «ну мне, обезьяне, так проще» - нет. Никого не интресует что там тебе проще.

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

Что тебе не ясно? Ты можешь пойти написать string без ascii-специализаций, показать класс - мне даже ничего писать не надо - это уже написано - ты можешь взять и сравнить.

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

Конкретней. Ты уже ни раз пытался мне кукарекать про «все посты» и прочее, но чёт каждый раз пердел в лужу.

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

статически-типизированном языке (дабы само понятие компайл-тайм имело смысл)

Чисто чтобы придраться - разве динамически типизируемый язык не может иметь стадию компиляции?

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

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

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

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

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

* Механизмы, похожие на шаблоны, широко используются в промышленной разработке софта, как минимум, с середины 80-х: начиная с Ada, затем C++, затем Eiffel, затем Java (ведь изначально там генериков не было, пришлось добавлять), затем C# (фактически, во второй версии языка). В С++ шаблоны нужны много для чего, например, дабы не писать лишнего.

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

Чисто чтобы придраться - разве динамически типизируемый язык не может иметь стадию компиляции?

Т.к. компиляция состоит из разных стадий (лексический анализ, синтаксический анализ и т.д.), то какие-то из этих стадий неизбежно присутствуют при интерпретации кода на динамическом языке. Но, если в динамике есть eval, то там можно делать очень серьезные вещи, например, модифицировать класс прямо по ходу описания класса (как в Ruby или Python-е), что позволяет делать не только счетчики :)

Правильно я понимаю, что твоя позиция в этом вопросе «не нужно»?

Не правильно. Как раз счетчики (то, что сейчас в некоторых компиляторах реализуется через __COUNTER__) вещь нужная и жаль, что ее нет в стандарте. Посему и приходится изобретать костыли.

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

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

Хватит срать простынями пустого текста.

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

anonymous
()
Ответ на: комментарий от eao197
mchain
mbox_core_t::create_mchain(
   environment_t & env,
   const mchain_params & params )
{
   using namespace so_5::mchain_props;
   using namespace so_5::mchain_props::details;
   using namespace so_5::rt::impl::msg_tracing_helpers;

   auto id = ++m_mbox_id_counter;

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

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

Давай я тебе расскажу как это происходило, был код уровня:
mchain( * m_tracer, end, id, params) {
  if(m_tracer) {
    портянка с *_demand_queue
  } else {
    портянка с *_demand_queue
  }
}

После чего амёба решил запихнуть всё это в шаблоны, но не осилилось.

После чего амёбе пришла в пустую черепушку гениальная идея - сделать:

mchain( * m_tracer, env, id, params) {
  if(m_tracer) {
    return (env, id, params){портянка с *_demand_queue;}
  } else {
    return (env, id, params){портянка с *_demand_queue;}
  }
}

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

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

В конечно итоге все его шаблоны сводятся к {[trace] = {0_demand_queue, 1_demand_queue, 2_demand_queue}, [!trace] = {0_demand_queue, 1_demand_queue, 2_demand_queue}}; Т.е. либо к шести функциям без ифов, либо к 3-м с ифами.

tbl[trace, мура с capacity](env, id, params); - это не работает, ибо изначально архитектура дерьмо - это всё превратилось в ифы и смысл таблички потерялся.

Т.е. ифы сворачиваются в 2 параметра, а потом эти параметры разворачиваются в ифы. Зачем нужно их сворачивать, чтобы потом разворачивать - не ясно. Судя потому, что ламерок в mchain_template впиндюрил variadic - он просто узнал про них за партой и решил везде пихать - типичное поведение амёбы.

В конечном итоге ламерок гинерит 3/6функций через шаблоны в кол-ве строк в 5раз большем, чем просто написать эти функции руками.

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

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

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

Любезный, вы бы сперва научились форматировать код в сообщениях согласно правилам LOR-а, а потом уже раскрывали рот. А то высрали что-то нечитабельное.

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

Может тогда вы и покажите, что что-то из себя представляете.

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

Любезный, вы бы сперва научились форматировать код в сообщениях согласно правилам LOR-а, а потом уже раскрывали рот. А то высрали что-то нечитабельное.

Что ещё следовало ожидать - слив засчитан.

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

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

В целом ты сам же загнал себя в угол - молодец.

Может тогда вы и покажите, что что-то из себя представляете.

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

Знай же мразь, ты ничто в сравнении со мною. Абсолютно.

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

И не забудь указывать чем вам «читабельность» конкретно не нравится.

Ваш текст, который вы разместили внутри тега code, уходит за границы фрейма и читать его крайне неудобно.

И как можно сделать это согласно правилам лора.

Размещать внутри code только код, а простыни текста писать просто текстом.

Ламерюга обосана.

Это вы себя пытаетесь убедить в собственной значимости?

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

Т.е. вы не сделали НИЧЕГО.

Так что хватить срать, покажите код.

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

Ваш текст, который вы разместили внутри тега code, уходит за границы фрейма и читать его крайне неудобно.

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

Размещать внутри code только код, а простыни текста писать просто текстом.

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

Это вы себя пытаетесь убедить в собственной значимости?

Стрелки не работают. Не отвечаешь ты, а не я.

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

Ты не смог внятно изложить замечания к моей месаге, ни показать, как она должна выглядеть без «code».

Так что хватить срать, покажите код.

Так что хватить срать, покажи текст.

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

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

Я даже покажу, что ты мразь - чисто ради истории.

anonymous
()
Ответ на: комментарий от eao197
mchain
mbox_core_t::create_mchain(
   environment_t & env,
   const mchain_params & params )
{
   using namespace so_5::mchain_props;
   using namespace so_5::mchain_props::details;
   using namespace so_5::rt::impl::msg_tracing_helpers;

   auto id = ++m_mbox_id_counter;

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

//Далее, типичный пример частных специализаций и
// последующие проблемы с совмещением их 
// c рантайм логикой и одним интерфейсом.

Давай я тебе расскажу как это происходило, был код уровня:

mchain( * m_tracer, end, id, params) {
  if(m_tracer) {
    портянка с *_demand_queue
  } else {
    портянка с *_demand_queue
  }
}
После чего амёба решил запихнуть всё это в шаблоны, но не осилилось.

После чего амёбе пришла в пустую черепушку гениальная идея - сделать:

mchain( * m_tracer, env, id, params) {
  if(m_tracer) {
    return (env, id, params){портянка с *_demand_queue;}
  } else {
    return (env, id, params){портянка с *_demand_queue;}
  }
}
Но и чтобы хоть как-то оправдать свою никчёмность - он эти засунул туда variadic, вместо 2-х функций(лямбд). Типа это не он ламерюга - он просто вначале шаблоны незаюзал, хотя почему он их не заюзал, если они итак понапиханы везде форфан - никто не знает. Т.е. сделал то, что сделал выше я.

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

В конечно итоге все его шаблоны сводятся к:

tbl = { 
  [trace] = {0_demand_queue, 1_demand_queue, 2_demand_queue},
  [!trace] = {0_demand_queue, 1_demand_queue, 2_demand_queue}
}; //Т.е. либо к шести функциям без ифов, либо к 3-м с ифами.
tbl[trace, мура с capacity](env, id, params);// - 
//это не работает, ибо изначально архитектура дерьмо -
// это всё превратилось в ифы и смысл таблички потерялся.

Т.е. ифы сворачиваются в 2 параметра, а потом эти параметры разворачиваются в ифы. Зачем нужно их сворачивать, чтобы потом разворачивать - не ясно. Судя потому, что ламерок в mchain_template впиндюрил variadic - он просто узнал про них за партой и решил везде пихать - типичное поведение амёбы.

В конечном итоге ламерок гинерит 3/6функций через шаблоны в кол-ве строк в 5раз большем, чем просто написать эти функции руками.

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

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

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

Ты не смог внятно изложить замечания к моей месаге, ни показать, как она должна выглядеть без «code».

Вы предлагаете мне переформатировать ваш комментарий? Правильно ли я вас понял?

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

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

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

Собственно очередная мразь изоблачена.

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

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

И ни разу не показали, как без них обходиться.

Я показал, я показал твою убогость - показал уровень тех, кто со мною спорит.

Покажите код без шаблонов. Хоть свой, хоть мой. Без кода ваши высеры идут в корзину.

Как мило, когда мразь кукарекает то одно, то другое. Ты мне там на коммент выше ответил, либо хотя-бы отмазку придумал?

Вместе с убогими попытками оскорбить собеседника.

Нельзя оскорбить мразь назвав её мразью. Как ты себе это представляешь?

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

Ты выкатил сам выкатил пример «как заменить без шаблонов на с шаблонами», а требуешь от меня «без шаблонов» - если то то же было с шаблонами, то в чём смысл твоего постав в убогом божике, а если не было, то в чём смысл твоего высера сейчас?

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

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

Ты зашкварился - всё, ничего твои потуги не стоят пока ты не оправдаешься. Игнорирование, «чукча не читатель», «чукча не понимать» и прочие куллстори не работают.

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

Посему не следует говорить, что C++ говно, т.к. в нем нет того-то и того-то.

Согласен, но в противоположную крайность тоже впадать не надо.

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

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

Легко: " Тебе там белым по серому написано, что шаблоны не нужны в следствии того, что сам высер для которых они требуются - не нужен."

Ты мне там на коммент выше ответил, либо хотя-бы отмазку придумал?

На что отвечать, вот на эту херню? Это очередной пустой высер.

Вот это, по-вашему, код?

tbl = { 
  [trace] = {0_demand_queue, 1_demand_queue, 2_demand_queue},
  [!trace] = {0_demand_queue, 1_demand_queue, 2_demand_queue}
}; //Т.е. либо к шести функциям без ифов, либо к 3-м с ифами.

tbl[trace, мура с capacity](env, id, params);// - 
//это не работает, ибо изначально архитектура дерьмо -
// это всё превратилось в ифы и смысл таблички потерялся.
Это даже на зачатки потока сознания не тянет.

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

Покажите аналог без шаблонов. Код. Просто код.

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

Легко: " Тебе там белым по серому написано, что шаблоны не нужны в следствии того, что сам высер для которых они требуются - не нужен."

Нет, мразь. Это должно быть того, как ты начал это кукарекать не после.

Да и даже тут обделался, ибо из цитатки следует, что «шаблоны не нужны» - я не писал и что это следует из «не нужен тот высер, для которого они требуются».

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

На что отвечать, вот на эту херню? Это очередной пустой высер.

И в очередной раз - пёрднул в лужу. Ну дак разоблачи его - вперёд.

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

Вот это, по-вашему, код?

Да, это код, вернее псевдокод описывающий твоё дерьмо. Это даже валидный сишный диалект.

В целом амёба не может в код, поэтому рассуждать об этом нет смысла.

Это даже на зачатки потока сознания не тянет.

Это даже на попытки внятно слиться не тянет. Там есть и другой код - чтож ты его не запастил.

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

Нет, амёба. Ты мне показал дерьмо и тебя показал и рассказал причину, по которой ты его написал.

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

Зачем ты продолжаешь мне что-то писать, если ты уже понял, что обделался?

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

Покажите аналог без шаблонов. Код. Просто код.

Аналог тебе показали - там выше.

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

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

Это должно быть того, как ты начал это кукарекать не после.

Неужели это жалкое подобие царя сливается и ищет отмазки посте того, как его макнули в его же слова?

Аналог тебе показали - там выше.

Код покажите. Без кода нет разговора.

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

Неужели это жалкое подобие царя сливается и ищет отмазки посте того, как его макнули в его же слова?

Слив засчитан.

Код покажите. Без кода нет разговора.

Слив засчитан.

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

Слив засчитан.

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

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

А никто и не сомневался, что якобы царь не может писать код.

На то он и царь, лол. Не царское это дело — писать холопский код ;)

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

Балаболка пластмассовая. Именно не можешь. Твой удел - говнистые комментарии мимо кассы.

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