2 ms·
On a shallow level, is trivial; as in “a program is a file with ascii codes, like any other file, is data” A little deeper, you can think “an obj file are byte
by f1shy 2y ago
On a shallow level, is trivial; as in “a program is a file with ascii codes, like any other file, is data”
A little deeper, you can think “an obj file are bytes, even called TEXT section, so the same, a program is data”
But in Lisp the parallel comes at a much higher abstraction level. In the sense that you learn “algorithms AND data structures” like 2 different things, and when they conflate, that is the aha moment.
It is interesting when you start to understand that data can affect flow control exactly as code, that you can generate code on the fly as needed, just as data (which is bot really possible in C- in an easy way, at least) and you even can generate code, which generates code, which gene… that runs at the end.
Let me add another thing: probably you have heard “self modifying code is dark, dangerous, not recommended”. Now, if you really embrace the idea that data is code, code is data, then you start to be very cautious with variables. Any change in a variable, is changing code… I think that is the reason why people in functional languages value so much immutable data.