Обновить
529
109.1
Sergei Kushnirenko@dalerank

Люблю (ш)кодить, алгоритмы и старые авто.

Отправить сообщение

Вы не один это видите - это понимают вообще все, в том числе и комитет (я както говорил на конференции с @antoshkka об этом, там работают очень умные люди, которые прекрасно видят и технический долг и архитектурные проблемы языка) Радикальный разрыв тут просто невозможен, пока язык реально используется в проде, и именно поэтому вместо красивого перезапуска мы видим concepts, modules и constraints, в виде медленных шажков. Разбивка по файлам, о которой Вы сказали и TU это чисто про генерацию кода, а не про семантику языка (name lookup, overload resolution, правила шаблонов, ADL, ODR, ABI) должно быть одинаковым во всей программе, иначе компоновка будет давать разные результаты при каждой перекомпиляции (это один из моментов), если ввести разные модели языка, условно старую и новую, то у нас отваливается ODR (тут вам больше ребята с конференций расскажут). И вы забываете про вендоров, если ктото из большой тройки говорит - нет, мы не можем это сделать, комитет под козырек и откладывает на следующий стандарт.

Тут просто важно напомнить, откуда всё это взялось. Плюсы все же очень старый язык (40+?) и он десятилетиями развивался так, чтобы ничего не ломать из уже написанного кода, ну и он тоже из ниоткруда не появился, а взял часть сях, часть smalltalk, tcl и чего там еще было в начале, поэтому он не может просто взять и «переделать систему типов заново», вы банально все сломаете и даже ваша кошка будет смотреть на вас осуждающе. Поэтому все новые штуки, вроде концептов concepts, приходится аккуратно надстраивать поверх старых шаблонов, SFINAE и прочего исторического багажа и ничего с этим не поделать. Может из-за этого они иногда выглядят как костыли, хотя по сути это эволюция.

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

При этом rust на самом деле очень много взял из C++, тотже RAII, zero-cost abstractions, общее мышление про производительность, но он смог взять эти идеи уже в отшлифованном виде и встроить их в язык сразу, а не задним числом и не через три п.... извините за мой французский.

Так что концепты в плюсах это не попытка догнать rust, а попытка как-то наконец-то официально оформить то, чем люди пользовались годами, если не десятилетиями, через enable_if, type traits и прочие трюки. Ну да, выглядит менее элегантно, но работает и не ломает экосистему.

В общем, rust просто повезло родиться позже и у хороших родителей и навеное это нормально. Если я тут что-то про rust обидное сказал, прошу извинить, язык не использую, иногда почитываю блоги.

Спасибо, поправил

У вас еще скидка хорошая, мне вот только промокод предлагают. @OlegSivchenko ^ яндекс балуется?

не получится, потому что любая попытка стереть тип у строк упирается в несовместимость моделей представления данных, а не в отсутствие абстракции. Если возвращать условный char32_t то придется декодировать UTF-8/UTF-16/UTF-32, которые тоже разные. Получается что type erasure превращается в полноценный transcoding layer и очередной тринадцатый станадарт и несет огромные накладные расходы, значит это уже не совсем укладывается стринг вьюху, т.е. пока это не будет сделано на уровне языка как единое решение, так или иначе разные библиотеку будут велосипедить своЁ

Ну много да, года до 2015 почти четверть штатовского игрового аутсорса уходило в СНГ. Щас конечно поменьше, но платить ООО "ТехКранч" десятую часть тамошней разработки, получая сравнимое, а зачастую и повыше качество, для многих является решаюшим фактором независимо от лозунгов и цвета волос потуса. А оставшиеся 2% можно и пропить

Ну всегда есть вариант написать - свою с дамами и преферансом, ктож запрещает. Если хочется технических, то их тоже есть (https://habr.com/ru/articles/687146/), но как показывает практика написания технических статей они редко собирают больше 10 плюсов

Это роялти фри фотки из гугла + обработка фотошопом от моего знакомого художника из студии Playkot

это особенности использования std релизаций, и это одна из причин, почему в продакшен коде используют альтернативы типа abseil или EASTL, либо резервируют x2-x3 предполагаемого числе итемов и получают нужное поведение

Вы бы хоть тег /sarcasm добавили, а то я даже не сразу понял тонкость шутки :)

стандартный мап без хаков это сбалансированное дерево, обычно красно-чёрное. Каждый элемент дерева это отдельный узел, и для каждого узла выделяется память под сам узел (value + 2–3 указателя + цвет), так что да - память выделяется отдельно при каждой вставке. Держать некий набор узлов про запас это уже отдельные хаки вендора, но например мс таким не страдает, поэтому у них самое медленное дерево. с unordered_map сложнее, там выделяется массив бакетов, но сами ноды через new, т.е. все равно аллокация будет в какомто виде. Если нужно совсем без аллокаций (условно 1 раз на создании), то надо смотреть в сторону flat_has_map, fixed_map и им подобных. Ничего этого в стд нет, flat_map есть в 23 стандарте, но насколько я видел у вендоров... их до сих пор не сделали на конец 25 года, т.е. их по факту нет... с flat_hash_map вообще беда, только сторонние либы

Строки в самом движке это 1% использования, в основном строки приходят из ассетов и ссылки на них держать не получится. На этом кадре ассет есть, на следующем уже нет. Так что либо копия, либо ее сурогатт

Хабр - открытая площадка, где каждый может написать материал в том стиле, который предпочитает нужным. Надеюсь вам не составит большого труда сделать статью об этом, бо время для комментария с подробным анализом нашлось же... Тегните меня там - покритикую ваш опус в духе стремительного домкрата

Вопрос в другом, о скольких животных мы не знаем или забыли? Я например вот не знал про TString и Штроку, а могли выйти хорошие экземпляры, и к сожалению забыл написать про AnsiString/MFCString, хотя потратил на работу с ними лет пять жизни точно

Все так, единственная поправочка, бизнес уже продал игру с костылем владельцу xbox, выплатил зп разрабам и рекламирует новую игру, где здесь место и время для поиска идеальной строки в степях дедлайнов решительно непонятно. А если серьезно, то есть устоявшийся набор решений eastl::fixed_string, fstring, xstring и попытки заиспользовать чтото другое быстро отсекутся на ревью думающим лидом. Бардак конечно, но бардак управляемый...

А дело не в s1

Тут более техничная статья про xstring https://habr.com/ru/articles/873016/ и поменьше объемом

Это подбор фоток под темы абзацев + несколько фильтров в фотошопе + ручные правки. Я пробовал нагенерить это промтами, но в итоге выбрал лимиты и сдался. Оказалось проще отдать человеку :)

если есть подозрение на коллизию, делаем дабажный ID который хранит еще и строку из которой был сделан и запускаем с ним. Ловим колиизию и думаем как фиксить.

А это что за зверь то такой?

1
23 ...

Информация

В рейтинге
52-й
Откуда
Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Десктоп разработчик, Разработчик игр
Старший
От 300 000 ₽
Git
C++
Многопоточность
Прикладная математика
ООП