home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / sa104os2.zip / SATHR104.ZIP / SATHER / DOC / FAQ < prev    next >
Text File  |  1994-12-22  |  9KB  |  221 lines

  1. -----------------------------------------------------------------
  2.            Sather Frequently Asked Questions
  3. -----------------------------------------------------------------
  4.  
  5. This is the Sather FAQ.  If you have suggestions for the inclusion of
  6. other useful information, please send email to "davids@icsi.berkeley.edu".
  7.  
  8. Table of contents
  9. -----------------
  10.  
  11. 1. What is Sather?
  12. 2. Is Sather a subset or superset of Eiffel?
  13. 3. Where does the name "Sather" come from?  How do I pronounce it?
  14. 4. What does the "Hello World" program look like?
  15. 5. Where can I get information on Sather?
  16. 6. Are there freely available implementations of Sather?
  17. 7. How portable is the compiler?
  18. 8. How efficient is the compiler?
  19. 9. What is the future of Sather?
  20. 10. What is all this about covariance vs. contravariance?
  21.  
  22.  
  23. 1. What is Sather?
  24.  
  25. Sather is an object oriented language which aims to be simple,
  26. efficient, safe, and non-proprietary. It aims to meet the needs of
  27. modern research groups and to foster the development of a large, freely
  28. available, high-quality library of efficient well-written classes for a
  29. wide variety of computational tasks. It was originally based on Eiffel
  30. but now incorporates ideas and approaches from several languages. One
  31. way of placing it in the "space of languages" is to say that it
  32. attempts to be as efficient as C, C++, or Fortran, as elegant and safe
  33. as Eiffel or CLU, and to support higher-order functions as well as
  34. Common Lisp, Scheme, or Smalltalk.
  35.  
  36. Sather has garbage collection, statically-checked strong typing,
  37. multiple inheritance, separate implementation and type inheritance,
  38. parameterized classes, dynamic dispatch, iteration abstraction,
  39. higher-order routines and iters, exception handling, assertions,
  40. preconditions, postconditions, and class invariants.  Sather code can
  41. be compiled into C code and can efficiently link with C object files.
  42.  
  43. Sather has a very unrestrictive license aimed at encouraging
  44. contribution to the public library without precluding the use of Sather
  45. for proprietary projects.
  46.  
  47.  
  48.  
  49. 2. Is Sather a subset or superset of Eiffel?
  50.  
  51. Neither. Valid Eiffel programs are not Sather programs, nor vice versa.
  52. Sather 0.2 was closer to being a subset of Eiffel 2.0 but even then
  53. introduced several distinct constructs primarily to improve
  54. computational performance. Eiffel 3.0 has expanded significantly in a
  55. different direction. Sather 1.0 has introduced several new constructs
  56. (eg. iteration abstraction, higher order routines, object constructors,
  57. routine and iter overloading, contravariant class interfaces, typecase)
  58. which makes the two languages quite distinct now.
  59.  
  60.  
  61. 3. Where does the name ``Sather'' come from? How do I pronounce it?
  62.  
  63. The Sather language gets its name from the Sather Tower (popularly
  64. known as the Campanile), the best-known landmark of the University of
  65. California at Berkeley.  A symbol of the city and the University, it is
  66. the Berkeley equivalent of the Golden Gate bridge.  Erected in 1914,
  67. the tower is modeled after St. Mark's Campanile in Venice, Italy. It is
  68. smaller and a bit younger than the Eiffel tower, and closer to most
  69. Americans -- and lovers of Venice of course.  Yet, at 307 feet it
  70. houses 50 tons of human, dinosaur and other animal bones mostly
  71. collected from the La Brea Tar Pits.  Unseen by most visitors the
  72. collection covers six floors of the tower. The way most people say the
  73. name of the language rhymes with "bather".
  74.  
  75.  
  76. 4. What does the ``Hello World'' program look like?
  77.  
  78. -----------------------------------------------------------------
  79.     class MAIN is
  80.        main is #OUT + "Hello World!\n" end
  81.     end
  82. -----------------------------------------------------------------
  83.  
  84.  
  85. 5. Where can I get information on Sather?
  86.  
  87. The best way is to check out the Sather WWW page at
  88.  
  89.     http://www.icsi.berkeley.edu/Sather
  90.  
  91. There is a newsgroup "comp.lang.sather" that is devoted to
  92. discussion of Sather issues.
  93.  
  94. There is a Sather mailing list maintained at the International Computer
  95. Science Institute (ICSI). Since the formation of the newsgroup, this
  96. list is primarily used for announcements.  To be added to or deleted
  97. from the Sather list, send a message to
  98.  
  99.     sather-request@icsi.berkeley.edu
  100.  
  101. If you have problems with Sather or related questions that are not of
  102. general interest, mail to
  103.  
  104.     sather-bugs@icsi.berkeley.edu
  105.  
  106. This is also where you want to send bug reports and suggestions for
  107. improvements.
  108.  
  109.  
  110. 6. Are there freely available implementations of Sather?
  111.  
  112. The ICSI Sather 1.0 compiler can be obtained by anonymous ftp at
  113.  
  114.     ftp.icsi.berkeley.edu:  /pub/sather
  115.  
  116. These sites also mirror the Sather distribution:
  117.  
  118.     ftp.sterling.com:       /programming/languages/sather
  119.     ftp.uni-muenster.de:    /pub/languages/sather
  120.     maekong.ohm.york.ac.uk: /pub/csp
  121.  
  122. I am looking for reliable sites on other continents to mirror the
  123. Sather distribution and be included in this FAQ.  If you can help with
  124. this, please send me mail.
  125.  
  126. There is another dialect of Sather called Sather-K that is being
  127. developed at the University of Karlsruhe, where it has been used in
  128. undergraduate instruction.  The library of Sather-K is Karla, the
  129. KARlsruhe Library or Algorithms, and it has been used in graduate
  130. courses on algorithms and object-oriented design.  Sather 1.0 and
  131. Sather-K are conceptually quite close and we intend to have them
  132. converge in the future; we hope by the summer of 1995.
  133.  
  134. The Sather-K compiler and library are available at
  135.  
  136.     i44ftp.info.uni-karlsruhe.de:  /pub/sather and /pub/Karla
  137.  
  138. as well as at the ICSI ftp site in pub/sather/Sather-K.
  139.  
  140.  
  141. 7. How portable is the compiler?
  142.  
  143. The compiler generates ANSI C and has very few Unix dependencies
  144. which can be fixed if we find out what they are; if your machine runs
  145. gcc, you should be able to port the compiler.
  146.  
  147. So far it has been ported to the following systems, that I know of:
  148.  
  149.     SunOS 4.1.3
  150.     SunOS 5.3
  151.     Ultrix 4.3
  152.     NetBSD 1.0_BETA
  153.     Linux 1.0.8
  154.     SCO Unix 3.2.4
  155.     SGI, IRIX 4.0.5H, IRIX 5.2
  156.     Sony NEWSOS 4.1R
  157.     MIPS RISC os 4.53C
  158.     Alpha, DEC OSF/1 V2.0 and V3.0
  159.     FreeBSD 1.1.5.1
  160.     HPUX 8.07
  161.     OS/2
  162.  
  163.  
  164. 8. How efficient is the compiler?
  165.  
  166. On my Sparc 10 the Sather -> C translate of the compiler takes ~51
  167. seconds, and the "hello world" program takes ~22 wall clock seconds
  168. Sather -> C -> executable (using gcc).  YMMV, especially if you have
  169. less then 32MB memory.
  170.  
  171. The current bottleneck is in compiling the generated C; a parallel make
  172. utility helps.  At some point we will make the C compilation
  173. incremental to get around this.
  174.  
  175. Because we can take advantage of the C compiler's optimizer, the
  176. generated code can range from fair to pretty good.
  177.  
  178.  
  179. 9. What is the future of Sather?
  180.  
  181. Several institutions have expressed interest in using Sather as a
  182. teaching language. Its combination of simplicity, support for modern
  183. programming concepts, and free availability should make it ideal for
  184. this purpose.
  185.  
  186. Ultimately there will be a better development environment; we envision
  187. an interpreter/on-the-fly compiler.  This won't be too hard to do
  188. because the compiler already emits an abstract machine representation
  189. that is appropriate for interpretation.  At the moment the best use of
  190. my limited spare time along these lines is spent speeding up the
  191. compiler.
  192.  
  193. Parallel Sather (pSather) is a parallel version of the language,
  194. developed and in use at ICSI.  pSather addresses
  195. non-uniform-memory-access multiprocessor architectures but presents a
  196. shared memory model to the programmer.  It extends serial Sather with
  197. threads, synchronization and data distribution.  Unlike actor
  198. languages, multiple threads can execute in one object.  A distinguished
  199. class GATE combines various dependent low-level synchronization
  200. mechanisms efficiently:  locks, futures, and conditions.  The new
  201. version of the pSather compiler is being integrated into the serial
  202. Sather 1.0 compiler.  More information on pSather is available at the
  203. WWW page.
  204.  
  205.  
  206. 10. What is all this about covariance vs. contravariance?
  207.  
  208. A religious war occasionally crops up on the net with people arguing
  209. about whether covariance or contravariance is best.  If you haven't
  210. heard of either, don't worry about it.
  211.  
  212. Sather is contravariant.  That means that it isn't possible to get type
  213. errors at runtime.  It also means that some ways of doing
  214. object-oriented programming will require that you, the Sather
  215. programmer, insert _explicit_ type checks (using a typecase) in places
  216. where a covariant compiler would have inserted an implicit check for
  217. you.  We choose contravariance because it eliminates a potential source
  218. of bugs that can't be discovered at compile time; other language
  219. designers have choosen the opposite to allow more expressiveness.
  220. Eiffel says toMAHto, we say toMAYto.
  221.