[Tutor] Volunteer teacher

Alan Gauld alan.gauld at yahoo.co.uk
Tue Jul 26 17:52:40 EDT 2022


You know things are bad when you reply to your own emails!

On 26/07/2022 10:21, Alan Gauld via Tutor wrote:
> That's exactly what I mean. My point is that OOP is a style of
> programming not a set of language features (that's an OOPL). ...
> OOP is all about message passing. 

I realize I may be causing confusion by over-simplifying.

In reality the term OOP has come to mean many differnt
things. The reason for this is historic because what we now
call OOP is an amalgam of programming developments during
the late 60s-late 80s. There were basically 3 different groups
all working along similar lines but with different goals and
interests:

Group 1 - Simula/Modula
This group were focused on improving the implementation of
abstract data types and modules and their use in simulating
real-world systems. This resulted in the invention of classes
as we know them, in the language Simula. Languages influenced
by this group include C++, Object Pascal, Java and most of
the others that we consider OOPLs today.

Group 2 - Allan Kay and his Dynabook project at Xerox Parc.
Kay was intent on developing a computing device that could
be used by the masses. He focused on teaching programming
to youngsters as a representative group. The lessons learnt
included the fact that youngsters could relate to objects
sending messages to each other and from this he developed
the ideas and coined the term "Object Oriented Programming".
He built Smalltalk (in 3 different versions culminating
in Smalltalk 80) to implement those concepts. Along the
way he picked up Simulas class concept. It is he who
"defines" OOP as a message passing mechanism and a programming
style rather than a set of language features. Object Pascal,
Objective C, Actor and Python all include strong influences
from this group.

Group 3 - Lisp and the Academics
At the same time lots of academics were experimenting with
different programming styles to try to find a way to accelerate
program development. This was driven by the "software crisis"
where software development times were increasing expoentially
with complexity. They picked up on the activity by groups 1
and 2 and added some spice of their own. Mostly they used
Lisp and came up with several OOP systems, best known of
which are Flavors and CLOS. CLOS in particular is intended
to support multiple styles of object based programming
including pure OOP(as defined by Kay).

[Bertrand Meyer developed his Eiffel language in parallel
with Group 3 but strongly influenced by Group 1 too. Eiffel
along with CLOS are probably the most complete implementations
of all currently existing OO concepts]

[Seymour Papert was working on similar concepts to Kay but was
idealogically more closely aligned with group 3 but never espoused
objects per se. Instead he developed Logo which is closely
related to Lisp but includes the concept of sending messages
but not the encapsulation of the receiver data and functions.]


When I talk about OOP I am firmly in the Group 2 category.
You can do OOP in almost any language. You can use objects
in almost any style of programming. But don't make the mistake
that just building and using classes means you are doing OOP.
Even in the purest of OOP languages(Smalltalk?) it is entirely
possible to write non OOP code. The manual for Smalltalk/V
includes a good example of non OOP code written in Smalltalk
and how it looks when re-written in an OOP style. The point
being that simply learning Smalltalk does not mean you are
learning OOP! I can probably dig that example out (and
maybe even translate it to Python) if anyone is interested.

-- 
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.amazon.com/author/alan_gauld
Follow my photo-blog on Flickr at:
http://www.flickr.com/photos/alangauldphotos




More information about the Tutor mailing list