Erlang "object-oriented" after all?

Michael Turner <>
Tue Nov 24 08:25:01 CET 2009


I ran across a very interesting exchange with Alan Kay, who most likely
coined the term "object-oriented programming."

  http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/doc_kay_oop_en

If you'll excuse some (only slightly tendentious) editing of his remarks:

----
"I thought of objects being like biological cells and/or individual
computers on a network, only able to communicate with messages . . . . I
wanted to get rid of data. . . ."

"I realized that the cell/whole-computer metaphor would get rid of data,
and that "<-" [assignment operator in smalltalk] would be just another
message token . . . ."

"I didn't like the way Simula I or Simula 67 did inheritance . . . . So
I decided to leave out inheritance as a built-in feature until I
understood it better . . . .

"My original experiments with this architecture were done using a model
I adapted from . . . rather LISP-like [languages] but with a more
conventional readable syntax.  . . ."

"Another big influence at this time was Carl Hewitt's PLANNER (which
has never gotten the recognition it deserves, given how well and how
earlier it was able to anticipate Prolog) . . . ."

"I'm not against types, but I don't know of any type systems that
aren't a complete pain, so I still like dynamic typing.) . . . ."

"The people who liked objects as non-data were smaller in number, and .
 . .  pretty much all of this group were . . . . were involved in one
way or another with the design of ARPAnet->Internet in which the basic
unit of computation was a whole computer. But just to show how
stubbornly an idea can hang on, all through the seventies and eighties,
there were many people who tried to get by with "Remote Procedure
Call" instead of thinking about objects and messages. . . ."

"OOP to me means only messaging, local retention and protection and
hiding of state-process, and extreme late-binding of all things . . . ."
----

So perhaps it would be forgiveable to describe Erlang as not just
concurrent, functional, fault-tolerant, soft-real-time, and strongly
influenced by both academic logic programming and real-world networking
problems, but also as "object-oriented in the original (and perhaps
best) sense of the term."  At least on the theory that any major
buzzword pile-up should be salvaged with a rhetorically graceful
crescendo.

Besides, what's that old saying again?  "Those who don't learn from
history are condemned to be repeatedly over-awed by those who can fake
it"?

;-)

-michael turner


More information about the erlang-questions mailing list