Subject: Re: object oriented LISP?
From: rpw3@rigden.engr.sgi.com (Rob Warnock)
Date: 26 Oct 2000 11:21:12 GMT
Newsgroups: comp.lang.lisp
Message-ID: <8t9438$2u9ek$1@fido.engr.sgi.com>
Martti Halminen  <martti.halminen@solibri.com> wrote:
+---------------
| Some pointers to Simula information:
| http://www.iro.umontreal.ca/~simula/
| http://www.isima.fr/asu/
| http://home.sol.no/~simula/
+---------------

Ah, yes. Some of us still have fond memories for Simula.  Also see
<URL:http://pdp-10.trailing-edge.com/www/lib10/0242/>:

	POOMAS: Poor Man's SIMULA, Version: 1, June 1972
	...
	Abstract: POOMAS is a collection of subroutines, macros,
	etc. which allow a programmer to write SIMULA-like simulation
	programs in BLISS. The POOMAS routines will handle queues,
	sequencing, random number generation, etc.

It used the BLISS built-in "EXCHJ" (exchange jump) coroutine call
operator for light-weight threads, since each Simula object was
also (potentially) a thread.

In 1983, Bakul Shah & I (at Fortune Systems) built a set of C libraries
[presented at USENIX 1984] that did almost the same thing as POOMAS, and
used them for simulations somewhat in the spirit of Simula. An "object"
was a coroutine or "thread", that is, some subroutine with an (potentially)
infinite loop in it [that provided the behavior of the object] and a piece
of heap-allocated stack [that provided the state of the object, or instance
slots, if you prefer]. Library calls could "wake" other threads/"objects",
or could "sleep" waiting for events or the passage of (simulated) time --
any such sleep of course resulted in a coroutine call to the next available
thread/object that was ready to run. During their lives, objects could
create (and destroy) other objects, emit or receive messages, etc., etc.

So you definitely *can* do "object-oriented programming" in C...  ;-}  ;-}


-Rob

-----
Rob Warnock, 31-2-510		rpw3@sgi.com
Network Engineering		http://reality.sgi.com/rpw3/
Silicon Graphics, Inc.		Phone: 650-933-1673
1600 Amphitheatre Pkwy.		PP-ASEL-IA
Mountain View, CA  94043