Variables in Code
Variables are so fundamental to programming that it is easy for an experienced programmer to forget what it means to learn about them for the first time.
An easy one
This program is easy for a beginner who has learned that
* is multiplication:
x = 15 write x * x
Clearly the first line says
x stands for 15,
so the second line writes 15 * 15, which is 225.
A hard one
On the other hand, a typical beginner cannot predict that
this program writes only perfect squares, (even after they
have learned that
random [1..10] makes a
random number from 1 to 10).
x = random [1..10] write x * x
What is the trick here?
Definitions versus memory
In code, the assignment
x = value represents
storing a value in memory.
But if you have never written a program before, your experience
is that variables are used for definitions,
not memory. When variables are used in algebra, the
x = y + 1 represents a permanent
timeless definition. Therefore you might read our program
random [1..10]everywhere. (wrong)
write x * xmeans
write (random [1..10]) * (random [1..10]).
- So it might randomly write something like 3×7 = 21. (nope)
This is the wrong mental model in most modern programming languages. Here is the way to think about it:
random [1..10]and store the answer in memory as
write x * xmeans to look up the stored value of
xeach time it is needed.
- So it might randomly write something like 8×8 = 64. (yes!)
Variables are different in code and algebra. Variables in code represent a piece of memory.
- A variable is name for a piece of memory.
- A program is run in order from top to bottom.
x = valuestore a value in memory.
- Referring to a variable looks up the value in memory.