Simon Willison’s Weblog

Subscribe

Ninety percent of everything is crap

15th May 2003

Via the comments on Robert C. Martin’s One per Pixel, I came across Sturgeon’s Law from the Pragmatic Programmers: Ninety percent of everything is crap. The article has the following to say about software development:

Abstraction is the key to success in designing and programming computer systems. Your favorite programming language should allow you to easily map an abstract problem domain onto the more constrained solution domain of data structures and logic.

This simple message is exactly the point put across in the classic text book Structure and Interpretation of Computer Programs, which I had to review as part of a recent coursework assignment on the Scheme programming language. The pragmatic programmers article goes on to discuss how todays most popular languages, C++ and Java, do a very bad job of helping to build abstractions: Typing public static void main (String[] args) is hardly the most intuitive way of defining the entry point of a program!

One of the things I liked most about SICP was its constant theme that no one language is perfect for any one job, and there is no harm in defining new languages to fit new problem spaces. The Lisp / Scheme / Functional style of programming seems to revolve around building the language up towards the problem, rather than hacking at the problem until it has been expressed in the language.

I guess what I’m trying to say is that over the past few weeks I’ve really learnt to appreciate the importance of accepting and studying a wide range of different languages and programming techniques. Just because anything can be written in a language (which should be true of any language that is Turing complete) doesn’t mean there aren’t more effective ways of solving a problem available if you look elsewhere.

This is Ninety percent of everything is crap by Simon Willison, posted on 15th May 2003.

Next: PyMeld

Previous: All Courseworked Out

Previously hosted at http://simon.incutio.com/archive/2003/05/15/moreThoughtsOnProgramming