6

Why do we say "Object-oriented programming" and not simply "Object programming"? Why do we speak of orientation in just this case, and not "Functionally-oriented programming" and so?

8

Because Alan Kay said so.

More specifically, there were languages before Smalltalk that had objects or object-like structures but Smalltalk was the first language designed specifically to use objects as its primary computation method.

This is probably a good place to comment on the difference between what we thought of as OOP-style and the superficial encapsulation called “abstact data types” that was just starting to be investigated in academic circles. Our early “LISP-pair” definition is an example of an abstract data type because it preserves the “field access” and “field rebinding” that is the hallmark of a data structure. Considerable work in the 60s was concerned with generalizing such strcutures [DSP *]. The “official” computer science world started to regard Simula as a possible vehicle for defining abstract data types (even by one of its inventors [Dahl 1970]), and it formed much of the later backbone of ADA. This led to the ubiquitous stack data-type example in hundreds of papers. To put it mildly, we were quite amazed at this, since to us, what Simula had whispered was something much stringer than simply reimplementing a weak and ad hoc idea. What I got from Simula was that you could now replace bindings and assignment with goals. The last thing you wanted any programmer to do is mess with internal state even if presented figuratively. Instead, the objects should be presented as site of higher level behaviors more appropriate for use as dynamic components.

The most telling part of this passage is the idea of a "goal". Orientation implies a goal thus, Object-Oriented Programming rather than Object Programming. He also mentions Problem-Oriented and Expression-Oriented programming in passing. I suspect it is more than OOP got buzzworded and Function-Oriented didn't.

  • 1
    The "goal" part is indeed very important. The Message-Driven Evaluation Model of Smalltalk is heavily based on the Goal-Driven Evaluation Model of Carl Hewitt's PLANNER (a goal-oriented logic programming language). Interestingly, Carl Hewitt later invented the Actor Model, based on Smalltalk. Also, PLANNER was a precursor to Prolog, which was a precursor to Erlang which independently re-invented the Actor Model. Alan Kay himself said that Messages are more important than Objects and that he wishes he had called it "Message-Oriented Programming" instead. – Jörg W Mittag Nov 6 '13 at 15:19
3

Functional is an adjective, we don't say Function Programming. But there isn't a nice corresponding word for Object** so we use Object Oriented to form an adjective.

Also, functionally-oriented programming is ill-formed, you'd want Function Oriented Programming, which works, but why bother with such verbosity when we already have "functional".

** Objectionable and Objective don't really work.

  • 3
    BTW in Polish, my first language, it's simply called "programowanie obiektowe" and there's no need for the "oriented" bit, because "objective" as opposed to subjective is "obiektywne" in Polish, so there's no collision :) – Konrad Morawski Nov 6 '13 at 15:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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