Обновить
44
1.5
Dmitry@domix32

Жопа котика

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

Несомненно. А раст — единственный язык, победивший эту проблему? А существует хоть одно приложение, чуть сложнее калькулятора, в котором не используется ансейф?

Кажется это принципиально невозможно, ибо общение с той же OS во многих случаях оборачивается вызовом сишных API - zed что-то там мутит с unix stream, uv - WinAPI дёргает, helix и zellij интегрируют плагины на wasm, которые могут быть на произвольном языке, что опять же - unsafe граница между языками. А так, чтобы оно никак не взаимодействовало с системой или другими языками и было сложнее калькулятора. Можно ли считать gleam продвинутым калькулятором или пойдёт под категорию?

Асинхронность в Rust хоть и является незавершённой частью языка, но не «костылём»:

К сожалению - является именно костылём. Во-первых раскраска функций даёт несколько отличный синтаксис и инвалидирует работу borrow checker, позволяет писать честные асинхронные безопасные дедлоки.

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

Отдельно стоит заметить, что некоторые дизайнерские решения относительно API стандартной библиотеки также вызывают вопросы, т.к. то что в Хаскелл было сделано для всех и сразу в Rust имеет несколько полу-копипастных частных имплементаций - всякие map на Option один из таких примеров.

Всегда актуальная документация и тесты

Это в общем-то не языковая проблема. Добавить генерацию документации не слишком сложно, а вот поддерживать её актуальность - проблема. Из принципиальных фишек cargo doc есть то что сниппеты кода в документации автоматически можно тестировать, да.

Здесь и далее «крабы» — это Rust-разработчики. Это связано с «талисманом» языка: красным крабом.

Это не совсем так. Маскотом Rust является cRUSTacean - то бишь ракооборазный. Так что не только в доте раки зимуют.

Собственно, гугл подсказывает, что самый быстрый спасательный кораблик держит в районе 40-50 км/ч. 2-3 корабля на траектории чтобы покрыть окрестность в часов 5-10 не так сложно, однако кажется так никто не делает и проще по факту связаться со спасателями, ближайшими к точке. Да и автономность САС наверняка достаточна, чтобы поболтаться на воде те же пару суток. Главное пеленг не забыть активировать. Гравитация новоотбывшим не страшна, так как речь про пилотируемые запуски с прибрежного космодрома, а не про спускаемые модули для членов экипажей длительных миссий.

летать на скорости 500 км/ч 

Подозреваю, что в открытом море такое проворачивать просто опасно. По речке-то ещё ладно, может в прибрежных морских водах ещё куда ни шло.

Забавно наблюдать как карма комментария шатается из плюса в минус и обратно - я никогда особо не интерсовался подробностями ракетных систем/ракеторстроения в принципе и поэтому все вопросы и утверждения закономерно делались с колокольни хоть и технически подкованного, но всё же обывателя, а не эксперта. Но теперь всем миром просветили меня о наличии системы САС и событиях её срабатывания. Спасибо вам, люди. Без сарказазма.

std::map<Transform> t;

главное чтобы вы понимали, что в таком виде оно не очень ecs. std::map представляет собой бинарное дерево, то есть ноды дерева расположены где-то в случайном месте памяти. ECS же старается сделать так чтобы одинаковые компоненты лежали как можно ближе друг дргу для cache locality. В классическом SoA оно выглядело бы как-то так

Transform t[];
PhysicsComp p[];
IsRenderable r[];
Mesh m[];

То есть некоторые линейные массивы, последовательная обработка которых отлично предсказывалась процессорным branch predictor. В случае map такого не будет происходить, т.к. обход бинарного дерева не будет проходить по последовательной памяти, а по веткам дерева. std::unordered_map или std::flat_map могут исправить эту ситуацию.

Ну и отдельно стоит заметить, что любой std::*map обычно принимает два шаблонных параметра - тип ключа и тип собственно элемента, так что ваш пример не соберётся.

Ну и обновление в ECS обычно происходит на уровне систем, а не на уровне энтитей.

for (auto [_,tran]: t) tran.tick(); // update transform system
for (auto [_,phys]: p) phys.tick(); // update physics system
/*the rest of systems*/

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

Вторая замедляющая компиляцию штука - активное наваливание макросов на всё что можно. Макрос генерирует больше кода. Больше кода - больше компилировать. А уж если макрос генерирует вызовы генериков, то добавляется ещё и первый пункт. Вот и получается не быстро.

Особнячком стоит процесс финальной кодогенерации для некоторых таргетов. Генерация кода под wasm, например, не сказать чтобы быстрая и даже демка из wasm-pack будет генерировать wasm бинарь довольно заметное время. Поэтому, если вам сложилось заниматься вебнёй, то мои вам соболезнования, вам придётся биться на мечах с соседом. Впрочем, пока не изобрели языка, где аналогичные действия происходили бы быстрее.

Всегда есть возможность выбросить комбайн и скрафтить собственный специализированнй пайплайн, который почти наверняка окажется быстрее, но большинство не станут этим заниматься.

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

  1. Я хз существует ли вообще принципиальная возможность в аварийных ситуациях как-то безопасно сбросить экипаж с поднимающейся ракеты. Даже для имеющихся космодромов. Проводились ли испытания этой системы, если таки имеется возможность.

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

  3. Разработка подробного протокола возможно является проблемой для разрешения пилотируемых запусков, но сомневаюсь по причинам озвученными автором.

Но писалось-то всё в стиле - вообще всё пропало, а альтернативной информации особо и не было

Информационная война никуда не делась. Собсна украинские хакеры там бахвалились "да мы там всё под чистую вынесли", что СМИ в итоге и тиражировали.

Я нашел вот эту статью и был сильно ей удивлен.

Я так понимаю речь об этом

По данным компании YouGov на 2023 год, настольными играми увлечены 19% населения мира

Учитывая, что ребята занимаются маркетинговым анализом сомневаюсь, что реальные цифры близки к этому. Плюс считались "board games or cards", что отнесёт какой-нибудь покер, преферанс или блэкджек к той же категории. Так что ваш личный опыт с "по пальцам пересчитать" вероятнее ближе к истине.

Однако, вы обозначили игры в сегменте образования, то есть в сфере, где люди учатся и учат. Не могу сказать, что там совсем нет игр, но это определённо не та же категория, что и просто настольные игры. В большинстве случаев у этих игр цель сделать геймификацию некоторого процесса обучения. Как вы понимаете у сферы образования не сказать чтобы большой запрос на игры в ввиду уровня их применимости. Дошкольники ещё не умеют в математику, школьникам уже особо некогда, а у студентам и без этого найдётся во что сыграть.

Образовательные настольные игры же это тоже немного иная категория и сильно зависит от того, что в него включать.

Вы думаете, что разглядеть математическую идею в прикладном процессе - это магия. 

Магией зову обычно вещи, которые либо придуманы на ходу и не имеют научных обоснований (вжух рукой собирает облака для дождя) либо что-то выше моего собственного уровня понимания (интерпространственная теория Тейхмюллера). Для ребёнка, который не особо любит учиться и с горем пополам и калькулятором едва пользуется таблицей умножения даже собирание кубика Рубика будет магией, куда уж там ему про какие-нибудь группы поворотов задумываться или стратегии для го придумать. Если у вас нет кнута или пряника для того чтобы тот потратил время на изучение вопроса (читай, удержать внимание), то он почти наверняка не станет этого делать и ближайший айпад с матч3 вас победит по интересности.

часто содержат в себе возможности для линейного, квадратичного или экспоненциального роста

Вы же не будете ради обучения учить играть людей в Eve интегрируя его с обучением Excel. Сложность алгоритмов обычно прикидывается в голове, а минимакс рассчитывается предварительно на листочке. Никто не рисует графики для подобного. По крайней мере не ручками.

Покрыть бы школьную программу и научить минимуму необходимых полезных навыков - уже хорошо.

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

 Там тоже писалось много где о восстановлении месяцами, хотя Аэрофлот решил проблемы в считанные дни.

Есть разница между восстановлением работоспособности и восстановлением всех данных. Первое необходимо делать быстро, второе будет происходить очень долго. Если конечно у них не было какого-нибудь ультра бэкапа

Рогозин и другие не только не присядут

тем более, что Рогозин уже давно не у дел и в Крыму там что-то управляет.

Собственно, я про то же. Диапазон поиска относительно известен и вообще не факт что капсула будет приводняться. Да и потенциальный разброс там наверное пару тысяч км, если не больше. Разворачивать целый флот звучит несколько не обдумано и дорого. Проще пеленговать координаты.

"Мамо, я в тиливизоре".

Что-то странное у вас с хронологией статьи.

Ещё весной 2025 я писал подробную статью

Публикация и обсуждения аж в июне. То бишь 5 с копейками месяцев назад.

Тогда, в 2024 году

А тут вообще в прошлое вернулись.

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

У нас разве вообще есть возможность кого-то там приводнять при взлёте ракеты? Оно кажется или взорвётся или улетит в не очень определённое место, которое не обязано оказаться обязательно в океане, а вообще в практически любой точке орбиты ракеты. Если ракета успешно упала, то нынче кажется гораздо проще их найти по сигналу GPS-маяка - чай не в союзе, где навигационных спутников не было. Да и связь/телеметрия кажется в среднем ЦУПу известна на всех этапах полёта. Или я ошибаюсь и это только Space X имеет у себя такое?

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

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

Магия сдвига

Собственно, это и не математика, а магия так и осталась, т.к. у вас отсутствуют хоть какие-то адекватные последовательные шаги для этого преобразования. Про "стекание" и подавно.

вроде обещали constexpr, а по всему коду магические значений разбросаны. всякие 0xB8000 и 80/25 размазаны по всему коду. Для читателей этой статьи-то понятно конечно что одно это указатель на VGA буффер и соотвественно размеры, но дял читателя кода это ни разу не очевидно.

noexcept кстати тоже ни разу не появился нигде кроме new/delete.

ASFLAGS = --32

я кстати правильно понимаю ,что 64-битная архитектура пока не поддерживается совсем

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

рынок настольных игр в сегменте образования потенциально раз в десять больше их рынка в сегменте любителей

какой-то странный вывод, и главное непонятно из чего.

Обычно для улучшения стратегии вам нужно свести игру к какой-то математической схеме, к какой-то абстрактной задаче. В ходе решения этой задачи вам может понадобиться изучить, модифицировать или изобрести некоторую математическую теорию (стадия 3).

Для того чтобы к ней свести ребёнок должен понимать, что подобное в принципе возможно, но для человека без тренированной чуйки и опыта любая попытка выстроить стратегию будет как магия. Вспомните хотя бы как вы научились собирать кубик Рубика - думаете кто-то без подготовки сможет изобрести теорию групп, пусть в собственной нотации? Игры типа "Сет" в этом плане конечно попроще, но всё равно построить именно какие-то теории для стратегии ни разу не просто. Можно ли придумать достаточно пологую цепочку из игры чтобы прийти от простеньких стратегий для крестиков-ноликов до победы в каком-нибудь реверси? Скорее всего нет - всегда найдётся точка, которая потребует резкого подъема уровня сложности.

Отдельно стоит заметить, что именно игры редко затрагивают большинство из школьных областей - решения уравнений, работа с дробями или рисование графиков функций мало пригодятся для игр. Большинство игр будет вертеться вокруг комбинаторики и теории групп, что для маткласса наверное неплохо, но не для среднестатистического школьника врядли.

естовую группу из 6-8 школьников

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

Ну, и математических игр довольно немало и тут возникает вопрос какого рода игры вы хотите. Есть миллион различных настольных (board) игр в разных категориях с разными же стратегиями. Single player, PvP, кооперативные игры, игры с равновесием и без со всей вытекающей теорией игр, или игры с трансцендентной математикой - оно конечно интересно, но опять же мало имеет отношений к школьной программе.

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

Информация

В рейтинге
1 621-й
Дата рождения
Зарегистрирован
Активность

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

Software Developer, Game Developer
Senior
Git
C++
C
English
Python
Rust
Software development
Linux