Programming History – Why Object-Oriented Paradigms Took Long to Go Mainstream

historyobject-orientedprogramming-languages

I read this question and it got me thinking about another fairly recent thing. Object oriented languages. I'm not sure when the first one was created, but why did it take so long before they became mainstream?

  • C became vastly popular, but didn't become the object-oriented C++ for years(decades?) later
  • No mainstream language before the 90s was object oriented
  • Object oriented really seemed to take off with Java and C++ around the same time

Now, my question, why did this take so long? Why wasn't C originally conceived as an object-oriented language? Taking a very small subset of C++ wouldn't have affected the core language a whole lot, so why was this idea not popular until the 90s?

Best Answer

First, let's try to establish a timeline:

  • 1963 - Ivan Sutherland's Sketchpad is considered a pioneering work in both object orientation and GUIs.
  • 1967 Simula appears, and whether it or Smalltak should be considered the first object oriented language is still a matter of debate.
  • 1969 - Dennis Ritchie starts developing C.
  • 1972 - Smalltalk, a language heavily influenced by Simula, appears. It's the brainchild of Alan Kay, who is generally considered the inventor of the term "object orientation" (Alan Kay also inspired the eponymous character in Tron ;).
  • 1979 - Bjarne Stroustrup starts working on C with Classes, the precursor to C++.
  • 1983 - Objective C appears, and essentially is an effort to add Smalltalk's flavour of object orientation to C.
  • 1985 - Object Pascal appears, and is almost immediately popularized by Turbo Pascal 5.5.
  • 1986 - Work begins on CLOS, an effort to bring object orientation to Common Lisp.
  • 1991 - Visual Basic is released.
  • 1995 - Java is released.
  • 1995 - Delphi is released.

Ritchie's main influences were BCPL and ALGOL (both are imperative languages), and C was created at a time when Simula's and Smalltalk's approach to object orientation wasn't yet well known. It was completed around 1972 and C with Classes appeared only 7 years later, with both Dennis Ritchie and Brian Kernighan being involved in its inception:

At the time, I considered C the best systems programming language available. That was not as obvious then (1979) as it later became, but I had experts such as Dennis Ritchie, Steve Johnson, Sandy Fraser, Greg Chesson, Doug McIlroy, and Brian Kernighan down the corridor from whom I could learn and get feedback. Without their help and advice, and without C, C++ would have been stillborn.

Contrary to repeated rumors, I was never told that I had to use C; nor was I ever told not to use C. In fact, the first C++ manual grew from troff source of the C manual that Dennis gave me. Many new languages were designed at Bell labs; in "Research" at least, there were no rules enforcing language bigotry.

Objective C appeared 11 years later, and both it and C++ were major and successful efforts to bring object orientation to C. The gap might seem long now, but I don't think it was particularly long at the time, remember we're talking about an era before the World Wide Web. 1993, when Mosaic (the first browser) appeared was a turning point in the industry. Java and Delphi, released a couple of years later, had a huge advantage over their predecessors, at least in terms of popularity. The web was also one of the platforms Sun was targeting with their WORA promise, perhaps the more important one at the time, and Java was heavily marketed as the language for the then newly born platform.

Another key factor is that the late 1980's and early 1990's were a time when GUIs started becoming popular, especially in home computing, while at the same time hardware was getting cheaper and cheaper. Object orientation is an extremely convenient paradigm when developing GUIs and graphic oriented applications in general, and Turbo Pascal, Delphi, Visual Basic and (perhaps to a lesser extend) Java were lauded (at the time) for the simplicity they brought to GUI development.

Sun's aggressive marketing of Java obviously also played a role, however since I still vividly remember my first interaction with it, I was definitely not impressed. My first reaction to Java was "hm, nothing more than a resource hungry interpreted C++, I'll stick to Turbo Pascal, thank you very much" (hey, I was only 17 at the time ;). I don't know how anyone else reacted to Java at the time, but for me it was just a fad and I quickly moved on to Delphi (and Visual Basic, sigh), and only started using Java a few years later, in college, and only because it was a compulsory course.

While it's true that Java, and its flavour of object orientation, become popular extremely quickly, I really don't think the paradigm wasn't fairly popular before the mid 1990's, the introduction of the web changed our definition of popularity. In any case, the mid 1990's was a time when software development in general had a spurt of popularity, with the web, the proliferation of GUIs, and cheaper hardware being key factors. Java was simply at the right place at the right time.

Further reading:

Related questions:

Related Topic