home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 5 / FreshFish_July-August1994.bin / bbs / dev / alst-3.04.lha / ALSt-3.04 / manual.txt < prev    next >
Text File  |  1994-07-07  |  41KB  |  1,189 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.        LLLLiiiittttttttlllleeee SSSSmmmmaaaallllllllttttaaaallllkkkk UUUUsssseeeerrrrssss MMMMaaaannnnuuuuaaaallll ---- VVVVeeeerrrrssssiiiioooonnnn TTTThhhhrrrreeeeeeee
  11.  
  12.  
  13.                           Tim Budd
  14.  
  15.                Department of Computer Science
  16.                   Oregon State University
  17.                      Corvallis, Oregon
  18.                          97331 USA
  19.  
  20.  
  21.                           _A_B_S_T_R_A_C_T
  22.  
  23.  
  24.           Version  three  of   Little   Smalltalk   was
  25.      designed  specifically  to  be easy to port to new
  26.      machines and operating systems. This document pro-
  27.      vides  the basic information needed to use Version
  28.      Three of Little Smalltalk, plus information needed
  29.      by  those  wishing to undertake the job of porting
  30.      the system to a new operating environment.
  31.  
  32.  
  33.  
  34.      The first version of Little Smalltalk, although simple,
  35. small  and  fast, was in a number of very critical ways very
  36. Unix specific.  Soon after the publication  of  the  book  _A
  37. _L_i_t_t_l_e  _S_m_a_l_l_t_a_l_k,  requests  started  flooding in asking if
  38. there existed a port to an amazingly large  number  of  dif-
  39. ferent  machines,  such  as  the  IBM PC, the Macintosh, the
  40. Acorn, the Atari, and even such systems as DEC VMS.  Clearly
  41. it   was  beyond  our  capabilities  to  satisfy  all  these
  42. requests, however in an attempt to meet them partway in  the
  43. summer  of  1988  I  designed  a  second  version  of Little
  44. Smalltalk, which was specifically designed to be  less  Unix
  45. specific  and  more  amenable to implementation of different
  46. systems.
  47.  
  48.      This document describes is divided into two parts.   In
  49. part  one  I  describe the basic features of the user inter-
  50. face.  This is essential information for anybody wishing  to
  51. use  the  system.  In part two we give the basic information
  52. needed by anybody wishing to undertake the task  of  porting
  53. version three Little Smalltalk to a new machine.
  54.  
  55. _1.  _G_e_t_t_i_n_g _S_t_a_r_t_e_d
  56.  
  57.      How you get started depends upon what  kind  of  system
  58. you  are  working  on.   Currently  there  are two styles of
  59. interface  supported.   A  line-oriented,  tty  style  stdin
  60. interface  is  available,  which  runs  under Unix and other
  61.  
  62.  
  63.  
  64.                         July 7, 1994
  65.  
  66.  
  67.  
  68.  
  69.  
  70.                            - 2 -
  71.  
  72.  
  73. systems.  There is also a window  based  system  which  runs
  74. under X-windows and on the Mac.
  75.  
  76. _1._1.  _T_h_e _s_t_d_i_n/_s_t_d_o_u_t _i_n_t_e_r_f_a_c_e
  77.  
  78.      Using the stdin/stdout interface,  there  is  a  prompt
  79. (the ``>'' caracter) typed to indicate the system is waiting
  80. for  input.  Expressions  are  read  at  the  keyboard   and
  81. evaluated  following each carrage return.  The result of the
  82. expression is then printed.
  83.  
  84.         >       5 + 7
  85.         12
  86.  
  87. Global variables can be created simply  by  assigning  to  a
  88. name.   The value of an assignment statement is the value of
  89. the right hand side.
  90.  
  91.                 x <- 3
  92.         3
  93.  
  94. Multiple expressions can appear on the same  line  separated
  95. by periods.  Only the last expression is printed.
  96.  
  97.                 y <- 17.  3 + 4
  98.         7
  99.  
  100.  
  101. _1._2.  _T_h_e _w_i_n_d_o_w_i_n_g _i_n_t_e_r_f_a_c_e
  102.  
  103.      The windowing interface is built on top  of  guido  van
  104. rossums  standard window package, and runs on top of systems
  105. that support standard windows.  These include X-11  and  the
  106. Macintosh.
  107.  
  108.      When you start up the system, there will  be  a  single
  109. window  titled  ``workspace''.  You can enter expressions in
  110. the workspace, then select either the menu items  ``do  it''
  111. or  ``print  it''.   Both  will evaluate the expression; the
  112. latter, in addition, will print the result.
  113.  
  114.      A number of other memu  commands  are  also  available.
  115. These permit you to save the current image, exit the system,
  116. or start the browser.
  117.  
  118.      The browser is an interface  permiting  you  to  easily
  119. view  system  code.   Selecting a class in the first pane of
  120. the browser brings up a second pane in which you can  select
  121. methods,  selecting a method brings up a third pane in which
  122. you can view and edit text.  Selecting ``compile'' following
  123. the  editing of text will attempt to compile the method.  If
  124. no errors are reported, the method  is  then  available  for
  125. execution.
  126.  
  127.  
  128.  
  129.  
  130.                         July 7, 1994
  131.  
  132.  
  133.  
  134.  
  135.  
  136.                            - 3 -
  137.  
  138.  
  139. _2.  _E_x_p_l_o_r_i_n_g _a_n_d _C_r_e_a_t_i_n_g
  140.  
  141.      This section  describes  how  to  discover  information
  142. about existing objects and create new objects using the Lit-
  143. tle Smalltalk system (version three). In Smalltalk one  com-
  144. municates  with  objects  by passing messages to them.  Even
  145. the addition message + is treated as a message passed to the
  146. first  object  5, with an argument represented by the second
  147. object. Other messages can be used to  discover  information
  148. about various objects.  The most basic fact you can discover
  149. about an object is its class.  This is given by the  message
  150. ccccllllaaaassssssss, as in the following examples:
  151.  
  152.         >       7 class
  153.         Integer
  154.         >       nil class
  155.         UndefinedObject
  156.  
  157.  
  158.      Occasionally, especially when  programming,  one  would
  159. like  to  ask  whether  the  class of an object matches some
  160. known class.  One way to do this would be to use the message
  161. ====  ====, which tells whether two expressions represent the same
  162. object:
  163.  
  164.         >       ( 7 class = = Integer)
  165.         True
  166.         >       nil class = = Object
  167.         False
  168.  
  169.  
  170.      An easier way is to use the message iiiissssMMMMeeeemmmmbbbbeeeerrrrOOOOffff::::;
  171.  
  172.         >       7 isMemberOf: Integer
  173.         True
  174.         >       nil isMemberOf: Integer
  175.         False
  176.  
  177.  
  178.      Sometimes you want to know if an object is an  instance
  179. of a particular class or one if its subclasses; in this case
  180. the appropriate message is iiiissssKKKKiiiinnnnddddOOOOffff::::.
  181.  
  182.         >       7 isMemberOf: Number
  183.         False
  184.         >       7 isKindOf: Number
  185.         True
  186.  
  187.  
  188.      All objects will respond to the message ddddiiiissssppppllllaaaayyyy by tel-
  189. ling  a little about themselves.  Many just give their class
  190. and their printable representation:
  191.  
  192.  
  193.  
  194.  
  195.  
  196.                         July 7, 1994
  197.  
  198.  
  199.  
  200.  
  201.  
  202.                            - 4 -
  203.  
  204.  
  205.  
  206.         >       7 display
  207.         (Class Integer) 7
  208.         >       nil display
  209.         (Class UndefinedObject) nil
  210.  
  211.  
  212. Others, such as classes, are a little more verbose:
  213.  
  214.         >       Integer display
  215.         Class Name: Integer
  216.         SuperClass: Number
  217.         Instance Variables:
  218.         no instance variables
  219.         Subclasses:
  220.  
  221.  
  222. The display shows that the class IIIInnnntttteeeeggggeeeerrrr is  a  subclass  of
  223. class  NNNNuuuummmmbbbbeeeerrrr  (that  is,  class NNNNuuuummmmbbbbeeeerrrr is the superclass of
  224. IIIInnnntttteeeeggggeeeerrrr).  There are no instance variables for  this  class,
  225. and  it currently has no subclasses. All of this information
  226. could be obtained by means of other messages,  although  the
  227. ddddiiiissssppppllllaaaayyyy form is the easiest.  [ Note: at the moment printing
  228. subclasses takes a second or two.  I'm not sure why.]
  229.  
  230.         >       List variables display
  231.         links
  232.         >       Integer superClass
  233.         Number
  234.         >       Collection subClasses display
  235.         IndexedCollection
  236.         Interval
  237.         List
  238.  
  239. About the only bit of information that is not provided  when
  240. one  passes  the  message  ddddiiiissssppppllllaaaayyyy  to  a class is a list of
  241. methods the class responds to.  There are  two  reasons  for
  242. this  omission;  the  first  is  that this list can often be
  243. quite long, and we don't want to scroll the  other  informa-
  244. tion off the screen before the user has seen it.  The second
  245. reason is that there are really two different questions  the
  246. user  could  be asking.  The first is what methods are actu-
  247. ally implemented in a given class.  A