Question

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?

Was it helpful?

Solution

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.

OTHER TIPS

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.

Licensed under: CC-BY-SA with attribution
scroll top