What about a "Pharo/Smalltalk Beginners Workspace" with colored text and some 
interesting expressions to evaluate (or just hyperlink-click for a simple 
doIt/printIt)

This should start with simple expressions, unary, binary and keyword intro up 
to some high level code or cool demos (turtle graphics, ....). 

Ivan Tomek provided such a workspace (see 
http://lists.squeakfoundation.org/pipermail/squeak-dev/2000-April/013808.html) 
and I once started to adapt it to Squeak (see below).

Bye
Torsten


-------------------------------------------------------------------------------------------
*************************************************************
* INTRODUCTION TO SMALLTALK IN x EASY STEPS
*************************************************************

 This workspace introduces some of the concepts of Smalltalk - 
 the language behind Pharo. It''s contents is executable and you
 should try all our suggested exercices.
 There is much more to Smalltalk and the references listed at the 
 end provide additional information.

 =================================
 Part 1: Objects and messages
 ================================= 

 
---------------------------------------------------------------------------------------------------------
 -- 1. EVERYTHING IN SMALLTALK IS AN OBJECT, AND ALL WORK IS DONE BY        
 --    SENDING MESSAGES TO OBJECTS 
 
---------------------------------------------------------------------------------------------------------

 To send a message we just have to enter text representing the object itself 
 (which is the receiver of the message) and after that the message we want 
 to send. 

  To execute the following examples,
  - select the colored code text using the left mouse button (as in a word 
    processor)
  - we can execute the text and print the result by selecting ''print it''
    from the right mouse button <operate> menu
  - alternatively you can select the text and press ALT + p
"

3 negated.                      "receiver is small integer 3, the message we 
send is 
                                  ''negated'' "

"The period is not necessary - it just preserves the color in this text since
 it marks the end of a Smalltalk statement.
 Note that if we send a message the object always responds by either 
 returning a new object or by returning itself. In our example the object 
 3 responds with a new object -3 when we send the message ''negated''.
 When evaluating code using ''print it'' the responded object is printed.
 
"

"Now lets send a different message"
3 squared.                      "receiver is 3 again - the message is now 
squared"

"Lets try some more examples"
''abc'' asUppercase.    "receiver is string ''abc'' "

''HelloWorld'' reverse. "Lets reverse a string" 

200 factorial.           "1 * 2 * 3 * 4 ... * 199 * 200 returns a large number
                                which is no problem for Smalltalk"

"Simple message send can be used to ask an object. Note that the response
 is always an object"

#(a b c) size.          "lets ask an array for its size"

''123456'' isAllDigits. "is the string composed entirely of digits"
 
"Instead of printing the result using the print it we can also open an inspector
 window on the result. This is done"



"Note that compared to other languages even mathematical functions 
 are handled by sending a message. instead of writing sin(x) we just have
 to send the message #sin to a number"

1 sin.

"Converting objects is also typically done by sending messages"

123 asString.           "you can convert an object to a string by sending 
#asString"

12.33 asInteger.                "convert a float object into an integer object" 
                
''12.34'' asNumber.     "returns a number - here a float"

"So the Smalltalk syntax simply is: Object always comes first (receiver), 
message follows.

 
---------------------------------------------------------------------------------------------------------
 -- 2. THERE ARE EXACTLY THREE KIND OF MESSAGES: Unary, binary and keyword 
messages
 
---------------------------------------------------------------------------------------------------------

 2.1. Unary messages
 ========================
 We already know this type of message from the above examples. The message we 
send to 
 an object is just a word, there are no arguments."

 3 negated.                                     "We already know this "
 
 ''Hello World'' subStrings.    "This returns an array of substrings"

"2.2. Binary messages
 ========================
 As the name implies we have two objects playing a role in this message type - 
the receiver and
 exactly one argument object. Each binary message is a binary selector, 
constructed from one or two 
 characters followed by the argument object."
 
 3 + 4.                         "send the message + to the receiver object 3 
with the argument 4 "

"Take care: compared to other languages where both sides of such an expression 
are treated equally
 in Smalltalk the objects in a binary message are clearly separated into the 
receiver of the message
 (the object in front of the binary message selector) and the argument (the 
object behind the message
 selector). Note the difference: 
"

 3 + 4.0.                               "here we send the message + to an 
integer with a float as argument object"
 
 4.0 + 3.                               "here we send the message + to a float 
with an integer as argument object"
 
"Binary messages are typically used for arithmetic and comparing objects. Some 
more examples: "

 1 = 2.                         "we know it should return false"

 2 * 3.                         "ohhh ... it''s so simple"      
                                        
 1 < 2.                         "The object 1 should tell us if it is smaller 
than 2 (the argument)"
                                
 ''Hello'', ''World''.          "Concatenating string is done by sending the 
message , (comma) with another string
                                         as argument"
        
"----------------------------------------------------------------------------------------------------------

 ========================================
 Part 2: Classes and their instances
 ======================================== 

 
---------------------------------------------------------------------------------------------------------
 -- 1. AN OBJECT MAY HAVE PROPERTIES (state)
 
---------------------------------------------------------------------------------------------------------
 
 
---------------------------------------------------------------------------------------------------------
 -- 2. EVERY OBJECT IS AN INSTANCE OF A CLASS
 
---------------------------------------------------------------------------------------------------------

 
---------------------------------------------------------------------------------------------------------
 -- 3. A CLASS IS A TEMPLATE FOR CREATING ITS INSTANCES
 
---------------------------------------------------------------------------------------------------------
...

  Free Books on Smalltalk (available as PDF)
  http://www.iam.unibe.ch/~ducasse/FreeBooks.html



-- 
"Feel free" - 10 GB Mailbox, 100 FreeSMS/Monat ...
Jetzt GMX TopMail testen: http://www.gmx.net/de/go/topmail

_______________________________________________
Pharo-project mailing list
[email protected]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

Reply via email to