Talk:Simula/Archive 1

The latest changes
User:Hvammen I have replaced most of the examples with new examples that better illustrates some of Simulas main features. I would like to include a coroutine example. But that will have to wait to another time.

Please help me by correcting any spelling errors and rewrite bad language.

Jensen's device here??
Jensen's device is a special Algol 60 semantic concept, that should be described in the Algol 60 discource. In Simula it would rather be better to make a short reference that Jensen's device is supported. (Darned BEER!) User:Rursus 16:10, 23 October 2006 (UTC)


 * Hvammen: Done.


 * From the Swedish "Lärobok i Algol, Ekman och Fröberg", I get:


 * Hvammen: A modified version of the example have been implemented.

Dya call THAT neutral!!
Rursus edited the page to be neutral between the Simula OO model and the Smalltalk OO model. Hello Rursus! Is this supposed to be called neutral:


 * Simula is considered one of the earliest object-oriented programming languages, although the object modell is often considered incomplete. (Proponents of the Smalltalk object model pinpoint some important deficiencies of the Simula concept of objects). As its name implies, Simula was designed for doing simulations, and the needs of that domain provided the framework for many of the features of object-oriented languages today.

? Fool you, Rursus!! Qaþ: User:Rursus 16:04, 23 October 2006 (UTC)

Wrong, wrong, wrong and wrong again!!!

 * (Emotional heading inserted by Rursus) Hello guys! How are you? Just a little note: if you write a puny-tiny-little heading, the text will be easier to edit. Rursus 13:47, 23 October 2006 (UTC)

Simula objects
This article is completely wrong. There were two completely different languages called Simula:
 * Simula I
 * Simula 67

Simula I didn't even have a concept of object. It had processes and activities. Only Simula I was actually known by Smalltalk developers. (said Taw)

Simula 67 actually had some sort of "classes" (and it has "class instances") and some sort of "inheritance", but it cannot be considered object-oriented by any reasonable definition of "object-oriented". For example there were no virtual methods (to use C++ terminology). (said Taw)


 * Hvammen 10:13, 22 October 2006 (UTC): This is not true.  Simula have classes with single inheritance and virtual labels, switches, and methods. Please se section 2.2.3 in the standard.


 * I don't see the reason for this heated argument, really - Hwammen is perfectly right. The standard speaks like objects are instances of classes. Simula classes are very much like C++ classes, that few claim are not object oriented. I may agree with a wide spread opinion that Simula (and therefore C++ d:o) classes are wrongly implemented, which don't remove any glory at all from Simula's creators - first and mostly right is as good as second and very much right. However: objects were invented in Simula - maybe they were invented in Smalltalk independently, but such situations generally arise in science and technology when preconditions are fulfilled. Rursus 14:06, 23 October 2006 (UTC)


 * Objects were invented by C. A. R. Hoare, but Simula extended it with inheritance and virtual methods. See section "TOWARD GENERALITY" in this paper.

What is does is basically abstract data types with very limited inheritance. Of course no basic Smalltalk OOP concepts like everything is an object, classes are objects, message passing, reflection and so on. (said Taw)

Some more about this:
 * The development of the simula languages (PDF) - and notice the plural in title.
 * The origin of the term class (in Simula 67)

So Smalltalk object-orientation does not come from Simula, object-oriented programming was started by Smalltalk. And even the very term "object-oriented programming" is Alan Kay's. (said Taw)


 * Hmm, I don't think object-oriented necessitates everything is an object. Simula didn't get objects from Smalltalk according to those texts. OK, so Smalltalk implemented objects independently. OK, so Simula did invent less object orientation. That's fine with me (in fact perfect – since over-using object orientation is suboptimal programming). But this information is mature to be inserted into the Smalltalk article, and we could discuss it on the talk page of Smalltalk. Twirling his moustaches, does: Rursus 22:11, 7 February 2007 (UTC)

Original invention of OOA - to whome goes the glory?
By a really really big stretch it could be claimed that Simula 67 independently developed some OOP ideas. But I don't think Wikipedia should make such dubious claims. (said Taw)


 * Hvammen 10:13, 22 October 2006 (UTC): That stretch lead to the A.M. Turing Award. They also got the IEEE John von Neumann Medal.  So I don't think it is unreasonable to give them credit for concepts of object-oriented programming. Smalltalk came later and is far supperior to Simula, but that doesn't mean we shouldn't give Simula the credit it deserve.

Rick DeNatale claims that the confusion was started by 1987 paper "Dimensions of Object Based Language Design" by Peter Wegner, where he claims that "object-oriented" means "objects + classes + inheritance". (said Taw)

What is of course historically untrue, The Early History Of Smalltalk by Kay shows the original meaning was completely different (I couldn't find any early discussion on what term, someone can probably find a better quote, but basically Kay is explicit that he didn't intend OOP to mean Simula-style abstract data types):


 * "Object-oriented" Style
 * 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 . (said Taw)

Split!
This article needs to be split into 2 articles and fixed. Some other articles c confuse the history too. Taw 13:21, 16 October 2006 (UTC)


 * Hvammen 10:13, 22 October 2006 (UTC): I disagree.  This article is about Simula 67. Simula 1 is included as historical background. This does not    rule out any article about Simula 1.


 * Hvammen 10:13, 22 October 2006 (UTC): It seems to me that mr. Taw don't know much about Simula. Most of the modifications he made is inapropriate, and out of context. I suggest he undo his modifications himself.

Bemer or Bermer?
Both Bemer and Berner appear in the same paragraph, apparently referring to the same person. One must be wrong. D021317c 08:40, 6 February 2007 (UTC)


 * I believe the text actually refers to Bob Bemer, who invented lots'a stuff and certainly worked at Univac. I'll fix it, and if i'm wrong, you are obligued to kill me slowly and politely! Twirling his moustaches, does: Rursus 22:41, 7 February 2007 (UTC)

Criticism section
A criticism section may be appropriate. Now the third para from start says:

"'Simula is considered one of the earliest object-oriented programming languages, although the object model is often considered incomplete. (Proponents of the Smalltalk object model pinpoint some important deficiencies of the Simula concept of objects). As its name implies, Simula was designed for doing simulations, and the needs of that domain provided the framework for many of the features of object-oriented languages today.'"

I think it would be more proper to put the parenthesis into a criticism section. That section would then also contain a section on Smalltalk versus Simula objects, and Smalltalk versus Simula object philosophies, where the object-everywhere-by-all-costs theory contrasts with the objects-when-unavoidable theory. That would then be in accordance with other sections, but it might be that such a discussion deserves an entirely own article, since several programming languages adher to the Simula model: Simula, C++, and several proglans adhers to the Smalltalk model: Smalltakl and Objective-C. Twirling his moustaches, does: Rursus 22:28, 7 February 2007 (UTC)

Hello world example image command?
What does the  command achieve in the example of a hello world program? Is it some analogue to the C++  that is used to keep a terminal open on completion of the program, or is it spurious? JoeKearney 18:47, 23 March 2007 (UTC)


 * Hvammen: Outtext writes to an image and Outimage writes the image to file. See [Simula Standard section 11.3.2]

garbage collection
simula introduced garbage collection? I thought lisp did it! (I'm not modifying it since I'm not sure) 190.31.67.222 22:23, 18 June 2007 (UTC)
 * User:Hvammen Implemented

LISP had garbage collection from the beginning and I'm pretty certain it predates Simula Rob Burbidge 10:49, 5 July 2007 (UTC)

Coroutines
And in a similar vein, I believe Simula had some concept of coroutines. Anyone like to comment on this, or am I imagining it? Rob Burbidge 10:49, 5 July 2007 (UTC)

Came across http://www.cs.mdx.ac.uk/staffpages/r_bornat/books/compiling.pdf by serendipity today. It's Richard Bornat's "Understanding and Writing Compilers" book from 79, reissued online by the author. Page 262 et seq describes Simula's class and coroutine mechanism. It may be of interest. Rob Burbidge 13:04, 5 July 2007 (UTC)