Serge Bobrovsky (sbobrovsky) wrote,
Serge Bobrovsky
sbobrovsky

На всех важнейшей из дистанций -- из ниоткуда в никуда

Развлекаюсь в морозы, собрал игрулечку про бег





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

А тут, забацал на F# простенький DSL, который включается сборкой в C#. Получился, типа, язык для описания вот таких вот маленьких игр, которые можно клепать по единому шаблону. Правда, у меня совсем простой случай, формируется чистый код без внешних завязок на .NET, и потом ещё ручная работа требуется таки, для тюнинга UI.

кому интересна тема, тыц
https://github.com/dungpa/dsls-in-action-fsharp/blob/master/DSLCheatsheet.md

В принципе, идея была эпичнее: хотел вытаскивать чистое AST, и потом на это синтаксическое деревце можно наращивать разное мясцо, благо у компилятора Roslyn есть для этого хороший API. Но оказалось слишком много возни, наговнокодить на си-шарпе получается быстрее в разы :)
Даже по количеству строк получается примерно одинаково. Вот это меня дико бесит:) Не могу пока придумать, как относительно универсальный/прикладной код можно представлять синтаксически компактнее на порядки.

Другая идея: хакнуть сам компилятор f# под свои нужды)
https://github.com/fsharp/FSharp.Compiler.Service/blob/master/src/fsharp/ast.fs

Или даже сделать движок на F* тыц https://fstar-lang.org/ который бы встраивал во взломанный FSharp.Compiler нужные определения.

Пора конечно f#-коду самому писаться. Что-то у меня подозрение, что тут может прокатить квази-цитирование (quasiquotaton) -- правильная математика вкупе с чисто инженерными подходами
http://lambda-the-ultimate.org/node/4732


Дальше в планах, симуляторы хипстера, звёздных войн, хакера, постапокалипсиса, просветления, конечно велосипедиста:) козла ну и другой фигни что придумается.

Игрулька скачать бесплатно -- один крохотный exe в архиве, никаких установок, просто распаковать и запустить.
https://yadi.sk/d/6cs0SpCe37MrXY
Tags: бег, игры, марафон, программирование
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 5 comments