Vincent Gable’s Blog

March 3, 2009

Vincent’s Notes: End To End Arguments in System Design

Filed under: Programming | , , ,
― Vincent Gable on March 3, 2009

At Michael Tsai’s suggestion I listened to the paper End-To-End Arugments in System Design while driving. (Fair warning: Since I was also driving while listening, I didn’t absorb everything as well as I should have.)

The thrust of the paper is that you generally want to make your low level components (aka libraries) simpler then you think. Counter-intuitively, building extra reliability into a low-level component does not (usually) make it easier to build a reliable application that uses the component. That’s because the application has to work around all sorts of other errors from different components. So it must have error handling code. Making one low level component “smarter” does not change this. But it does make the component more complex. And some of that complexity is duplicate code that does just what the application’s error handling code does.

The “End to End” in the title of the paper is from a file transfer application having to do an “end to end” check to make sure that the files at both end of the transmission are the same.

Conclusions

End-to-end arguments are a kind of “Occam’s razor” when it comes to
choosing the functions to be provided in a communication subsystem.
Because the communication subsystem is frequently specified before
applications that use the subsystem are known, the designer may be
tempted to “help” the users by taking on more function than necessary.
Awareness of end-to-end arguments can help to reduce such temptations….

March 15, 2008

Standard Error Messages

Filed under: Programming,Research,Usability | , ,
― Vincent Gable on March 15, 2008

UPDATE 2010-04-08 CLANG/LLVM comes through!. OK, I can believe I’m living in the 21st century now :-)

All languages should include well-written error messages as part of their specification. These messages should include a link to a good explanation of the problem, and anything someone learning the language might want to know, like the design behind the error.

Every standards-compliant compiler would be required to emit the readable error messages.

This could eliminate inscrutable error messages, in one fell swoop.

(The old MPW Compiler had some
quirky and humorous error messages. “This struct already has a perfectly good definition”, for example. Unfortunately, I don’t know of any compiler that had different but more useful error messages. It’s time somebody wrote one.)

Powered by WordPress