Ваша Всратость
Первое учебно-боевое применение Ржавчины.
А не захерачить ли конвеевскую "Жизнь" в текстовом режиме, по итогам сгенерить таблицу конечного состояния, которую затем в виде джсона прочитать жабоскриптом и отобразить на канвасе. Пока идет тестовая прогонка клеточного движка, выводящего начальное состояние на основе ГСЧ, итоги которой выглядят каг-то таг:
Подчеркивание - пустые клетки, плюс - живые
А не захерачить ли конвеевскую "Жизнь" в текстовом режиме, по итогам сгенерить таблицу конечного состояния, которую затем в виде джсона прочитать жабоскриптом и отобразить на канвасе. Пока идет тестовая прогонка клеточного движка, выводящего начальное состояние на основе ГСЧ, итоги которой выглядят каг-то таг:
Подчеркивание - пустые клетки, плюс - живые
Самое интересноэ, впрочем, тут под капотом. Предыдущая картинко сделана достаточно простым, но тормознутеньким жабоскриптом. На просчет 750 шагов и генерацию одного кадра уходит порядка полутора секунд, и это чуть более, чем дохрена. Ржавчина должна пережевывать цифры в разы быстрее.
Там вааще много языковых средств нацелено на недопущение и обработку ошибок. Например при матче (местный аналог switch для enum) компилятор будет материца, пока в матче не будут перечислены все возможные варианты, которые принимает переменная.
Впрочем, помимо основных приемов кодинга имеются также методики unsafe Rust (он же Rustonomicon) но мне до них еще доэволюционировать надо.
Тут исчо пара нюансов - в жабоскрипте полноценные модули с собственными пространствами имен появились только в новомодном ES6, вышедшем два с половиной года назад, ровно как и полноценные локальные (let/const) переменные, которые видимы только в собственном блоке.
А до того - только var, только хардкор и видимость переменной во всей функции, где ее определили. А наш легасевый
поехавшыйжелезнодорожный код славен функцыями на тысячу-другую строк накостыливания одного функционала поверх другого.