Comment by aston
18 years ago
If you take a look at that nanopass paper, it's very much in the "just use macros" school of thought. It's even in Scheme.
For the tldr crowd, http://www.cs.indiana.edu/~dyb/pubs/nano-jfp.pdf.
18 years ago
If you take a look at that nanopass paper, it's very much in the "just use macros" school of thought. It's even in Scheme.
For the tldr crowd, http://www.cs.indiana.edu/~dyb/pubs/nano-jfp.pdf.
That's an excellent paper, thank you.
One of the advantages of realizing that compilers are 'nothing special' is that you can start to use them all the time to simplify your work. It lets you think at a higher level.
This should be a little lesson on the dangers of skimming over dense prose, and the power of recommendations on YC. I completely skipped past the nanopass paper, even though it's an approach I condone, and skimming a behavior I frown upon.
Not a new idea-- Griswold wrote Snobol as a set of 360 macros.
In the world of programming languages, nothing's new; all of the good stuff was thought of by 1970. That's basically the extent of what I learned in college.
This is absolutely not true. A lot of great work has been done in the past decade on interpreters and speeding them up. Modern interpreters are just compilers where you use the code immediately (most are direct threaded byte-code interpreters), so all that work counts.
It is strange that modern software engineering en masse took such a huge step backwards in the C++ era of the late 80's and early 90's, with tools falling back to primitive levels and languages becoming much less forgiving. It's only now that we're finally returning to the state of the art from 20 years ago.
Of course, some people bucked the trend and used these somewhat neglected technologies despite a lack of public popularity. Paul Graham is one of them, and he ended up doing pretty well for himself. :)
I don't think that's 100% true. There are some good new ideas emerging due to new machine models: Erlang for example, which is like the machine language of concurrency. And Haskell wasn't really anticipated by the 70's, nor is much of Fortress -- especially the methods they're using for parallelism.
2 replies →
some exceptions i can think of :
clos and the meta object protocol - the idea of leaving the language open for the user to change by using a metaclass
hygienic macros
first class continuations
monads
functional reactive programming
the first few developed in the 80's while the last is quite recent
All the paradigms were discovered by the 70's, and a language is only really the View/Controller for the paradigm. At least that's true as far as what's currently published.