I believe SICP's definition of a language involves these: means of simple data, means of combination and means of abstraction. Numbers, strings, data structures/objects are the simple data as you would find in any program. Functions and variables are means of abstraction. And what those functions and variables define also create new abstractions and means of combination. This is where our own language comes in. In this way, all your programs define languages, and to run them is to perform evaluation of these languages. So the program is the evaluator of a language we've defined in trying to describe our problem domain. I'd give examples but SICP gives ample.
Ask HN: SICP says "Program == Language Evaluator" What does this mean?
11–12 of 12 posts
Re: Ask HN: SICP says "Program == Language Evaluator" What does this mean?
#12Hello, I don't really have as deep an understanding of this subject as I'd like, so my explanation might seem rough, but here's my two cents. You can say a language is a set of rules. Syntactic rules describe what proper sentences in that language look like, while semantic rules describe actions associated with syntactic constructs. The most basic of languages have simple semantic rules. For each language, you can ha…
I don't think this is really what is meant in SICP. It's not that the function takes in inputs, it's that the program itself is a language evaluator. Consider the following program:
(define (add-squares x y)
(+ (* x x) (* y y)))
This is a program which evaluates a squares-adding language in which we have a limited number of expressions. Such as: (add-squares 2 4)
(add-squares (add-squares 4 3) 5)
etc.