Здравствуйте, Shmj, Вы писали:
S>Вот вам парсер-калькулятор строк в компил-тайме, все как вы любите:
S>И вопрос — как такое отлаживать по шагам?
Также, как я ядро Линукса, например. Тот, кто такое может написать, тот и отладить сможет. А кто не может, тому надо сначала научиться писать, а потом уже отлаживать.
Здравствуйте, Shmj, Вы писали:
S>Вот вам парсер-калькулятор строк в компил-тайме, все как вы любите:
Продолжаешь демонстрировать непонимание. Путаешь цели и средства.
S>И вопрос — как такое отлаживать по шагам?
Это далеко не первый вопрос, который возникает при взгляде на этот код. Первый вопрос — какие задачи решает данный инструмент. И если на этот вопрос имеется ответ, то второй вопрос отправляется отдыхать, как дурацкий. Как отладить и покрыть тестами тот или иной инструмент, всегда можно найти способы. Поэлементно, как же ещё.
А если на первый вопрос ответа нет, тогда тем более второй вопрос отпадает. То есть, ты задал ещё один дурацкий вопрос, так получается.
Ну и вообще, какой-то чайник чё-то наговнокодил, а ты теперь спрашиваешь с нас, как это отлаживать, вроде это какой-то эталонный образец компайл-тайм вычислений. Не в огорчение тебе будет сказано, этот код далёк от эталонного. Вот некоторые моменты, которые бросаются в глаза даже при беглом ознакомлении:
Во-первых, calc_v тоже следовало бы защитить констрейнтом:
template<auto Lit>
requires ValidExpr<Lit>
using calc_v = std::integral_constant<unsigned long long, calc<Lit>::value>;
Чтобы при ошибках пользователя компилер тыкал своим толстым пальцем в ошибки пользователя, а не в "плохой" calc_v. Чтоб не в "потроха", как любит говорить Слонёнок, на которого мы не будем показывать пальцами. Но это мелочи, пока что.
Во-вторых, с литералом перемудрили — использовали нестандартное расширение, чем сделали необоснованно жёсткую привязку к компайл-тайму и накрыли медным тазом портабельность. Не нашли другого способа, как задать компайл-тайм строку, блин. Я думаю, можно было тупо std::string заюзать, при нормально заточенных руках и сделать этот парсер применимым как в компайл-, так и в ран-тайме:
И тогда любой Шмж мог бы проитись по этому коду с дорогим его сердцу интегрированным отладчиком.
В-третьих, расширямость и декомпозиция задач в реализации этого инструмента оставляет желать лучшего. Копипаста там и сям. Взгляни, например, на term и expr — они же совпадают чуть ли не полностью. Не хватило мозгов (или желания) отделить специфику и приоритеты операций от общего парсинга. Я уже молчу про AST, построение которого, по-хорошему, следовало бы отделить от вычислений.
Тебе кажется, что если тебе попался какой-то код с шаблонами, который тебе трудно понять, то это повод пойти на РСДН и что-то предъявить? Нет, дорогой, профессионализм — это способность делать сложные вещи просто, а не простые сложно.
--
Справедливость выше закона. А человечность выше справедливости.
Здравствуйте, Shmj, Вы писали:
S>Здравствуйте, Doom100500, Вы писали:
D>>Нихрена не понял, зачем всё это? Разве так не компайл таим?
S>Так то ж из строки — можете добавить свои кастомные операторы, к примеру. Возможно даже свой Python закодить.
Это ж из compile-time строки. Т.е. строки — прямо написанной в коде. Не прочитанной из конфига, не полученное по апи. Захардоженнная строка.
Зачем в compile-time разгребать строки с арифметическими выражениями, если можно, вместо строки, тожно также захардкодить выражение.
Смысл этого только академический — такой-же, как и в compile-time факториале. Для того, чтобы сказать: "смотрите как я умею"
Здравствуйте, rg45, Вы писали:
R>Тебе кажется, что если тебе попался какой-то код с шаблонами, который тебе трудно понять, то это повод пойти на РСДН и что-то предъявить?
это больно похоже на ChatGPT. И относится к этому надо так же. Сейчас любой Шимжа (не в обиду будь сказано) сможет наваять такой код, но не сможет его отлаживать Ну может это и не надо. Тут задача не такая сложная, тут ИИ вполне может довести до финального решения.
Здравствуйте, sergii.p, Вы писали:
SP>это больно похоже на ChatGPT. И относится к этому надо так же. Сейчас любой Шимжа (не в обиду будь сказано) сможет наваять такой код, но не сможет его отлаживать
Я уж было подумал, что он сам его написал. Если б сам — то респект, ибо наконец-то освоил ЯП на должном уровне, и не важно, что нет практического применения данному коду или что он не идеален — уже за одно только развитие в освоении языка можно похвалить.
Если не сам написал — то зачем сюда это принёс? Чтобы спросить, как это отлаживать? Ну так и надо было тему озаглавить, а то сейчас выглядит будто "я что-то написал и могу поделиться этим со всеми — вот только я не знаю, как это работает и как это отлаживать"
Здравствуйте, Doom100500, Вы писали:
D>>>Нихрена не понял, зачем всё это? Разве так не компайл таим? S>>Так то ж из строки — можете добавить свои кастомные операторы, к примеру. Возможно даже свой Python закодить.
D>Это ж из compile-time строки. Т.е. строки — прямо написанной в коде. Не прочитанной из конфига, не полученное по апи. Захардоженнная строка. D>Зачем в compile-time разгребать строки с арифметическими выражениями, если можно, вместо строки, тожно также захардкодить выражение. D>Смысл этого только академический — такой-же, как и в compile-time факториале. Для того, чтобы сказать: "смотрите как я умею"
Подъедет "#embed" — можно будет разбирать то, что во внешнем ресурсе содержится.
Здравствуйте, flаt, Вы писали:
F>Если не сам написал — то зачем сюда это принёс? Чтобы спросить, как это отлаживать? Ну так и надо было тему озаглавить, а то сейчас выглядит будто "я что-то написал и могу поделиться этим со всеми — вот только я не знаю, как это работает и как это отлаживать"
Ну, о его мотивации можно догадаться по первому же предложению: "все как вы любите". Он пришёл с очередным риторическим вопросом. Мол, видите, отлаживаться невозможно, значит, говно этот ваш компайл-тайм, шаблоны говно и С++ тоже.
--
Справедливость выше закона. А человечность выше справедливости.
Здравствуйте, McQwerty, Вы писали:
D>>Это ж из compile-time строки. Т.е. строки — прямо написанной в коде. Не прочитанной из конфига, не полученное по апи. Захардоженнная строка. D>>Зачем в compile-time разгребать строки с арифметическими выражениями, если можно, вместо строки, тожно также захардкодить выражение. D>>Смысл этого только академический — такой-же, как и в compile-time факториале. Для того, чтобы сказать: "смотрите как я умею"
MQ>Подъедет "#embed" — можно будет разбирать то, что во внешнем ресурсе содержится.
Здравствуйте, rg45, Вы писали:
R>Ну, о его мотивации можно догадаться по первому же предложению: "все как вы любите". Он пришёл с очередным риторическим вопросом. Мол, видите, отлаживаться невозможно, значит, говно этот ваш компайл-тайм, шаблоны говно и С++ тоже.
Вообще C++ возможен и без неудобоваримых компил-таймовых конструкций. И тогда он довольно не плох. Основной плюс — можно написать код и использовать на всех 6-ти платформах из всех ЯП без заморочек + на всех архитектурах. И это 100% работает — я так делал.
А вот можно ли на других языках — на том же C# — ну покажите мне библитоеку, которая достигла такого уровня. Не верю. Чтобы реально компилилась под все платформы и ее использовали — не была от 50 МБ размером — не верю.
На Rust вроде можно, но тоже не факт что все гладко. Да и сам Rust как язык — ничем не лучше.
Здравствуйте, Muxa, Вы писали:
S>>Вообще C++ возможен и без неудобоваримых компил-таймовых конструкций. M>А их обязательно использовать или по желанию?
По желанию. Причем многие уже не актуальны в связи с введением упрощающих конструкций в новых версиях.
Здравствуйте, Shmj, Вы писали:
R>>Ты дорасти сперва, хотя бы до уровня джуна, потом рассказывай, что плохо, что хорошо.
S>Ваши оценки — основаны на личности и авторитете. Я же призываю вас смотреть не кто говорит — а что говорит.
Так мы и смотрим не на то, кто ты, а на то, что ты несёшь. А несёшь ты дичь
Здравствуйте, Marty, Вы писали:
S>>Ваши оценки — основаны на личности и авторитете. Я же призываю вас смотреть не кто говорит — а что говорит. M>Так мы и смотрим не на то, кто ты, а на то, что ты несёшь. А несёшь ты дичь
Вообще вопрос личности поднимать не нужно — говори по сути. По сути что хотел сказать? В чем дичь?
Ты доказал что являешься гомо и умеешь встраиваться в соц. иерархию (п. 3 по Савельеву — соц. доминирование). А теперь докажи что ты сапиенс: https://rsdn.org/forum/design/8928077.1