views:

150

answers:

6

Working on PHP frameworks lately, i notice that many of them are inspired by java or ruby frameworks. For instance, the Doctrine ORM is based on RoR's Activerecord (with maybe some elements of Java's Hibernate). The language Groovy is inspired from Java, Ruby and Python. This made me wonder about the history of the many programming languages that exist today (particularly OOP lang) - which came first and who inspired who?

For example, Java is seen as the flag-bearer of OOP but python was there well before java came out in the mid-90's. So was java inspired from python, or rather what did java do to make OOP popular that python couldn't? What was the inspiration for Ruby in OOP? What is Propel's (another PHP ORM) inspiration? Any derivatives of Perl that are popular today? BASIC and COBOL died a natural death; which languages do you see diminishing in the future?

I am not sure what is the question i should ask here. But feel free to share briefly some knowledge about the history of the programming languages you work on (if you feel this warrants a discussion).

Thanks

A: 

I was under the impression that C++ was the flag bearer of OOP and that Java was inspired by it.

MattC
Ouch. Smalltalk was already old when C++ came around :)
Aaron Digulla
Ah, but I was young when i taught myself C++ :)
MattC
+4  A: 

There is a poster and a Wikipedia article. They give an idea of the general history.

Aaron Digulla
+2  A: 

Well, afaik, Smalltalk is really the inspiration for most things OOP. iirc, it was the first fully OOP language, and it has inspired a number of common constructs, patterns, and principles today.

I would also suggest that languages evolve. PHP is only recently OOP. COBOL isn't dead (believe it or not, I just taught a class on software maintenance to a bunch of COBOL devs), it's just niche.

Just some things to consider.

Paul
The OOP models in C++ and Java are more influenced by Simula-67 than by Smalltalk.
mipadi
+1  A: 

They are not inspiritions, lots of them are common programming paradigms and design patterns. As of syntax, in OOP fashion many languages inspired by Java.

For example, Java is seen as the flag-bearer of OOP but python was there well before java came out in the mid-90's.

As far as I know in the middle of 90's Python was not Object Oriented Language, neither was PHP.

eyazici
Python's been around since the early 90s and, as far as I know, has always been object-oriented.
mipadi
I am not sure for Python, so I said "afaik" since it supports multiple programming paradigms (primarily object oriented, imperative, and functional), but I am sure OOP comes with 4th version of PHP.
eyazici
+2  A: 

This is kind of a hodgepodge of questions, some of them open-ended, but here's a stab at a few of your specific queries:

So was java inspired from python, or rather what did java do to make OOP popular that python couldn't?

Simply put, Java followed the C++ model. C++ itself was popular because it was (mostly) backwards compatible with C, the premier systems language of the 70s and 80s, and basically just added OOP capabilities to C. Moving to C++ was an easy transition for C programmers, and moving to Java was a relatively easy transition for C++ programmers. Java followed the style of C++, but did away with some of its oddities (for example, it made primitives the same size on all architectures), and of course ran in a VM which enhanced portability.

Why didn't Python popularize OOP? Because Python was relatively obscure (especially outside of the Unix world) until later in the 1990s, after Java had become popular (which was due at least partly to web applets and the explosion of the World Wide Web in the mid-90s).

What was the inspiration for Ruby in OOP?

Ruby's OOP constructs are modeled mostly after those of Smalltalk (whereas C++, and by extension Java, are modeled mostly after Simula-67). That is to say, it focuses on message passing, rather than the binding of methods to class instances.

Any derivatives of Perl that are popular today?

Not that I know of (unless Ruby counts as a "derivative", since it's inspired greatly by Perl).

BASIC and COBOL died a natural death; which languages do you see diminishing in the future?

Well, COBOL's still around for legacy code. :) But yes, it'd be silly to start a new project from scratch with COBOL.

It's hard to say what other languages may perish. Java? It's not the trendsetter it used to be, and JVM-based languages like Scala are increasing in popularity, but so many people cut their teeth on Java, and there's so much code written in Java, that I can't see it going away anytime soon. C, C++? Nah, they still have their use (I wish C++ would die, but I digress). Perl? Development of Perl, especially Perl 6, is lagging, but like Java, there's so much code written in Perl that it's not going to go away. PHP? Maybe; PHP has mostly been superseded by much better languages like Python, Ruby, or even ASP.NET -- but again, there is so much web software written in PHP that I certainly don't see it going away any time soon.

There are a lot of smaller languages out there that could die, but I don't think any of the big ones are going away in the near future.

Partly this is due to the ever-increasing importance of computers in our lives. COBOL effectively died because it was replaced by better technologies before it became so omnipresent that it couldn't die -- and, as I pointed out, maintenance of COBOL old code still happens in many sectors (for example, a lot of banks still use old software written in COBOL). But with the widespread deployment of computers now, it's hard for a language to die because chances are, there's still some software written in that language, and someone who knows -- and likes -- using it.

I suppose a lot of languages we use today might not be in usage a century or two down the road, though, so it depends on what time scale you're talking about. :)

mipadi
hmmm...i didn't know ruby was inspired by Perl. Lots of interesting info there..thanks!
fenderplayer
+2  A: 

Just about everybody (except Smalltalk) derives their OOP from Stroustrup's classes in C++. Stroustrup took classes directly from Simula, from Ole Johan-Dahl's work.

Ole Johan-Dahl originally wrote up the ideas that would become Simula's classes in his section of "Structured Programming", by Dahl, Dijkstra, and Hoare. Dijkstra wrote about program structure and correctness. Hoare talked about data structuring, and laid out foundations that Wirth would use when he first defined PASCAL.

AS FAR AS I KNOW, not being a Smalltalk guy, Smalltalk and Simula were completely independent developments.

John R. Strohm