User login

library

Library Oriented Programming

What do you think of this idea? It's an idea about a way to program. I call it Library Oriented Programming.

I don't know if this is a new coinage, but it refers to programming principally with third-party libraries and using the main program to glue the libraries together. You model the problem as a sequence of library calls.

I got this idea after reading Josh Susser's response to David Heinemeier Hanson's talk at RailsConf two weeks ago.

Short synopsis:
DHH says there are three ways that Rails could lose its "advantage" over "mainstream" web frameworks.

  1. Mainstreams frameworks copy Rails' good features
  2. A new technology comes along that is better
  3. Rails becomes mainstream

Josh Susser insightfully responds that a fourth option is possible: that mainstream technology comes up with something that is "good enough". Rails could have ten times the productivity of other current technology. The new techniques might only double productivity, but that's good enough for the mainstream guys. And that will defeat the Rubyists' hopes for world domination.

It made me start thinking about what advantages Java has over Lisp. And definitely the proliferation of Java libraries is an advantage. So even though Java is not as powerful as Lisp on its own, the availability of several orders of magnitude more libraries is a distinct advantage. It helps explain Java's dominance in the market.

I often underestimate the network effects of lots of users. And the effect of millions of dollars being funneled into Java library development. I hate how Java makes me create an anonymous class just to create a lambda. But I have to do it a lot less than I would have since so many of the libraries are decently designed. And that means they are designed to use the strengths of Java and avoid the weaknesses.

So the language doesn't have to have the powerful abstractions of other languages. It takes more work to build a library. But who cares how much it costs when IBM funds it? The libraries take Java halfway---and that's often good enough.

Syndicate content