Question:
I have been a software developer since 1963 and have used so-called 2nd,
3rd and 4th generation languages. Since I retired , five years ago, I
have been using Delphi as my development tool. I think it is a fine
language, and I have developed some reasonable systems using the visual
component library provided by the language but relying on the automatic
OOP code generated by Delphi to keep me on the right path and also teach
me some of the basics of OOP.
I now want to learn more about OOP theory and start defining more of my
own classes, using polymorphism and other techniques in my programs, so
I subscribed to websites comp.object, comp.lang.pascal.Delphi.misc to
start learning from the experts. What I found was that comp.object used
mostly C++ as the basis for discussions and unless you know this
language the point of most of the articles is lost on one.
What about comp.lang.pascal.Delphi.misc then? Well, the articles in
the internet are all to do with the nuts and bolts of Delphi: combo
boxes, grids, modal forms, barcoding etc. I cannot recall seeing any
extensive discussion on OOP.
To check whether this was the norm for language websites I subscribed
to comp.language.eiffel and found a completely different situation. Here
there is extensive discussion on OOP principles but, of course, the
language used f0r the discussions is Eiffel. Which bring me to my point.
It seems to me that if I am to master OOP then I need to learn a
language that is used for discussing OOP principles. In my view Delphi
does not meet this requirement. It could do I'm sure: it is a good
object model. But the fact is it's practitioners either don't need to or
don't want to discus OOP.
The lingua franca of OOP is, I suppose, C++, but I don't want learn
this: there is so much baggage with it. From what I have read Eiffel
might be the answer.
So, do you think I do need another language? Is Eiffel a sensible
choice? Can you recommend a good primer for Eiffel? Can you point me to
suppliers of Eiffel tools.
Answer:
Please take this with a grain of salt as my experience isn't extensive. (i.e.,
I'm no guru. :-))
I first got my feet wet in OO with Object Pascal (Does Delphi still support
this?) using Turbo Pascal 7(6?) (i.e., pre-Delphi). I then played with C++,and
then Java. Of the three, Java was the easiest to learn.
I haven't had a chance to explore Eiffel or Smalltalk, and I probably won't
until I get more time (maybe when I'm retired. :-) ).
My experience with OO is that the languages aren't going to do much for you if
you haven't learned the principles behind them. I would make sure to get a
book for whatever language you choose that does a good job of explaining OO as
well as teaching the language. I say this based on my Object Pascal
experience, where I didn't do a good job of defining the objects or the
architecture. I would highly recommend learning an OOA/OOD method
(Shlaer-Mellor, UML, Booch, OMT, Meyer, ...) as well.
"Instant UML" by Pierre-Alain Muller Wrox Press has a good discussion of OO
for beginners. I enjoyed the Shlaer-Mellor books, "Object-Oriented Systems
Analysis: Modeling the World in Data" Prentice Hall, 1988 and "Object
Lifecycles: Modeling the World in States" Prentice Hall, 1992.
Submit Your
Own Answer!