Declarativeness: the work done by something else
Attila Egri-Nagy

TL;DR
This paper argues that declarativeness in programming fundamentally involves automating computational work, emphasizing its role as the core of programming and exploring its implications for teaching through a study of Clojure examples.
Contribution
It presents a new perspective that declarativeness is central to programming, supported by a systematic analysis of novice coding examples in Clojure.
Findings
Declarativeness simplifies programming by automating computational work.
Using Clojure makes declarative concepts accessible to beginners.
Declarative approaches enhance understanding and teaching of programming.
Abstract
Being declarative means that we do computer programming on higher levels of abstraction. This vague definition identifies declarativeness with the act of ignoring details, but it is a special case of abstraction. The unspecified part is some computational work. Automating computations and offloading mental processing are essentially the same concept, which is fundamental for both computational and mathematical thinking. This shows that declarativeness is not just a particular style, but it is the core idea of programming. Here we demonstrate this argument and examine its consequences for teaching by a systematic study of coding examples from an introductory programming course. The chosen language is Clojure, as it is proven to be accessible for novices.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsComputability, Logic, AI Algorithms · Logic, programming, and type systems · Logic, Reasoning, and Knowledge
