Compiling, Linking, and Linq-ing
Reading through Rick's Flat File post, had me thinking about the benefits of having LINQ at your fingertips.
It strikes me that the process of figuring out which variables you're touching when you're compiling a line of code is really a database query. Scoping and the semantics of scoping are part of the query (as well as how the database has been built).
Further, the actual link of a completed compile (whether or not it's being done at build time or run time), is another query.
The process of compilation should really be the process of building up a database.
That then ties into Rick's query as to why we're not using a database for our source instead of a flat file. One answer is that we could be. If there is a reflexive transformation that can turn a file into blobs, than we could already be there.
The reason to keep source in flat files has as much to do with tradition as it does with human factors. People are very aware of space and spatial layout of things and this translates naturally into flat files. People develop a familiarity with the layout of a file and can navigate very efficiently to the right location within it via muscle memory. Taking that away, is to take away a significant information management skill. It is important to replace it with one or more navigational methods that leverage similar or better skills.