Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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?

share|improve this question
1  
Ha! I was certain someone would ask this eventually ;) However you need to do a little bit more research, Smalltalk might have not been immensely popular, but I think it counts as mainstream, at least by the term's definition in the early 70s (and let's not forget Simula). Also, are you talking specifically about class based object orientation? –  Yannis Rizos Nov 4 '12 at 6:01
5  
Interesting question. I recently discovered that Simula 67 had virtual methods (in the '60-ties already!). It seems that many of the most important concepts in CS were discovered during the first two, three decades of its history (1950-1970). Many new things that we see today are actually a mix of very old concepts. –  Giorgio Nov 4 '12 at 7:05
3  
@Giorgio: I consider that discovery a rite of passage that marks your growing up from being infatuated with the latest and greatest to being an experienced developer who can see through fads and distinguish what's actually useful. –  Michael Borgwardt Nov 4 '12 at 10:29
    
@Michael Borgwardt: I totally agree with you (and I am not easily infatuated by the latest technologies :-) ). I think an experienced developer should judge technology by how effectively it can solve his / her problems. A newbie may be impressed by new stuff and consider it better simply because it is new (hype). Regarding OOP: I knew that these concepts were developed over many years, but when I took a look at Simula and saw that they had already invented a lot of concepts that we commonly use today, I was really amazed. –  Giorgio Nov 4 '12 at 19:28
add comment

1 Answer

up vote 21 down vote accepted

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:

share|improve this answer
    
A recent find: A HISTORY OF ALGOL 68 - Although it doesn't have much to do with object orientation, it's a fascinating read for programming history buffs. –  Yannis Rizos Nov 4 '12 at 10:11
    
In 1994, Python 1.0 was released. –  gerrit Nov 4 '12 at 10:52
1  
@gerrit I know, and there are several other languages released in the early and mid 90s that I've intentionally skipped (for example Perl, PHP, Ruby, JavaScript), either because they weren't really popular at first, or because they didn't really support object orientation from early on. Python wasn't really an influential language during its first years... –  Yannis Rizos Nov 4 '12 at 10:57
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.