Wednesday, January 20, 2016

Is object-oriented programming dead?

Is object-oriented programming dead?  Or a disaster?  It's interesting for us ancient geeks to survey the apparently never-ending train of code design fads.  I have personally experienced three major such fads: structured programming, object-oriented programming, and (the current one) functional programming.  In each case, proponents touted the earth-shaking power, beauty, and correctness of their fad with religious fervor – and, often, with the sort of fanaticism one all too often associates with fundamentalist religions.  In each case, the impact on how everyday programmers actually go about their work has been ... minimal. 

I'm not saying that there has been no progress made in understanding software design or architecture, and I'm certainly not saying that the state of software design and architecture hasn't progressed.  They have, and in major ways.  Teams of programmers today routinely build systems that are vastly larger and more complex than anything built even 10 years ago.  But I am saying that most of this progress has been made through developments other than those major software design fads.  We don't build large, complex systems today because of (say) object-oriented programming.  Mostly, I think, we can build them today because we have far better tools available (true in no small part to the open software movement), and on better programming languages. 

When I use IntelliJ Idea today to write Java or JavaScript code, I frequently marvel at its power compared to the tools I used in the late '70s.  It's like comparing Home Depot's tool section to a screwdriver with a broken handle and a boogered-up blade.  Those tools have made far more impact on my programming productivity, and on the reliability of the programs I write, than my inculcation into the fads of structured programming, object-oriented programming, and functional programming have.

And then there's the programming languages, which could quite reasonably be thought of as just another tool.  It's almost impossible to overstate the impact of the sheer power of a language like Java (and I'm including both its standard libraries and the host of open source libraries readily available for it) compared with the assembly language environment I programmed with back in the '70s.  I can quite literally code things in minutes in Java that would have taken months in assembly language back in those days. 

So is object-oriented programming dead?  Nah, not really.  But it's not all that important, either...

No comments:

Post a Comment