Martin Fowler recently posted a nice little essay demonstrating the difference between two schools of thought on designing programming APIs: humane and minimalist. In this essay, the humane interface (as exemplified by Ruby) is contrasted with the minimalist interface (as exemplified by Java).
This is a very interested read, and really captures the heart of the Ruby philosophy.
It also made me wonder if Python falls in to the minimalist category with their philosophy of “there’s only one way to do something”. I’ve never used Python myself, so I’d appreciate hearing from current or former Python developers on this.
Humane interfaces do more work so that clients don’t have to. In particular the human users of the API need things so that their common tasks are easy to do – both for reading and writing.
There are good arguments on both sides. Personally I lean to the Humane Interface approach, although I do think it’s harder.