Here’s another post in my general theme of “using a technology/comp-sci metaphor for creativity, new media and productivity” … In the generous sense.
For the non technical: compilers are computer programs that take raw computer code and turn it into something binary that a computer can run. This makes it much easier to write programs, because compilers let programers abstract certain functionality1, and because compilers can do some consolidation and tuning as they run.
While traditional compilers are used for the heavy duty code situations and applications written in C (and C++ and Objective-C, and so forth), when you think about it there are lots of situations where creators, in the digital world, are making something that is then processed by a computer script. In a way, web pages are like that, (though that happens every time their accessed rather than once.)
The wiki program that I use, ikiwiki, works in this way by taking a directory of files and turning into web pages that I can read in the browser. This is basically how the wonderful LaTeX typesetting engine works. Also, interestingly, I suspect this is how most pro-level video/audio editing apps like FinalCut work (make a lot of edits and then render something out. Edits are made as a series of instructions to XML file, which the program then renders or compiles.)
So what’s the benefit to this? Here’s what I’ve come up with:
So more than anything working in this way makes a lot of sense. Though I think to be fair there is a learning curve (but isn’t there always?). The question I’m asking myself (and you, dear reader) is other than the general improved efficiency and cleaner workflow, is there a bigger extrapolation or application of this that we (or I) could apply to another phase of the creative/productive process? Rather than just automating the presentation, is could someone take the model where some sort of raw file is “put together” later and have that assumption shape the way that they create content?
I’m not sure what that would look like, or even if it’s a good idea, but its something to think about.
So most computer programs don’t tell the hardware of a computer what to do, that takes a lot of time, forces programers to reinvent the wheel constantly, and is difficult to transport from one type of machine to another. So most programs really just tell other programs (like operating systems, databases, web-servers, and so forth) to do things. The further you get from the actual hardware (“the metal”) the more abstracted the program is. Right? This concludes your ill-informed computer science lesson of the day.
↩I suppose in a certain sense, I’m making an argument for using markup languages and text rather than more complex solutions, or compilers specifically, but I said that this was an “inspiration by technology” piece rather than something more specifically.
↩