How to optimize software by 3D printing a custom circuit board?
Alan Kay had a very fortunate quote back in the 80s: " People who are really serious about software should make their own hardware " (talk at Creative Think seminar, 20 July 1982). What he didn't realize is that, in the future, manufacturing plants would be so cheap that people would be able to make their own hardware at home, on their desktop printer.
We are going to enter an era where 3D printing and software optimizations are so sophisticated that most consumer applications will print their own circuit boards to improve performance while saving energy. At this stage, full-featured desktop-manufacturing pipelines, similar to today's 3D printers, will be a constant good in many middle-class homes throughout the world.
Local workers would be able to customize any software downloaded from the web to local performance and energy saving needs. The vibrant community of hackers would be able to print anything, anywhere. It is like buying inlaid furniture, but for software applications instead.
As general-purpose programming grows into more complex and abstract software ecosystems, the overall complexity of simple applications grows. The evolution of computer science ended up replacing high-performance hardware-level functions by less efficient easy-to-use instructions, optimized by an abstraction layer. Since the beginnings of the consumer-faced programming, layers and layers of abstractions have been created, one on top of the other. The toughest decision of a today's computer scientist is how deep in the abstraction ocean he must go to achieve the desired performance.
Everything changes when the basic hardware can be easily optimized for a given application. We could create an HTML-based computer chip for browsing needs of a given website or an optimized tablet to run a single app forever. The clock of the processor can be matched with the required updates on the app. There are no need for process scheduling, load balancing or any conventional costly infrastructure of multi-thread systems. Significant repetitive parts of the high-level code could be transformed into a hard-coded circuit that executes the whole sequence in a single processing cycle. More processors could be added for given parallel tasks, high-performance memory could be added physically close to costly procedures and the storage drive could be optimized for the amount of access the app actually needs.
This is the beauty of having the best hardware for a given code. Now imagine that this could be done automatically, by compiling the source code to the printer, directly. Thousands and thousands of lines of code can be converted into specific processing chips made based on your preferences setup at your home. Every time your preferences change, you can hardcode them again in a new board. The printed board could be plugged into your personal computer or tablet to enhance performance just like today's graphics boards.
For years nVidia and ATI have been releasing high-performance highly-specialized circuit boards for gamers. Now think about an open-source mass-forging general-purpose application-tailored nVidia board built on your house. Or, maybe, an nVidia-like graphics board designed for a single game.
All of this in a smartphone-like portable device. Today we are in the mainframe age of manufacturing. We will go through desktop manufacturing pretty soon; then portable laptop-like manufacturing so that people can make things everywhere; and then, finally, the whole process will be into a phone. A seamless operation, integrated with our social activities and real time needs. Printing will be everywhere, anytime.
Of course, part of the challenge is about the NP-hard nature of the optimization software. Most solutions will suffer from significant constraints in order to make the optimization solvable. The question that remains is how much performance can we actually get by designing specialized electronics in a smartphone-like device?
The second challenge (raised by Sean in the comments) is about materials, recycling and environmental conditions for global scale 3D printing. If things are really easy to build, they will be cheaper, and people will trough things away more easily. But what about unassemblers? If a cell printer could build an electronic circuit at home, it can probably unassemble it as well. One could re-use parts or recycle them properly.
The following pages are talking about "Code Printing":