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 would like to use a pure object oriented programming language to really learn what the paradigm is about. I'm not out to become an expert at such; mostly will I implement some small things with it and maybe, if I like it, I will actually continue using it after that.

I'm asking for a recommendation such a language. Is Smalltalk the way to go or do you have another suggestion? It should preferably have several of the following qualities:

  • Plenty, or at least a good deal, of resources should exist for the language in question. Preferably texts which talk about it in a "pure OOP sense"
  • The language should be fun to use.
  • Come with interesting ideas.
  • Be a rewarding language to learn.
  • It should teach you what pure OOP is all about
share|improve this question
What do you mean by "pure"? How does a language "come with interesting ideas"? –  Ozz Apr 13 '11 at 14:23
Smalltalk is supposedly a friend of OOP. However, OOP is a fad that is going away. Many popular languages now have functional features, etc. –  Job Apr 13 '11 at 14:29
@Job: functional and OOP aren't mutually exclusive. –  FrustratedWithFormsDesigner Apr 13 '11 at 14:30
@Job, Smalltalk is functional enough anyway. –  SK-logic Apr 13 '11 at 14:32
show 4 more comments

closed as off topic by Mark Trapp Jan 26 '12 at 23:55

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.If this question can be reworded to fit the rules in the help center, please edit the question.

5 Answers

up vote 10 down vote accepted

You might try smalltalk. That was more or less the first oo language and is more or less what defined the ideas.

share|improve this answer
Then again, maybe you don't... It will ruin you to the more feeble implementations of OOP like Java and C# we have now. I found Ruby to be fairly similar to Smalltalk, but still not quite to the same level. –  Berin Loritsch Apr 13 '11 at 14:50
I've had the same thoughts about Haskell and Erlang, as in after I do this how will I go back to doing PHP –  Zachary K Apr 13 '11 at 15:24
Or Simula, arguably the first OO language (beating Smalltalk by a while, but possibly not being as pure an OO language). –  Vatine Apr 13 '11 at 15:27
@Vatine: Simula was the inspiration for adding classes to C, and what eventually ended up as C++. –  David Thornley Apr 13 '11 at 16:57
add comment

When I was in school, Eiffel was the choice language for the "serious" OOD courses in upper years for the "software construction and engineering" type courses. Eiffel also has neat features like Design By Contract (Our school also taught Java and C++ for just about any other course that had OOD/OOP where the prof didn't know or care about Eiffel).

I've never seen Eiffel used outside of academia though. There's a free IDE out there, though from what I recall it's pretty damn slow and clunky (or at least it was the last time I revisited it about 3 years ago).

share|improve this answer
add comment

There is no language that is "pure" OO. All OO languages have smatterings of most and in some cases all of the other paradigms.

I currently use Python which is strongly OO. Comparatively, I think it's pretty interesting and easy to use.

share|improve this answer
add comment

Ruby or Groovy. I'm more partial to Groovy because I have been doing a lot of professional work in Java. Groovy is trying to make up for some of the OO gaps in java. Being a derivative there is a lot of info out there on Java and Groovy.

I have used Ruby too, and like parts of it, but the way they manage the changes to the language have turned me off to it (backward compatibility issues between 1.8 and 1.9 code), but it is a good OO language too, IMHO.

From "Groovy in Action", By: Dierk Koenig; Andrew Glover; Paul King; Guillaume Laforge; Jon Skeet, Manning Publishing 2007.

Beside those subtle differences, the overwhelming majority of Java’s syntax is part of the Groovy syntax. This applies to:

  • The general packaging mechanism
  • Statements (including package and import statements)
  • Class and method definitions (except for nested classes)
  • Control structures (except the classic for(init;test;inc) loop)
  • Operators, expressions, and assignments
  • Exception handling
  • Declaration of literals (with some twists)
  • Object instantiation, referencing and dereferencing objects, and calling methods

The added value of Groovy’s syntax is to:

  • Ease access to the Java objects through new expressions and operators
  • Allow more ways of declaring objects literally
  • Provide new control structures to allow advanced flow control
  • Introduce new datatypes together with their operators and expressions
  • Treat everything as an object
share|improve this answer
+1 for Groovy - great little dynamic OOP language! –  mikera Jun 18 '11 at 19:11
add comment

For "pure" OOP I'd suggest starting out with UML (Unified Modeling Language). You won't be able to write any programs or apps, but you'll get a better understanding of how oop systems work and how objects and relationships fit together. Then once that foundation is there learning the specific syntax of whatever language you choose will be easier.

share|improve this answer
add comment

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