View this PageEdit this PageAttachments to this PageHistory of this PageHomeRecent ChangesSearch the SwikiHelp Guide
Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007

Sum2003 Midterm Review: History of Object Systems

Anyone want to enlighten me and tell me why the answers to any of these questions (except maybe the last) are important to learn?

How can you understand something well if you don't know where it comes from? Barbara Ericson

It's similar to how you can fully operate and drive a car without having to know where your internal combustion engine came from or who thought of the idea. I think it would be more interesting and useful to talk about advantages/disadvantages (/history of, if you must) of why smalltalk, java, etc. use single-inheritance and boring methods rather than using generic functions w/multiple dispatch and multiple inheritance. Or why smalltalk insists to have such a small image by not providing anything along the lines of macros so we can perhaps make life easier by not having to use blocks(~=lambda) and loads of messages on everything we don't want to evaluate. timmy


As computer science majors you are more like car makers who should know where internal combustion engines came from Barbara Ericson

1) Sketchpad is a graphical editor created by Ivan Sutherland in the 1960s. It was the first object-oriented drawing program. It also was the start inheritance.
exactly - just for kicks, this was developed at MIT -ellie harmon

2) Simula is a langueage that was developed in Norway in the 1960s. It defined activities which could be instanciated as processes. Each process had its own data and behavior which enabled Simula to simulation real-world behavior. It also was the start of encapsulation.
yes, and it was developed for creating simulations, hence the name -ellie harmon

3) Alan Kay built on the ideas from Sketchpad and Simula to create his idea an object-oriented personal computer, aka FLEX, which would be based on objects and completely programable. Alan Kay then joined a research group that developed the SmallTalk language in order to implement FLEX. Squeak is just a revamped SmallTalk.
I might just say squeak is one implementation of SmallTalk-80, rather than it is a "revamped" SmallTalk -ellie harmon

4) The Internet brought on the need to create a highly-portable language that could be used to send executable code over the web. Java, which was already object-oriented and highly portable became the language of choice.

5) Similarities:
generally, yes, but its important to note that java is not a pure object-oriented language -ellie harmon
to be more specific, both are compiled to byte code -ellie harmon
both use a vm -ellie harmon

Differences:
Java
they both use a vm actually -ellie harmon
because of the primitives, java isn't completely object-oriented -ellie harmon

Squeak
a true object oriented language -ellie harmon




squeak has a vm also and squeak isn't typeless.
timmy


pg 22 of the white book describes squeak as 'essentially' typeless. What's the exception?
Michael Mitchell


didn't he explain what he meant by 'type-less' in the next paragraph? I think it was a poor choice of wording. he probably should have said something more along the lines of "object's type are for-the-most-part defined by the messages that they accept" timmy


yes, there are objects, and so i understand that you're saying things are "typed" to the extent that at a given time, they can only be an instance of one type object, and hence only understand certain messages. but this is very different than, say java, where every variable, every return value, every method input is specifically typed. in smalltalk (and squeak) you do not declare the type of a variable. you just apply a method to it, and if that method is not supported by that object, then you get a runtime error. so, squeak can be considered essentially typeless in that variables are not typed, only the data they contain is typed - this is silly, but demonstrative: i can say myVariable := 'abc' and then immediately afterwards say myVariable := 1 since myVariable is neither set permanently as a string or a number. similarly return values from methods are not "typed" - you can theoretically return anything you want, something different in different situations. and, inputs to methods are not "typed" either. -ellie harmon


You're explaining dynamic vs. static typing issues rather than strong vs. weak typing issues. When 'type-less' is used, it usually is referring to the strong vs. weak aspect. I think smalltalk is an example where could potentially argue it being weak or strong. If you take the strong route, you might bring up something about how you aren't allowed to change the type of an object you are pointing to. (Weaker typed languages like C allow you to cast in a way and give the particular value a different type) well, i'm need to study because i don't think this is going to be a hot topic on the test.
timmy


for #4 I think the need for re-useable code and the need to separate out responsibilities brought O-O out into the mainstream. the internet came a little later and certainly didn't hurt.
Kirk Roberts

i agree, i think the combination of a need for re-useable code and the internet together brought o-o into the mainstream -ellie harmon


for #3, didn't Alan Kay take a bet that he could write a whole language on one peice of paper (his whole idea of a simple language)? Then didn't that get used to create Smalltalk/Squeak?


you know i hadn't heard that before, but i think you're right, here's what i found in a paper on object oriented languages written by someone at uc berkeley: "Smalltalk was redefined from scratch in 1972 on a bet, (that Kay could define the ``most powerful language in the world'' in ``a page of code'') and Smalltalk-72 has since been considered the first "real Smalltalk". Smalltalk was redesigned again in 1976 by Dan Ingalls, and then again in 1980 just before it was released to the public." -ellie harmon


1. Sketchpad is a first object-oriented graphical editor that influenced the birth of object-oriented programming. It was developed by Ivan Sutherland at MIT in 1963. You could create objects that could be manipulated separetely from other objects. You could create a master drawing from which you can define a set of instance drawings, therefore it was the start of inheritance.

2. Simula is a general-purpose, procedural programming language that was designed to make simulations easier. It was developed in Norway in 1960s. It enabled defining an activity from which number of processes could be created. These objects (processes) created would model the world. This language also modeled encapsulation because the objects had their own data and behaviors that other objects couldn't access without permission.

3. Alan Kay focused on FLEX, a personal computer based on objects, that would be able to draw (Sketchpad) and simulate anything in the real world (Simula). Later he joined Xerox's new Palo Alto Research Center where Smalltalk was created. They created new Smalltalk from Smalltalk 80. Smalltalk virtual machine was written in Smalltalk and Smalltalk-to-C translator was written. This was used to create Squeak.

4. OO was important in order to handle growth and complexity of objects that modeled the real world. It also made reusing the code possible.

5. Java and Squeak are similar in the sense that they are both object-oriented and storage is handled by garbage collection. They are different in a way that Squeak does not have types whereas Java does. Java is stronly typed and it uses a VM. It uses bytecode compilation.

~Sabina Karkin

see my notes above, some of that esp. #5 doesn't look exactly right -ellie harmon

on number 4 I would expect to see something about SmallTalk 80 being released to several companies in the 80's and about C++ and Java Barbara Ericson

Link to this Page