Пт янв 28, 2022 13:36:34
Пт янв 28, 2022 17:54:17
ПростоНуб писал(а):Если же речь про параметр value, то в упор не понимаю, в чем тут разница между передачей указателя по значению в С и передачей ссылки в С++, которая в скомпилированном коде так же будет передаваться по значению адреса (того же значения указателя) в ней содержащегося.
ПростоНуб писал(а):Другое дело, что при жестких требованиях к производительности и памяти, не возникает никакого желания тащить такого монстра, как from_chars, себе в код. Например, зачем мне куча кода для парсинга чисел по основанию 36, если мне нужен парсинг только целых десятичных чисел? Как это не компилируй, но ворох лишнего кода всегда прибежит.
ПростоНуб писал(а):Было бы смешно, если не было бы так грустно. Для примера, в MS SQL, PostgreSQL или Oracle подключить скомпилированное расширение в виде so/dll - элементарно, причем динамически без остановки сервиса. Потому что они написаны на C и ABI стандартизирован. А вот к Clickhouse - только с полной перекомпиляцией всего Clickhouse и рестартом сервиса, так как он написан на C++, а ABI в C++ меняется даже от версии к версии одного компилятора, не говоря уже о разных.
Тоже самое можно сказать и про ESP32, и про старшие МК на ARM, где расширения могут быть востребованы. а полная рекомпиляция или не желательна, или даже невозможна, так как все исходники недоступны.
ПростоНуб писал(а):Речь не о простоте для изучения (не думаю, что к C это относится, так же, как, для примера, к Lisp). А о простоте синтакиса.
Пт янв 28, 2022 20:14:18
Пт янв 28, 2022 20:37:56
import core.std;
Сб янв 29, 2022 11:44:52
Reflector писал(а):надежность и производительность будет под вопросом.
Reflector писал(а):Во-первых, то что там много шаблонного кода(еще и проскакивают constexpr функции) еще не означает, что хоть какой-то код имеющий отношение к парсингу чисел по основанию 36 попадет в бинарник.
Reflector писал(а):эта и множество других функций уже написаны профессионалами и доступны всем желающим
Reflector писал(а):В-третьих, далеко не факт, что другие функции, в том числе сишные, лучше справятся с парсингом чисел с плавающей точкой...
Reflector писал(а):ПростоНуб писал(а):Было бы смешно, если не было бы так грустно. Для примера, в MS SQL, PostgreSQL или Oracle подключить скомпилированное расширение в виде so/dll - элементарно, причем динамически без остановки сервиса. Потому что они написаны на C и ABI стандартизирован. А вот к Clickhouse - только с полной перекомпиляцией всего Clickhouse и рестартом сервиса, так как он написан на C++, а ABI в C++ меняется даже от версии к версии одного компилятора, не говоря уже о разных.
Тоже самое можно сказать и про ESP32, и про старшие МК на ARM, где расширения могут быть востребованы. а полная рекомпиляция или не желательна, или даже невозможна, так как все исходники недоступны.
О чем и речь, к мк все сказанное практически никакого отношения не имеет
Reflector писал(а):Только не нужно Линуса приплетать
Сб янв 29, 2022 13:14:31
Сб янв 29, 2022 14:05:14
Сб янв 29, 2022 16:18:52
ПростоНуб писал(а):Уже видно по исходникам, что рассматриваемая from_chars() сделана излишне универсальной и перегруженной.
PerfCounter perf;
perf.start();
static char arr[] = "1234567890";
volatile int val = atoi(arr);
auto t = perf.getElapsedTicks();
rtt.println(t, val);
ПростоНуб писал(а):Во-вторых, плата за это - когда проект собирается даже на выделенном сервере часы. Тогда невольно жалеешь, что это не C, собирающийся по сравнению с C++ моментально, если не были затронуты корневые включаемые файлы, что происходит очень редко. Пробовали сделать крупный проект на QT? Сколько он собирался?
ПростоНуб писал(а):А как он не попадет, если base будет переменная? Я могу ограничить пользователя, например, base<=10 при вводе, но у меня большие сомнения, что оптимизатор настолько умен, что не только увидит и запомнит это ограничение, но еще и применит его при оптимизации case в __to_chars_i()
ПростоНуб писал(а):Вас несет. Возьмите и сравните c atof, как по размеру кода, так и по производительности, и уже после этого рассуждайте. А то уж очень демагогией попахивает. Если ничего не делать. то все будет "далеко не факт".
ПростоНуб писал(а):Для имеющих проблемы со зрением использовал полужирное начертание )))
ПростоНуб писал(а):Почему это не надо? Он достаточно четко выразился, что один и тот же код в C++ может, в зависимости от контекста, выполнять совершенно разные действия. Вы же сами это пропагандируете шаблонами. Вот только это очень удобно при написании программы, но сильно повышает трудоемкость при ее сопровождении, что как раз и подчеркнул Линус. Например, я сам не раз сталкивался с совершенно негуманоидой логикой реализации операций сложения или сравнения для некоторых объектов некоторыми программистами.
return sck | miso | mosi | nss;
constexpr auto f1 = sin(1.2345f);
constexpr auto f2 = sin(Fixed<12>(1.2345f));
rtt.println(f1, (float)f2); // 0.94398332, 0.94397926
Сб янв 29, 2022 16:35:15
Вс янв 30, 2022 12:11:16
template<typename T, std::size_t N>
constexpr std::size_t inline size(const T(&)[N]) { return N; }
int arr[10];
int arr2[size(arr)];
Вс фев 06, 2022 21:24:35
static inline void clear() requires requires() { base()->BRR; }
{
base()->BRR = pin_mask;
}
static inline void clear()
{
*((volatile uint16_t*)&base()->BSRR + 1) = pin_mask;
}
Вс фев 06, 2022 22:14:46
Вс фев 06, 2022 22:24:12
Вс фев 06, 2022 22:50:59
void foo(auto val) requires requires() { val.brr; } {}
void foo(auto val) {}
static void foo(HasBrr auto val) {}
static void foo(std::integral auto val) {}
static void foo(auto val) {}
Вс фев 06, 2022 22:57:26
Вс фев 06, 2022 23:06:16
void foo() requires true {} // Error: constraints on a non - templated function
class Foo
{
public:
void bar()& { rtt.println("foo&"); }
void bar()const & { rtt.println("foo& const"); }
void bar()&& { rtt.println("foo&&"); }
};
Foo foo;
foo.bar(); // "foo&"
constexpr Foo fooc;
fooc.bar(); // "foo& const"
Foo{}.bar(); // "foo&&" (временный объект)
Пн фев 07, 2022 00:48:16
static inline void clear()
{
if constexpr(requires(){ base()->BRR; })
base()->BRR = pin_mask;
else
*((volatile uint16_t*)&base()->BSRR+1)=pin_mask;
}
Пн фев 07, 2022 01:20:36
Пн фев 07, 2022 07:21:14
Пн фев 07, 2022 10:01:06