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:
Best Answer
To answer the historical aspects of the question:
The design philosophy is explained in The C Programming Language written by Brian Kernighan and C designer Dennis Ritchie, the "K&R" you may have heard of. The preface to the first edition says
and the introduction says
The list goes on for a while before the text continues:
(I only have the second edition from 1988, but the comment below indicates that the quoted text is the same in the 1978 first edition.)
So, yes, the terms "high level" and "low level" were in use back then, but C was designed to fall somewhere on the spectrum in between. It was possible to write code in C that was portable across hardware platforms, and that was the main criteria for whether a language was considered high level at the time. However, C lacked some features that were characteristic of high level languages, and this was a design decision in favor of simplicity.