Snusmumriken
Ну, у тебя тут i не возвращается : ) Хоть в 90% случаев и не нужен, но в 10% - очень даже нужен, а производительные бенефиты отсутствуют : )
Elias
Посмотрел в код игры Ни разу мне индекс не нужен, ipairs вообще не юзаю. 😆 А "_" постоянно писать надоедает - не так красиво выглядит, как for item in values(items) do
Snusmumriken
Хе, ну лады : )
fgntfg
@eliasdaler А ты вкурсе что for будет быстрее работать без всяких итерраторов. Я как то очень долго отлаживал циклы и наотлаживался вдоволь
Snusmumriken
Хмм, Снус, а можно же переопределить итерратор, не?
Можно. Функцию другую пихаешь на место старого итератора и всё. Но мне не нравится, потому что редактирование стандартных библиотек и всё такое.
Snusmumriken
@eliasdaler А ты вкурсе что for будет быстрее работать без всяких итерраторов. Я как то очень долго отлаживал циклы и наотлаживался вдоволь
Да, вариант for i = 1, #tbl do local v = tbl[i] end Работает примерно в полтора раза быстрее чем: for i, v in ipairs(tbl) do ... end
fgntfg
Через метатаблицу определить для этой таблицы новый итератор и всё. Вроде как и не лезешь. Помоему это так работает. Хотя да, не очень красивое, в плане архитектуры решение.
Snusmumriken
Но это всё равно не очень важно в подавляющем числе случаев. Оптимизировать стоит 10% самого частовызываемого.
Elias
В курсе, но пока проблем с производительностью не видел Все самые тяжелые итерации у меня в C++ коде А в Lua очень редко могу пробежаться по табличке из 5-10 элементов, что на производительность ну никак не повлияет :D
Snusmumriken
Нет, границы циклов определяются один раз.
Elias
Когда Lua код занимает 5% времени выполнения, оптимизации вообще не нужны. 😏
fgntfg
Нет, границы циклов определяются один раз.
Точно читал гдето что так писечку быстрее. Но память может подводить.
Snusmumriken
Тоесть это я такой молодец 4 раза за фрейм по 100000 таблицам бегал.
Да, нормальные люди вообще пробегают исключительно по тому что необходимо. В играх - заводятся таблицы индексации на каждый чих. Например, для движущихся объектов - если объект сдвинулся за этот кадр - добавляем его в список, потом проходим по списку и считаем коллизии, например. Чтобы не бегать вообще по всем объектам.
Snusmumriken
Ну, пробежать по ним один раз за один кадр - норм. И чего, прям все двигаются? Ты что, osmos мутил? Даже там не нужно столько : )
fgntfg
Ну, пробежать по ним один раз за один кадр - норм. И чего, прям все двигаются? Ты что, osmos мутил? Даже там не нужно столько : )
Я хотел сделать Plague с симуляцией заражений. У меня был город из 6 домов, 3 жилых, 3 рабочих домика. 100000 жителей ходили на работу и домой. У них менялось состояние здоровья, коэфициентики всякие. А еще заразные человечки оставляли за собой в возухе бацилы...
fgntfg
А там ещё доктора были, которые тоже влияли на всё вокруг
fgntfg
Тормазило знатно и я никак не мог подобрать хорошие коэфициенты, чтоб зараза распространялась не очень быстро и не очень медленно.
Anonymous
Зачем так много жителей для шести домиков? =\
Snusmumriken
Вот когда я мутил osmos, тут нужно было бешеное количество движущихся объектов. Коллизия через sweep & prune, пройтись по всем за один цикл - реально.
Snusmumriken
Но вот даже тут, знаешь в чём прекол? Можно нормально обновлять только то что влезает в камеру, а всё что не влезает - обновлять через кадр (чередуя, например, правую/левую стороны экрана, или делить на чанки) или ещё реже, с увеличенным пропорционально dt. Точность незначительно теряется, но зато производительность подскакивает в разы.
Ilya
плюс ко всему, в этой книге Иерусалимски такие запутанные примеры
+100500 прям. Занудный учебник занудного профессора 😃
Yaroslav
а можно запутанный пример?
Snusmumriken
+100500 прям. Занудный учебник занудного профессора 😃
По ним вполне можно учиться, я проверял. Но рассчитано на программиста, который учиться новому языку, а не на нубаса, который учиться программировать : )
Ilya
По-моему примеры с теми же итераторы были достаточно запутанными. А еще там в "домашке" было кое-что.
Ilya
Не в смысле нельзя учиться, а в смысле что рассчитано не на опытного прогера.
Ilya
Учиться можно. Но скучно )))
Snusmumriken
Ну, на средне опытного проггера : ) Ну, у меня идеально немножко другой способ обучения: ставим цель и топаем к ней, попутно изучая нужные темы. Так веселее.
Ilya
К слову, недавно надыбал статью из Lua Gems - эта книга выглядит поинтереснее, хотя там надо уже понимать базовые вещи.
Ilya
А еще лучше устроиться работать куда-нибудь прогером на том языке, который хочешь изучить - и цель поставят, и научат ))
Snusmumriken
Это плохой способ. У меня сейчас помощник есть, он меня постоянно дёргает. Пожалей людей.
Ilya
И денег еще дадут
Snusmumriken
Хочешь какую-нибудь смешную задачку чтобы по ней учиться?
Ilya
Ну помощнику-то хорошо 😃
Ilya
Нет, у меня есть уже.
Snusmumriken
Ну помощнику-то хорошо 😃
Ага, когда за него делают 2/3 работы.
Ilya
Ну тут одно из двух: либо помощник дерево, либо ты как-то не так выстроил процесс вашего с ним общения.
Snusmumriken
Не совсем. У нас много самописных систем без документации, а он не очень умеет исследовать.
Ilya
Это уже грустно 😉
Ivan
вот пусть и документирует всё что узнал
Snusmumriken
Ну, просто я сравнительно быстро влился, потому что читал много чужого кода и как раз рисовал схемки того как все работает.
Ivan
эх, надо было тебе документировать
Ilya
Схемки расшарь с ним ))
Snusmumriken
Хе, было бы время документацию писать : ) Дедлайн непрерывный.
Snusmumriken
С другой стороны, у нас много самописных систем, включая связи между сервисами и те же БД, поэтому мы не очень изучаем вещи которые полезны себе и другим работодателям. Приходится остальное тянуть самостоятельно.
Snusmumriken
В точку : ) Хотя я и делаю кучу реворков на уменьшение костыльности, но часто меняется тз и обнаруживается что без костылей быстро не поправишь
fgntfg
Задачи разработки легли на хрупкие плечи сопровождения
Anonymous
По поводу обучения на новом месте работы, я считаю что допустим такой сценарий , но лучше будет , если новичок обучается самостоятельно
Anonymous
Например
Ilya
Ну какие-то навыки-то разумеется необходимо иметь 😊 Чтоб собеседование пройти, хехе.
Anonymous
Вот я состоявшийся инженер, и я забыл больше чем потенциальные мои коллеги на новом месте работы будут знать. Но я не могу знать всё. Поэтому мне нужно оплачтваемый период обучения
Anonymous
Собеседование зачастую есть рандом. Успешно пройти собес может и высококлассный дебил и професстонал
Anonymous
Первоклассный дебил, простите
Anonymous
Просто я хочу сказать , что главное - насколько серьезно коллектив относится к своей работе
Anonymous
А если там доминируй-унижай и ангулярЖС то это уже другое дело
Ilya
Это типа: https://twitter.com/ilya_sher_prog/status/925828586724052998 ??
Anonymous
Я не уверен что код ревью так однозначно можно назвать инструментом унижения
Anonymous
Но вот использование определенного спектра технологий - вполне
Anonymous
Например язык го, упомянутый уже ангуляр или вуе
Anonymous
Да много чего, тот же с++
Ilya
Поясни.
Ilya
Что не так с го, ангуляром, вью, да и вообще - с той ситуацией, когда компания ориентируется на какую-либо конкретную технологию?
Ilya
По-моему это вполне оправдано и логично, когда не разрешают разводить зоопарк технологий.
Anonymous
Зоопарк зоопарком, но технологии , которые ущербны изначально (например с++) - разрушают не только мозг , но и коллектив
Anonymous
Трудиться так нельзя, можно только выебываться
Anonymous
А в зрелом возрасте это трудно
Anonymous
Поэтому я и говорю, что зреловозрастной новичок должен иметь период оплачиваемого обучения
Anonymous
Я хорошо знаю с++, но это не причина его любить
Ilya
Ущербность или не ущербность чего-либо - это всего лишь личная точка зрения. Всякую ущербность можно нивелировать разумными стандартами кодирования - например, требованием избегать тех или иных шаблонов при использовании.
Anonymous
Есть отличный рид c++ fqa
Anonymous
Почему личная?
Anonymous
Инвалид от здорового человека же объективно отличается