>>105
Code=data, you can make a program that writes your program at runtime
I just woke up and can't write nothing more than this.
... I repeat, yes, the realization that there's no magic inside the computer, that a C compiler is just another program, and that there's nothing special about source code to prevent it from being generated by another program, is mind-opening.
The alternative -- I'll spell it out for you, -- believing that compilers work by magic and that only a human can write source code, is outright retarded. Stupid. Idiotic. In a clinical sense, like shitting your pants.
Unless you are a babe, or just began learning to program, of course. But if you are a dude in your twenties, shitting your pants or thinking that compilers are magical, that means that you are mentally retarded.
And if you are a dude in your twenties or older, and you tell everyone about how you've discovered that you can shit in the toilet or that code is data, you are exactly one small step above clinical mental retardation.
Which is made all the funnier by your attitude, demonstrated for instance in the "beating the averages" by Paul Graham (the "blub paradox" part).
We (well, most of us) are not in that state about Lisp, we're just saying that Lisp has things other languages don't have
Every popular language developed in the past twenty years has higher-order functions and some form of compiler-as-a-service functionality. The former makes macros technically unnecessary, the latter is the gist of the "code is data" idea, true homoiconicity is just the glazing.
Every. Popular. Language. Not just TCL. Perl, Python, Java, Ruby, C#. Even C++ gets true closures now.
Every. Popular. Language. Does this sink in?
What can I feel about a person who is ignorant of this basic fact of nature, but (or, "and because of it") considers himself an expert on relative merits of programming languages, and his chosen language to be superior to most of the rest?
Of couse, I have periodically a big "Aha!" when coding in Lisp, when ``discovering'' a new way to do things, and do them better.
You never really master Lisp, you always have something new to learn because of the freedom it gives to the programmer.
This is not limited to Lisp. This is true for every popular language developed in the past twenty years. Unless you can't see that freedom, because you are an idiot, of course.
It is not about the language, it is about what you write using the language, and every popular language developed in the past twenty years lets you get to that part relatively painlessly.