March 1, 2016•projects
Abacus machines, sometimes called register machines, are abstract machines that form a mathematical model of computation. They are equivalent to Turing machines, so any possible Turing machine algorithm can be implemented on an abacus machine and vice-versa. An interesting alternative to Turing machines, to be sure, but only really used in academia.
While in Brown, I was introduced to these machines in a class taught by Prof. Richard Heck. For class credit, I designed a language to describe abacus machines and wrote a compiler, runtime, and debugging tools for it. It includes features like:
where blocks at the end of each function definition. Tests are automatically run on each compilation, and tests are marked as passed or failed.The compiler can be run in a browser and comes with an implementation of division from first principles. Take a look!