In this paper we present CASM, a general purpose programming language based on abstract state machines (ASMs). We describe the implementation of an interpreter and a compiler for the language. The demand for efficient execution forced us to modify the definition of ASM and we discuss the impact of those changes. A novel feature for ASM based languages is symbolic execution, which we briefly describe. CASM is used for instruction set simulator generation and for semantic description in a compiler verification project. We report on the experience of using the language in those two projects. Finally we position ASM based programming languages as an elegant combination of imperative and functional programming paradigms which may liberate us from the von Neumann style as demanded by John Backus.
@Comment{ refnotes, namespace = "cite" } @inproceedings{lezuo2013atps, title = {{CASM}: {I}mplementing an {A}bstract {S}tate {M}achine based {P}rogramming {L}anguage}, author = {Lezuo, Roland and Barany, Gerg{\"o} and Krall, Andreas}, booktitle = {Software Engineering Conference (Workshops), Arbeitstagung Programmiersprachen, ATPS 2013}, pages = {75--90}, year = {2013} }