Futurist Programming Notes
Paul Haeberli and Bruce Karsh
A Futurist Programming reading list
Here are several references that you might find useful.
- Jon Bentley, Writing Efficient Programs, Prentice-Hall, 1982.
- Ester Coen, Umberto Boccioni, Abrams, 1988.
- Dana Giola, Can Poetry Matter?, The Atlantic Monthly, May 1991.
- Simson Garfinkel, Daniel Weise, and Steven Strassmann, The UNIX
HATERS Handbook, IDG books, 1994
- Paul Haeberli, http://www.sgi.com/grafica/future/, WWW, 1994.
- Pontus Hulten, Futurism and Futurisms, Abbeville Press, 1986.
- Butler Lampson, Hints for Computer System Design, Proceedings of ACM
SIGOPS, Operating Systems Review, Volume 17, Number 5, Oct, 1983.
- Henry Massalin, The Superoptimizer: A Look at the Smallest Program,
Proceedings of ACM SIGOPS, Operating Systems Review, Volume 21,
Number 4, Oct, 1987.
- Henry Massalin and Calton Pu, The Synthesis Operating System,
Proceedings of the Fourth Workshop on Real-Time Operating Systems,
Cambridge, MA, July 1987.
- Caroline Tisdall and Angelo Bozzolla, Futurism, Oxford University
Press, 1978.
Computer "Science" terms exposed
- Structured programming = slow.
- Modular = bloated.
- Extensible = late.
- Reusable = buggy.
- Object-Oriented = slow and bloated and late and buggy.
- Top-Down Design = hard to use.
- Standard Compliant = slow and late and hard to use = obsolete.
- Automatic = Manual.
- Configurable = Unfinished.
- Fully Configurable = Completely Unfinished.
- Type Safe = Imponderable.
- Hack = useful.
- Little Hack = very useful.
Modern software is incredibly wasteful
The user's time is a precious thing. Let's look at some boot times:
- Television - 3 seconds
- Automobile - 2 seconds
- Microwave oven - less than 1 second
- Video game - less than 1 second
- Unix workstation - 120 seconds or more
Isn't it surprising that the more expensive machines
waste more of the user's time. A UNIX workstation
will execute over one billion instructions for itself, before
executing even one instruction for the user.
Is any progress being made in software development?
In the last 20 years machines have increased in performance
by a factor of 200. Why hasn't software performance improved
by a factor of 2?
Slogans
- Sure today's software is a little slow, but the thing you gotta
remember it's hard to use AND completely bug ridden.
- Usefulness Is Primary.
- Instead of Structured software, why not Liquid software?
Notes on computer science tradition
- Unscientific - The acceptance of ideas depends more
on personalities than on technical merits.
- Anti-Intellectual - Alternative ideas are discouraged.
- Stodgy - The primary concepts haven't changed
in 20 years.
- Dogmatic - Irrelevant criteria are used to evaluate
peoples' work.
- Arrogant - most NEW ideas are feared and rejected.
- Insular - isolated from other disciplines.
Futurist Programming Exercises
- Remove all system files that haven't been accessed in the
last 6 months. Ours works fine!
- Write a program that dynamically generates code.
- Try indenting from right to left.
- What is the shortest program that will accomplish your task?
- lowest number of characters in source.
- smallest executable.
- executes least number of instructions.
- Write a program using assembly language. Compare this to
a C++ implementation.
Baggage
- Most operating systems have way too much baggage.
It's like you're traveling around the world with 6000
pounds of luggage.
- Futurists don't check any baggage at all - they carry on
just one piece.
Technological status seeking
- How many transistors does your radio have? Does
it have 9 transistors?
- How many jewels in your wrist watch? 17 jewels?
- Is your program developed using Object-Oriented
programming techniques? Is it Extensible?
- IT DOESN'T MATTER as long as
- You get good reception.
- The watch keeps accurate time.
- Your program runs FAST and does what the
USER wants.
How would you wash a window?
Suppose we were asked to wash a window and we chose to
do it the same way that software is developed. We'd get things like:
- How to make really nice customizable buckets and
squeegees.
- A system for classifying window shapes.
and materials, including of course, window materials
and shapes that might be developed in the future.
- An analysis of how well a window washing
technique scales from windows the size of a bee's wing
to the stain-glass windows in the largest cathedral.
- A commitment for a full design review BEFORE starting
any implementation.
- A consultant to write a user's manual.
- A promise of compatibility with the new Window
Washing Standard from MIT.
- Plans for a set of meetings to discuss a schedule for
developing user training to teach users to wash windows
the modern way.
Who would you rather have "solving" this problem for you,
a computer "scientist" or a professional?
Futurist Programmers
- Henry Massalin - Superoptimizer, Synthesis Kernel
- Bill Atkinson - Quick Draw
- Jon Bentley - Programming Pearls
- Butler Lampson - Hints Paper
The tyranny of creeping elegance
"Check out this really cool sports car I just bought!"
- Yeah! but can you put a trailer hitch on it?
- Yeah!, but does it have 4 Wheel Drive?
- Yeah!, but how much can you carry in case you need to
take a dozen hogs to market?
- I've got this floor wax that's also a GREAT dessert
topping!!
Top Futurist Programming priorities
- It is something that has NEVER BEEN DONE BEFORE.
- The USER LIKES to use the program.
- The program is as FAST as it can be.
- The program is as SMALL as it can be.
- The program is BUG-FREE.
- The program needs NO USER MAINTENANCE.
- The program requires NO USER DOCUMENTATION.
- The program requires NO SYSTEM ADMINISTRATOR
We REJECT
- COPIES of work that has been done before.
- USER CONFIGURABLE software.
- PAPER documentation.
- Any program that WASTES users' precious MEMORY.
- Any program that WASTES users' precious TIME.
- System administration and ADMINISTRATORS.
- Anything that is done for the convenience of the
programmer at the expense of the user.
- Extensibility, Modularity, Structured Programming,
Reusable code, Top-Down Design, Standards of
all kinds, and Object-Oriented "METHODOLOGIES".
- All additional forms of USELESS and IRRESPONSIBLE
WASTE.
|