Recently I came across an English translation of A. A. Markov's
"Theory of Algorithms." In this work Markov introduces Markov algorithms
that are similar to Turing machines and while at first glance might
look like Markov chains, are quite different. Markov algorithms are
used to study certain branches of constructivist mathematics,
among other things. Due to several different factors they never
found prominence in western math and computer science.
In this work I am hoping to make Markov algorithms more accessible.
This is largely motivated by personal interest, but also due to the
fact that I can't really find an easily accessible copy of this text.
Springer
sells a new translation of this text, but I haven't looked at it yet.
I did locate a Russian copy
online, but that is pretty much it.
I am intending to transcribe large parts of this text and include a
compiler for executing evaluating the statements in the text itself.
The compiler will be embedded into the browser as a WebAssembly object
and will allow the reader to compile statements from the text into WebAssembly
and run them in real time.
The repo for this project
builds both native and wasm versions of the code. GitHub CI/CD plops the latest build of
it here. As such, it may be broken from time to time. The current version generates
very basic WebAssembly text format (WAT) S-Statements. Give it a try below.
While it may not look like much right now, there is a lot going on behind the scenes to
achieve this. The Emscripten WASM compiler emits a .wasm binary format and a .js runtime
framework. The runtime framework loads the binary, which takes the above text as an
argument and compiles it into the above text. Encouragingly this seems to work on every
browser I have been able to test it on including mobile browsers.