A uniform approach to applicative and imperative features in programming languages
We call “applicative” such features of programming languages as functional procedures or recursion inside arithmetical expressions. We call “imperative” such features as local variables, states, assignments, loops or parameters called by reference. We give a uniform input/output semantics and proof rules for a toy programming language that includes both. The semantics is nice in that it does not introduce explicitly anything that programmer chooses to leave implicit (e.g. stacks for recursion). The proof rules do not involve complicated variable- and parameter- replacements as is customary for procedures with parameters.
The paper is an informal bird's eye view rather than a formal exposition and the Reader is referred to other papers for technicalities of the approach. Several examples are given.
KeywordsProcedure Call Semantical Meaning Denotational Semantic Partial Correctness Proof Rule
Unable to display preview. Download preview PDF.
- Backus, J. “Can programming be liberated from the von Neumann style ? A functional programming style and its algebra of programs” Comm. ACM 21, 8, 1978Google Scholar
- Backus, J. “Programming language semantics and closed applicative languages” Proc. ACM Symp. on Principles of Programming Languages 1973, 71–86Google Scholar
- de Bakker, J. “The fixed point approach in semantics: theory and applications” Foundations of Computer Science, Mathematical Centre Tracts 63, 3–53, Amsterdam 1975Google Scholar
- Blikle, A. “An analysis of programs by algebraic means” Banach Center Publications, Vol. 2, 167–213, Warsaw 1977Google Scholar
- Blikle, A. “A survey of input-output semantics and program verification” ICS PAS Report 344, Warsaw 1979Google Scholar
- Blikle, A. “Specified programming” ICS PAS Report 333, Warsaw 1978Google Scholar
- Blikle, A.; Mazurkiewicz, A. “An algebraic approach to the theory of programs, algorithms, languages and recursiveness” MFCS 72, Proc. Symp. Jablonna 1972Google Scholar
- Katz, S.; Manna, Z. “A closer look at termination” Acta Informatica 5, 333–352, 1975Google Scholar
- Mazurkiewicz, A. “Foundations of theory of programming” (in Polish) Problemy przetwarzania informacji, 39–93, Warsaw 1974Google Scholar
- Mazurkiewicz, A. “Proving properties of processes” Algorytmy XI, 5–22, 1974Google Scholar
- Sokołowski, S. “Axioms for total correctness” Acta Informatica 9, 61–71, 1977Google Scholar
- Sokołowski, S. “Procedures and functions with parameters in the calculus of relations” Univ. of Gdańsk, Inst. of Math., Preprint No. 17, 1979Google Scholar
- Sokołowski, S. “Programs as term transformers” to appear in Fundamenta InformaticaeGoogle Scholar
- Sokołowski, S. “Total correctness for procedures” MFCS 77, Lecture Notes in Computer Science Vol. 53, 475–483, 1977Google Scholar
- Sokołowski, S. “Term transformations and their role in investigating properties of programs” (in Polish) in preparationGoogle Scholar
- Tennent, R.D. “The denotational semantics of programming languages” Comm. ACM, Vol. 19, No. 8, 437–453, 1976Google Scholar