Object Oriented Programming is Dead
OK perhaps not dead but Robert Harper, a professor at Carnegie Mellon University, says(Teaching FP to freshmen) that object oriented programming and design is “unsuitable for a modern CS curriculum. ” More of the quote in context is:
"Object-oriented programming is eliminated entirely from the introductory curriculum, because it is both anti-modular and anti-parallel by its very nature, and hence unsuitable for a modern CS curriculum."
As you might imagine there is some dissent in the comments. When I posted this link to my Facebook page there were some 16 comments, mostly in disagreement, in a short period of time. One person, who hires people for industry responded with “I'm tired of interviewing interns who know Haskell but can't code up strlen() in C. ” But as Robert Harper says in a reply to a comment on his post “Our goal at Carnegie is provide students with an education, not training.” What does that mean anyway? Is there a conflict between industry and academia? Academics often believe that “There are plenty of opportunities for them to learn the old ways, and to pick up industry practices on the fly” while industry hiring managers lament the fact, as one VP told me, that it takes an average of a year and a half to turn a recent college hire from a good school into a fully productive software developer. Is is any wonder that many companies prefer not to hire people right out of college?
I’ve seen programming paradigms come and go. I started programming as industry (and academia) were adopting structured programming. That was a big advance at the time but required some changes in the way people thought and designed code. Later I lived through the long, slow and at times even more painful transition to objected oriented programming. Are we entering the age of functional programming? Perhaps. But perhaps not to the exclusion of other paradigms.
We do have new needs today. While first structured and later OOP developed to support the needs of larger programs and larger teams of developers as well as the needs of dealing with more data today the key new issue is parallelism. One of the design goals behind the development of F# (a functional language that is built into Visual Studio) is parallelism and making it easier to spread work across multiple processors. Clearly that is where we have to go to continue to be able to take advantage of the newest hardware. But does that mean OOP can become optional or that we can wait for students to learn it after college? That I am not so ready to buy.
Even at the peak of OOP mania I have maintained that not everything has to be an object and that a mix of paradigms would/did/does work. I think that is still going to be the case even as functional programming grows in usage and popularity. But will old style programming completely go away? I don’t think so.Will objects go away? Not a chance. I think universities, especially those who provide an “education not training” do their students a disservice if they ignore the reality of what is currently in the field. The handwriting is on the wall and functional programming is going to continue to grow in importance. But ignoring OOP now is not doing anyone any favors. Just my 2 cents.
Comments
Anonymous
March 22, 2011
LOL, some academics are so clueless about the real world.Anonymous
March 22, 2011
Can industry afford to hire untrained but highly educated college graduates? Kind of like hiring a teacher that is familiar with all the latest in education research but cannot help a 16 year old is failing a math class. A computer science education is not like an English education; Shakespeare has not written anything new in the last few years, something new occurred in computer science last week. That is one of the things that is a real pain about teaching CS; last year’s course may not be relevant any more. If I want to teach factoring polynomials I can grab a 20 year old text (even a 100 year old text for that matter), dig up my course notes from last year and be on a roll. Grabbing that old FORTRAN text might not be preparing a programming student for reality. A little realistic training can go a long way towards paying back that student loan.Anonymous
March 22, 2011
If OOP is dead, what's the replacement? And don't say Parallelism - that's a concept that's tangential to OOP - not a replacement to OOP.Anonymous
March 22, 2011
Keith, CMU is replacing OOP with functional programming using a version of ML.Anonymous
March 22, 2011
Some one has missed the point.. OOP is not dead... Every thing is based off objects. Even the buttons in the Facebook page people were using to commit on. The question is where are they going to find that out. And what class will teach the the basic of programming that as you know, some get out with out knowing how to do even simple thing.Anonymous
March 22, 2011
The comment has been removedAnonymous
March 23, 2011
Ignorance is bliss.Anonymous
March 23, 2011
AH, Bliss. That is a wonderful programming language I never got around to learning. I don't know that it is used much anymore.Anonymous
April 05, 2011
if you consider a function as an object, then everything will be fine.Anonymous
April 09, 2011
"Even at the peak of OOP mania I have maintained that not everything has to be an object and that a mix of paradigms would/did/does work" I think that is right,