
I think you raise an important point. Reading this, I realize that I have no principled basis for deciding what makes a good API, in any language. I do, of course, have lots of personal ideas and feelings about what APIs should be like, but not that I could defend as coherent and rational strategy.
So I ask myself: are there any good papers or books on this topic that outline a coherent and principled approach to API design?
if you like the historical approach, you could start with David Parnas On the Criteria To Be Used in Decomposing Systems into Modules http://www.acm.org/classics/may96/ then look for papers that reference this one. see also the interview http://www.acm.org/sigsoft/SEN/parnas.html for how he came to start thinking about interfaces and information hiding. cheers, claus