Здравствуйте, alpha21264, Вы писали:
A>А зачем нужно такое средство, при котором увеличивается сложность понимания и отладки? A>Ведь сложность понимания для программиста — один из важных параметров, если не самый важный.
Сложность просто повышает порог входа для специалиста. Если бы все было просто, вознаграждение программистов было бы весьма низким
A>Вопрос-то был не про это. Не про то, нужны ли ли не нужны шаблоны. Допустим, нужны. A>А про то, как вы их используете.
В соответствии с их предназначением. Если не боитесь прослыть национал-предателем, можете почитать вражеские книги Александреску, Мейерса и Саттера. Там более менее разжевано. Гораздо более эффективный вариант — сделать быстрое ревью на гитхабе какого-нибудь блинка.
Здравствуйте, alpha21264, Вы писали:
A>Вот дожил до 45 лет и не знаю, зачем в С++ шаблоны.
дожил до 80 лет, но так и не понял зачем все эти формульные трансляторы? простой пример — моя программа ищущая дубликаты данных, работает со скоростью один байт/такт, а вражеская созданная компилятором — втрое медленней. недавно читал статью с FAST'12, где этот алгоритм перенесли на GPU поскольку на CPU он видите ли лажает. а всё потому что нынешняя молодёжь не умеет в машкодах писать
в общем, я считаю что компиляторы и калькуляторы — это зло. и начать бороться с ними надо с детсада. вместо айфона выдавать каждому ребёнку бз-34, это и для мускулов нагрузка, и для ума
всяких сопливых детей младше 80 прошу в тему не писать
Здравствуйте, BulatZiganshin, Вы писали:
BZ>в общем, я считаю что компиляторы и калькуляторы — это зло. и начать бороться с ними надо с детсада. вместо айфона выдавать каждому ребёнку бз-34, это и для мускулов нагрузка, и для ума
бз-34 раслаюляет, тк в системе команд даже * и "/" есть, обратная польская запись, нормальный индикатор, клавиатура и БП от холодильника не сбрасываеться
лучше ИК80 без ROM, с поразрядным вводом и контролем на светодиодах (видел такую систему, занрузчик монитора с перфоленты по понедельникам вносили вручную)
Здравствуйте, Lazin, Вы писали:
A>>Вот дожил до 45 лет и не знаю, зачем в С++ шаблоны. L>Для того, чтобы потом офигевать от мегабайтных ошибок компиляции.
Ты их просто overcook
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
А не надо использовать стандартные библиотеки. Они на то и стандартные чтоб покрывать как можно бОльшую площадь платформ, оттого работают на них одинаково плохо и спроектированы по общему знаменателю.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
CC>А не надо использовать стандартные библиотеки. Они на то и стандартные чтоб покрывать как можно бОльшую площадь платформ, оттого работают на них одинаково плохо и спроектированы по общему знаменателю.
Да-да, надо использовать самописные с непонятным интерфейсом и никому не известным количеством внутренних багов!
А вот у меня вот так все отлично работает, аж в двух вариантах:
auto ns1 = chrono::duration<double, nano>(end - start).count();
auto ns2 = chrono::nanoseconds(end - start).count();
Не говоря уже о том, что даже в стандартной поставке есть сразу 3 таймера: system_clock, steady_clock, high_resolution_clock (и реализация/платформа может добавить свои, если они есть, с внешнего генератора, например).
Я вообще фигею просто. Сначала кричат, что стандартная библиотека плохая, потому что в ней всего один генератор псевдослучайных чисел, взыскательных пользователей не удовлетворяет.
Ладно, дают им на выбор туеву хучу оных (побогаче, чем в Rust): http://en.cppreference.com/w/cpp/numeric/random — на выбор и алгоритмы (включая аппаратный источник!), и распределения (штук двадцать!)
Так нет же, опять крик: теперь заставляют выбирать!
Вы, блин, определитесь уже наконец, что вам нужно — функциональный инструмент или поделка для домохозяек из серии "640к хватит всем".
Не говоря уже о том, что если ты собираешься использовать один единственный генератор, то просто делаешь
И тем более уж не говоря о том, что если ему нужно генерить простые инты, а не обобщенное хз что из mt19937 (у которого, к слову, result_type прописан в Стандарте), то достаточно просто написать uniform_int_distribution<> и не парить никому мозг страшным mt19937::result_type.
И, опять же, не говоря о том, что и в Rust полноценная генерация совсем не короче, чем плюсовая версия:
use std::rand;
use std::rand::distributions::{Normal, IndependentSample};
// mean 2, standard deviation 3let normal = Normal::new(2.0, 3.0);
let v = normal.ind_sample(&mut rand::task_rng());
#include <random>
std::mt19937 gen(std::random_device()());
// mean 2, standard deviation 3
std::normal_distribution<> normal(2,3);
auto v = normal(gen);
CC>А не надо использовать стандартные библиотеки. Они на то и стандартные чтоб покрывать как можно бОльшую площадь платформ, оттого работают на них одинаково плохо и спроектированы по общему знаменателю.
Можно ткнуть пальцем, в каком месте chrono/random работают плохо?
Здравствуйте, jazzer, Вы писали:
J>Можно ткнуть пальцем, в каком месте chrono/random работают плохо?
К рандому у меня лично претензии performance плана: правильная реализация Mersenne на моей машине выдаёт ~7.8 Gb/s fillrate (2Gb за 0.254 сек). Библиотечный до этого "несколько" не дотягивает.\
Колво разных генераторов — радует. Но код внутри оставляет ощущение overcomplicated и overengineered.
chrono просто overcomplicated. Ну и по качеству реализации тоже так себе: в гнусной версии это просто обёртка над time_t, какой там HRT. На винде в код не смотрел, но HRT выдаёт очень даже low resolution значения. Я интринсиками или системным API получаю более точные цифры.
Если заглянуть в код то, если цензурно, "сложно о простом" будет самым точным описанием. Там Александреску не просто укусил, он авторов грыз походу недели две а то и больше.
Как generic библиотеки они ОК.
Но есть лучше.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, jazzer, Вы писали:
J>Не говоря уже о том, что даже в стандартной поставке есть сразу 3 таймера: system_clock, steady_clock, high_resolution_clock (и реализация/платформа может добавить свои, если они есть, с внешнего генератора, например).
Дада, стандартная поставка.
typedef system_clock high_resolution_clock;
По умолчанию даже монотоник на system_clock завёрнута.
J>Я вообще фигею просто. Сначала кричат, что стандартная библиотека плохая, потому что в ней всего один генератор псевдослучайных чисел, взыскательных пользователей не удовлетворяет. J>Ладно, дают им на выбор туеву хучу оных (побогаче, чем в Rust): http://en.cppreference.com/w/cpp/numeric/random — на выбор и алгоритмы (включая аппаратный источник!), и распределения (штук двадцать!)
Если бы они ещё и написаны были хорошо с точки зрения производительности.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, landerhigh, Вы писали:
CC>>А не надо использовать стандартные библиотеки. Они на то и стандартные чтоб покрывать как можно бОльшую площадь платформ, оттого работают на них одинаково плохо и спроектированы по общему знаменателю.
L>Да-да, надо использовать самописные с непонятным интерфейсом и никому не известным количеством внутренних багов!
Чтоб далеко за примером не ходить: у нас уже есть OpenSSL, написанный известными личностями, с простым, удобным и понятным интерфейсом (и особенно кодом внутри) и совершенно без багов.
Не боги горшки обжигают.
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, CreatorCray, Вы писали:
L>>Да-да, надо использовать самописные с непонятным интерфейсом и никому не известным количеством внутренних багов! CC>Чтоб далеко за примером не ходить: у нас уже есть OpenSSL, написанный известными личностями, с простым, удобным и понятным интерфейсом (и особенно кодом внутри) и совершенно без багов. CC>Не боги горшки обжигают.
Здравствуйте, CreatorCray, Вы писали:
CC>Если бы они ещё и написаны были хорошо с точки зрения производительности.
Т.е. у тебя претензии не к стандартной библиотеке (т.е. к интерфейсу) производства комитета по С++, а к конкретной реализации производства конкретного компиляторостроителя?
Здравствуйте, CreatorCray, Вы писали:
CC>Здравствуйте, jazzer, Вы писали:
J>>Можно ткнуть пальцем, в каком месте chrono/random работают плохо?
CC>К рандому у меня лично претензии performance плана: правильная реализация Mersenne на моей машине выдаёт ~7.8 Gb/s fillrate (2Gb за 0.254 сек). Библиотечный до этого "несколько" не дотягивает.\
ну т.е. претензии к реализации, а не к самой библиотеке. ОК.