Hard-Coding Bottom-Up Code Generation Tables to Save Time and Space (1991) [pdf]
citeseerx.ist.psu.edu
citeseerx.ist.psu.edu
I forget the details, but I once came up with a technique and was quite proud.
A few months later I stumbled across a paper written in 1986, the year of my birth, that described everything I'd thought of and a few things I hadn't.
Someone had my idea before I was born, and thought through the implications better than I did. Doesn't get much more humbling than that...
What is interesting is how someone in 1986 was thinking about the same problem and came to a similar conclusion.
I used to think my ideas were unique, but then I realised that we're all absorbing similar information, and the likelihood of an idea being 100% unique is rare.
But if you thought it up and someone somewhere else had a similar idea, you still thought it up on your own.
Back in the very early 2000s I had an idea for efficient backups that was essentially rsync, while tinkering with the thought I hit a block and started looking around for implementations of, or papers about, rolling checksums and such, and found rsync.
I wasn't put out that my idea wasn't original - I was glad twofold because not only had someone done it better already (so I could just use it for the task as hand), but it at least confirmed that my thinking was very much on the right track.
Also there seemed to be a higher number of mathematicians involved in computers back then.
One thing I've learnt is that principles matter more than code. Not deep I know, but take a look at the market...
Smart people were working with computers before they were invented. Consider the Difference engine, or the Antikythera mechanism, Analog computers, and efforts to organize the production of results for tables used in calculation, or engineering. "Computer" was once a title for a person, too...
At some point in the 80's academia took a turn away from accessibility. While the boom in public internet did skew things back towards freely available, there are a multitude of forces attempting to conceal the lamp of knowledge, usually behind a paywall. This subtopic is worthy of independent discussion.
This also reminds me to remember Aaron Swartz.
"BURS (bottom-up rewrite system) theory tackles the problem of taking a complex expression tree or intermediate language term and finding a good translation to machine code for a particular architecture. Implementations of BURS often employ dynamic programming to solve this problem."
Could somebody in the know please say if this BURS stuff is used in, e.g., GCC or Clang or LLVM? Or maybe something else that might be familiar?
I want to note that it straight-up crashes Chromium's PDF reader.
It seems the authors' interest was more on how using their code generation tables could speed up the application of those tree rewrite rules.
"A paper consists of a constellation of artifacts that extend beyond the document itself: software, proofs, models, test suites, benchmarks, and so on. In some cases, the quality of these artifacts is as important as that of the document itself, yet our conferences offer no formal means to submit and evaluate anything but the paper."