Обновить
-12
0

Пользователь

Отправить сообщение
Только разница между рисованием и математикой в том, что технику мазков может нигде больше и не получится использоваться, а вот на основах математики построен мир. Может учительнице английского никогда и не пригодится непосредственно понимание определения предела, но уж точно лишним не может и строгости мысли добавит.
с кратким обзором направлений, парадоксами «на пальцах», и прочими интересными вещами

Потом это «на пальцах» легко превращается в непонимание, а то и в лженауку. Поэтому-то и воду заряжали (и заряжают) от телевизора — людей научили, что есть какие-то лучи, а что это и на каких принципах оно работает не объяснили.
Ну это как на уроках литературы вас не учат писать стихи

Я думаю, если бы можно было научить писать стихи, то этому бы учили. Это то же самое, что обучить рисовать картины. Можно обучиться технике, но нельзя (на данный момент) научиться быть хорошим художником.
Я и предлагаю учить не решать проблемы тысячелетия (рисовать картины), а учить базовым вещам (технике рисования).
Побольше, чем коммунизм или социализм. Просто когда человек умирает от голода в капиталистической стране — это «рынок порешал, и вообще он сам виноват, что плохо работал». А если в СССР, то «кровавый диктатор Сталин лично последние крошки хлеба отобрал».
на самом деле, единственная проблема в том, что «матан» ставят в учебные планы тех специальностей, которым он на таком уровне не нужен. это действительно проблема наших реалий, на западе это решается наличием курсов на выбор и совсем упрощенными курсами типа calculus где всё объясняется на пальцах


Позвольте не согласиться с «ненужностью» матана. Считаю, что в текущих реалиях первые пару курсов технического универа (пусть и обрезанные) необходимы всем. Чтобы даже самый гуманитарный гуманитарий знал что такое индукция и умел её применять, владел каким-то базовым пониманием теории вероятностей и статистики. С текущей модой на демократию каждый человек должен иметь возможность критически воспринимать информацию, иначе мы получим то, что имеем.
> Но тогда, что мешает заменой функции предсортировки сделать такую же оптимизацию?

Ну например не известны алгоритмы, сортирующие данные необходимым образом для такой-то метрики. Пример: на плоскости или в трёхмерном пространстве на множестве точек можно построить триангуляцию Делоне (диаграмму Вороного), и тогда для любой точки ближайшие соседи ищутся за константное время. Проблема в том, что для трёхмерного пространства триангуляция строится за O(n log(n)) (n — количество точек), а для пространств большей размерности есть алгоритмы только со сложностью O(n^(1 + d/2) ) (d — количество измерений).

Тогда это нифига не логично и не эффективно. Бот должен быть либо один на 5 персонажей, либо коммуницировать с другими ботами.

То, что он когда хорошо играл, не значит что он сейчас играет хорошо, и уж точно не значит, что он хорошо отыграл в каком-то конкретном моменте. Кроме того, есть ещё 4 игрока. Лучшие команды эпизодически играют как рандомный стак на 3к и сами же это признают.

Т. е. каждый бот считает поведение сразу всех остальных ботов? Потому что чтобы знать какое решение принимает другой бот, нужно посчитать то же, что посчитал он. Зачем тогда ботов 5?

Не знаю на счёт рангов, но иногда складывалось ощущение, что играют выходцы с 3к паба.

А почему у ботов должна быть одна и та же информация? Они же управляют разными персонажами.

Насколько я понял, коммуникации между ботами нет. Они просто идентичны, и поэтому «знают» что будет делать их команда.
Будучи игроком в доту со стажем, вставлю свои пять копеек.
1) > однако, не слишком радикально влияли на игровой процесс
Именно, что влияли радикально. Например, именно 5 бессмертных курьеров позволили ботам делать то, что они делали: танковать вышки и не возвращаться на базу для отхила.
2) > пул из 18 героев
Это не просто 18 героев, а 18 героев с простейшими механиками. Там не было ни одного героя, которых люди обычно называют «мерзкими». Тот же Тинкер в одиночку мог бы в одиночку защитить базу от пуша ботов, и вся их тактика была бы поломана.
3) > реакция ботов была ограничена 200 мс
Не похоже, судя по инста-хексам лиона. Я не разбирал тот момент, но такое возможно в двух случаях: ошибка человека и каст хекса заранее (что, по сути, тоже ошибка). Поясню: ульт шейкера имеет нулевое время каста, то есть должен срабатывать моментально после блинка (при активации через shift). Если человек не использовал shift — это его ошибка (в первую очередь из-за отсутствия опыта игры против ботов). Если человек позволил заранее сделать на себя каст хекса — это тоже его ошибка (для этого есть смок). В итоге либо ошибка человека, которую не допустит опытный игрок, либо невероятное время реакции, что не является честным на мой взгляд.

По итогу: боты сильно прожимают кнопки и двигаются по карте, но делают множество бесполезных вещей (вроде прожимания смоков под вражеским тавером). И если последнее рано или поздно поправят, то как править общую «безыдейность» игры — мне не понятно. Как только боты оказываются в незнакомой или сложной ситуации, они перестают действовать адекватно. В последней игре (когда зрители напикали им ерунды) боты пытались сплитпушить, и даже местами удачно, но это всё, на что их хватило.
После игры были вопросы разработчикам, и на вопрос о коммуникации ботов был получен примерно следующий ответ (если я правильно перевёл): им не нужно коммуницировать, потому что они все одинаковые. Имхо странная точка зрения.
Мне, честно говоря, не совсем понятно зачем вообще этим занялись люди. Точнее говоря, зачем именно так занялись. Видел слайды архитектуры ботов — там сплошные нейронные сети. В связи с этим, я не вижу смысла в этой разработке. Предположим через 2 года боты будут выигрывать любую команду людей. И что? Какой от этого толк? Люди перейдут в другую игру с похожей механикой, и переход займёт пару дней, а для перенастройки ботов придётся проделать заново половину работы. И это хорошо, если у вас будет огромная выборка игр, как в случае с дотой. А что если такой выборки не будет? Я бы понял, если бы за ботами стояла какая-то новая архитектура, но от приклеивания очередной порции НС я не вижу никакого толка.
Инклюдов прилично (llvm, clang-lib), считаете в этом дело? Если так, то 2гб «хватит всем»?
~1гб, но этого оказалось достаточно, чтобы забить до упора память моей машины.
> при нескольких больших открытых файлах в редакторе
Проект как раз был небольшой, и файлов крупных не было. Максимум 500 строк.

К сожалению, сейчас нет доступа к машине и проверить подробности утечки не могу. Помню что через несколько сборок проекта (через make) cland начал есть слишком много памяти. Отключение помогло.
Фризы точно не новые, потому что мучаемся с этим достаточно давно. Репорты емнип не отправляли, ибо там похожих тикетов и так много. Файл большой (30к строк), может проблема в макросах.

По поводу новой фичи Clangd: он у меня течёт в sles, так что пришлось отключить.
Касательно производительности: на больших файлах всё ещё лютые фризы, надеюсь поправите к следующему релизу.

> Честно говоря, из вопроса на SO не очень понятно — какая именно задача решается и зачем нужно знать, на какой глубине вы сейчас находитесь.
Ну, насколько я понял, «visitor» — единственный (можно, наверное, ручками, но там наверняка свихнуться можно) способ обхода AST дерева. И как понять, что ты находишься в условном узле или листе дерева? Как отследить отношение «родитель — ребёнок» в этом дереве?

> Но, с другой стороны, это и не rocket science.
Понятно, что ничего нерешаемого нет. Просто складывается ощущение, что CLang специально делали так, чтобы усложнить жизнь пользователю.
> и хорошо документирован
> вы получите удовольствие, изучая различные классы элементов Clang AST
Простите, но автор наркоман. Второй месяц ковыряюсь в CLang, и впечатления почти сугубо отрицательные. Вместо однородной структуры тех же AST, есть жуткое месиво из тысячи разных классов, что невероятно трудно уложить в голове. Многие вещи делаются через пень-колоду (хотите получить тип переменной из объявления — вот вам цепочка из пяти вызовов), постоянно приходится что-то куда-то кастовать, сплошные голые пойнтеры и прочие мерзости. И ладно бы была годная документация, но она фактические отсутствует. Есть пара туториалов на официальном сайте и доксиген, ничего не объясняющий и почти никак не помогающий. По итогу приходится заниматься цифровой археологией, находя ответы на интересующие вопросы по маленьким кусочкам. На некоторые вопросы я так и не получил ответов (https://stackoverflow.com/questions/49028456/how-to-receive-the-current-depth-in-recursiveastvisitor-clang — судя по отсутствию какой-либо реакции, это невозможно).

Полезная ссылка для интересующихся: white-knight-is-alive.blogspot.com/2016/01/clang-api_20.html — несколько вводных туториалов на русском.

Мне показалось, что у автора какое-то искажённое восприятие. Что-то вроде ошибки выжившего, когда пилот вернувшийся домой удивляется какие конструкторы гении, потому что его пташка дотянула до базы без крыла и с половиной двигателей. И совершенно забывает, что есть множество других пилотов, которым не так повезло. Так и тут: автор удивляется эффективности математики, хотя можно придумать сколько угодно неэффективных систем.
Вот, честно говоря, я не прочитал последние два абзаца и не понял, что это шутка. Ожидал развития метафоры с оплатой.

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность