- 1
https://github.com/catboost/catboost
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
https://github.com/catboost/catboost
Похоже яндекс заопенсорсил свежую версию аркадии. Давайте обсирать эти их велосипеды.
> Don't use boost, and limit use of STL (Use optimized counterparts available in /util instead of some of the parts that are poorly implemented in STL, such as std::string -> TString, std::streams -> TInputStream, TOutputStream). We don't encourage reinventing the wheel (we've already invented everything and just check the /util).
If wheel made from frozen shit, then it makes sense
Они кидают исключения специальным оператором йкинуть.
Классика
https://github.com/catboost/catboost/blob/master/catboost/libs/algo/error_functions.cpp эта хрень на плюсах написана, но в каком-то сишечном стиле, без всяких там std:kokoko
Вот тут
https://github.com/catboost/catboost/blob/master/catboost/libs/algo/greedy_tensor_search.cpp#L25 уже есть парашная плюсовая лямбда
Оно было бы в сишечном стиле, если бы все переменные были однобуквенные, вместо const double* войд звездочка, и пара маллоков без парных фри. А так обычные плюсы.
for (auto& curSoftmax : *softmax)
> без всяких там std:kokoko
Во втором файле тоже ни одного std::кококо нет
1. Сигнатура: void(const yvector &, yvector *), когда можно было спокойно сделать yvector(const yvector &). Даже проверка валидности входных данных отсутствует. Типа быстрее?
2. Находим юз MaxElement, эта шо за покемон? Переходим, voila:
https://github.com/catboost/catboost/blob/master/util/generic/algorithm.h
файлик, на 90% состоящий из переименовывания stl. Но юзать stl некошерно же. На дефайнах бы хоть компилилось быстрее. Там в общем-то вся generic папка - супертонкие врапперы над stl
Эта кодовая база появилась до с++11, если что.