Artemiy
И чтобы с наследованием было много связано.. я в нем плаваю
Ну как бы в рейтрейсинге вроде все для наследования и интерфейсов есть. Однотипные с точки зрения интерфейса объекты, которые надо хранить вместе. Когда будешь оптимизации внедрять или архитектуру продумывать, чтобы модификаторы свойств поверхности описывать - тоже пригодится наследование
Artemiy
Потом дай Бог про bbox-ы узнаешь и будешь впиливать kd-tree или что-то наподобие - придётся немного подумать, чтобы это удобно было внедрять. Опять же возможности языка тебе в помощь
Nik
(а чем ему калькулятор не угодил?)
Anonymous
Я позволю себе немного отойти от темы, раз уж мы начали говорить про задачи. Я пару месяцев назад набрел на один сайт, там говорилось про "проблему четырех красок". За решение данной задачи путем написания программы дается денежное вознаграждение и ссылка на ресурс в сети. Задача на первый взгляд какая-то детская, но вроде как реализация не была найдена до сих пор. Я сидел думал-думал как же к ней подойти и чет ничего не придумал.
Anonymous
ок
Anatoly
а зачем целая книга для этого?
Anatoly
задача вычисления выражения в польской обратной записи однопроходная: const char* input = "+5 -12 +13.1 + *"; const char* head = input; char ch = '\0'; enum {INITIAL, VALUE} state = INITIAL; std::string value; std::stack<double> values; while( ch = *head++ ) { switch(state) { case INITIAL: switch(ch) { case '+': case '-': if( isdigit(*head) ) { value = ch; state = VALUE; } else { double b = values.top(); values.pop(); double a = values.top(); values.pop(); values.push(a + b * (ch=='-'?-1:1) ); } break; case '*': { double b = values.top(); values.pop(); double a = values.top(); values.pop(); values.push(a * b); break; } case '/': { double b = values.top(); values.pop(); double a = values.top(); values.pop(); values.push(a / b); break; } default: if( isdigit(ch) ) { value = ch; state = VALUE; } } break; case VALUE: if( isdigit(ch) || ch == '.') { value += ch; } else { values.push(atof(value.c_str())); state = INITIAL; } break; } } std::cout « input « " = " « values.top() « std::endl;
Anatoly
Что же ты тогда врешь "Тут просто прям вот вчера книгу кидали целую, как написать калькулятор..."
Nikolai
Да и вообще)) Каждый уважающий себе программист должен в своей жизни написать свой калькулятор))
Anonymous
уже несколько раз ее передоказали
Алгоритм где ? Найдешь - я куплю у тебя его
Pepe 🐸
Алгоритм где ? Найдешь - я куплю у тебя его
https://en.m.wikipedia.org/wiki/Four_color_theorem с тебя 100$
Anatoly
Алгоритм где ? Найдешь - я куплю у тебя его
слушай, хватит бузить. если хочешь обсуждать С++, велкам. если купи/продай, нах
Nik
так это же у страуструпа было...
Anatoly
так это же у страуструпа было...
у Страуступа была инфиксная запись и разбор методом рекурсивного спуска.
Anonymous
слушай, хватит бузить. если хочешь обсуждать С++, велкам. если купи/продай, нах
Я не развивал эту тему, а просто напоследок написал сообщение, потому как ранее обсуждали задачу.
Anatoly
у Страуступа была инфиксная запись и разбор методом рекурсивного спуска.
Страуструп писал в Дизайне и эволюции С++, что сначала он хотел разбирать С++ методом рекурсивного спуска, но его встретил Ахо в коридоре и отговорил, что де это сейчас не круто :)
🐙 Antony
Хотя не удивлюсь, если действительно предложил. У Ахо книги, что я читал, на четверть состоят из матана по регуляркам
Anonymous
катаклизм сложный. dcss попроще, и там коммьнити дружелюбное и демократичное. В катаклизме диктатура
🐙 Antony
Есть здесь люди, умеющие писать оптимизации для clang или gcc? Очень хочется чтобы решили вот эти тикеты https://bugs.llvm.org/show_bug.cgi?id=35052 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53294 Готов в обмен починить мешающие вам Boost проблемы или помочь другим советом/делом
🦥Alex Fails
и не один https://github.com/Whales/Cataclysm
Да этих рогаликов как грязи - см. MUD
Nik
никто не мешает написать еще_один
Max
Народ, есть срочный вопрос по std::experimental::apply Какие потенциальные проблемы есть и можно ли пихать в продакшн? Или нужно самому переписать его, но если да, то как?
Anatoly
в итоге, получился my_apply: #include <iostream> #include <sstream> #include <initializer_list> #include <utility> template<typename T> void blackhole(std::initializer_list<T>&&) {} template<typename F, typename ... Args> void my_apply(F&& f, Args&& ... args) { blackhole({ (f(std::forward<Args>(args)), 0) ... }); } int main() { { my_apply([cnt = 0](auto&& s) mutable { if (cnt) std::cout << ", "; std::cout << std::move(s); ++cnt; }, std::string("hello"), 10, 30.); } }
Anatoly
как-то разбирали как в отсутствии поддержки фолдинга это сделать
Matwey
Господа, у меня вопрос по boost.asio
Matwey
Я уже пытался решить эту задачу год назад, но никто ничего красивого не подсказал, я так и замёл её под ковер. А теперь у меня снова вопрос.
Andrei
а в VS++ есть компилятор чисто Си'шный?
Matwey
Представьте себе tcp сокет, я туда шлю запрос, мне в ответ приходит ответ. Есть условие, что между запросом и ответом должно пройти меньше timeout времени. Меня беспокоит такая пограничная ситуация когда данные в сокете появляются близко к моменту срабатывания таймера. В таком случае, возможно, что приложение будет занято обработкой других хендлеров некоторое время, после чего вернется в io_service.run() и там обнаружит, что одновременно сработал таймер и в сокете есть данные. В такой ситуации мне бы хотелось отдать приоритет обработке сокета. strand здесь не поможет, о чем явно написано в документации. Потому-что я не знаю в каком порядке кишки asio решат сделать dispatch моим обернутым в strand обработчикам. Нашел пример с priority_queue но он какой-то страшный. Я склоняюсь к тому, что надо как-то переформулировать задачу скорее, чтобы она в рамках asio решалась прозрачно.
🦥Alex Fails
а в VS++ есть компилятор чисто Си'шный?
сохрани файл с расширением .c
Anonymous
Скиньте годного материала по указателям
Anatoly
А почему experimental
обновить компилятор надо
Max
ну он кагбы с C++17 идет, если я буду билдить его компилятором постарше, где еще 14 стандарт, и писать std::experimantal::apply вместо std::apply это то же самое будет?
Олександр
гугл, там реально всё круто разжёвывают в первых 5-ти ссылках
Anonymous
Спасибо
Anatoly
ну он кагбы с C++17 идет, если я буду билдить его компилятором постарше, где еще 14 стандарт, и писать std::experimantal::apply вместо std::apply это то же самое будет?
можешь вот так выкручиваться #ifdef __has_include # if __has_include(<optional>) # include <optional> # define have_optional 1 # elif __has_include(<experimental/optional>) # include <experimental/optional> # define have_optional 1 # define experimental_optional # else # define have_optional 0 # endif #endif
Max
спасибо
🦥Alex Fails
зачем?
Тогда он будкт компилиться как си-файл
Andrei
Тогда он будкт компилиться как си-файл
то есть если я напишу class свой в файле .c мне компилятор скажет, что так писать нельзя?
Andrei
я просто никогда не писал в Окнах и тем боее в VS.
Andrei
но где-то слышал, что вроде там нет чисто сишного компилятора, а тут вдруг понадобилось узнать
ep
но где-то слышал, что вроде там нет чисто сишного компилятора, а тут вдруг понадобилось узнать
В MSVC всё было печально со стандартом C99 до 2013 версии вроде. Как там с С11 сейчас я не интересовался.
ttldtor
Кто-нибудь в курсе, будет ли продолжение у http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0301r1.html ? В D/Kotlin/C# этим (или чем-то подобным) достаточно приятно пользоваться, в Scala есть неявщина, но там можно оторвать себе много чего (даже в монадку не успеешь обернуться). Почему так туго в плюсы проходит? Не хотят быть как все? И нет ни слова о шаблонных вариантах подобных "расширений". Предполагается, что "золотая пуля" концептов всё решит?
🐙 Antony
Пока не будет :(
ovf
тупой вопрос: а в формулировках типа "member function is preferred" к чему относится член структуры типа указателя на ф-цию?
ttldtor
тупой вопрос: а в формулировках типа "member function is preferred" к чему относится член структуры типа указателя на ф-цию?
гм, а на какую он функцию ссылается? Мне видится это чем-то вроде статической функции. Если указатель на мембер, то это отдельная тема ведущая в сторону переархитектуривания, как мне кажется)
ovf
компилятор не знает, куда он ссылается
ovf
в общем, более-менее очевидно, что такой указатель должен приравниваться к member function, тем более что одновременно их быть не может
ovf
пожалуй, я не против unified call syntax в си
ovf
т.е. a.b(c) значит то что раньше, если в a есть b, и b(a,c) в противном случае
ttldtor
интереснее шаблонные варианты
Крылатый
/ban
Anatoly
поржал, облако сохраняющее файлы в echo пакетах: https://github.com/yarrick/pingfs
Matwey
У чувака массивы не выровнены по 128 бит
Evgenii
Еще один гонщик😌
Matwey
Было бы знаешь какой инструмент прикольно иметь, для такого рода развлечений? Оптимизатор компилятора же вычисляет какую-то свою внутреннюю стоимость наверняка для того, чтобы выбрать ту или иную оптимизацию. Было бы забавно, чтобы можно было подать ему на вход свой ручной ассемблер и измерить его в метрике оптимизатора
Billy
До 2х ночи я вчера делал секас с кодом. не известно как мне пришла в голоу идея проверить эту third party либу, но я выдрал кусок код из сервера, сделал проект, заглушил все кроме колов в либу. запустил в профайлере, и оно потекло, так потекло, что затопило всё кровью того, кто ее вставил в сервис :) на этом лег спать. В общем сейчас я проверяю, что оно не только на маке течет, но и на сервере. Пока что поменяем код и посмотрим, потом я посмотрю сколько утекаез за 1 кол и есть метрики количества колов с екунду через этот участок. Можно прикинуть сколько за сутки утекает таким макаром. Кроме того, понятно почемку раньше не замечали, тоже из метрик видно.
Billy
либа r3 если что
Billy
high performance leaking routing!
Matwey
Так может в ней уже устранили утечку? Надо более новую версию испытать
Matwey
Ну это у современной молодежи так принято. Парадигма stable HEAD.
Matwey
Бери мастер