home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / dec20 / languages.info < prev   
Text File  |  2020-01-01  |  84KB  |  1,908 lines

  1. -*-text-*-
  2. Slightly updated (CPR) 4:18pm  Thursday, 26 June 1980
  3. Major editing (JAF) winter 1982.
  4.  
  5. (note that this is all just a comment now. JAF 11/22/81)
  6.  
  7. File: Languages, Node: Top, Up: (DIR)
  8.  
  9. This file describes the languages that have implementations that can
  10. run on a DECSYSTEM-20 (also referred to herein as "Twenex", which is
  11. jargon ["TENEX on the Twenty", or "Twenty TENEX"]).  The menu lists
  12. the languages.  If a language has only one dialect, then the node for
  13. that language will give general information about it and then provide
  14. a menu of specific information (how to use the compiler, how to use
  15. the debugger if any, etc.) and possibly pointers to more information.
  16. If a language has more than one dialect, then its node has a menu that
  17. lists the dialects.
  18.  
  19. Several points of information are given about each language: where it
  20. comes from (i.e., who mostly produced it, or who last maintained it),
  21. how to invoke it (what command string to give to the Exec), what
  22. system it is oriented towards (either the -10 or the -20, or a few
  23. other odd operating systems), what file extension is considered the
  24. 'default' for that language (i.e., if you use it, you're more likely to
  25. have the right things happen by default), and a general 'title page'
  26. description of the language.
  27.  
  28. One point of jargon: when a language, or the programs it produces, is
  29. said to 'run native', this means that it is TOPS-20 oriented and thus
  30. uses only the TOPS-20 monitor calls; otherwise, it is TOPS-10 oriented
  31. and has to run under PA1050, the "compatibility package" (which tries
  32. to fool programs into thinking they're running under a TOPS-10
  33. monitor).  (Programs that were written for Tenex also run native, but
  34. there may be slight inconsistencies of style.  Programs that were
  35. written under ITS at MIT have mostly been converted to run native on
  36. TOPS-20.
  37.  
  38. When DEC manuals have been cited as reference material, it should be
  39. understood that there may be newer versions or updates to the cited
  40. version.
  41.  
  42. The ensuing language summaries were written, except where otherwise
  43. indicated, by Frank da Cruz and Chris Ryland of the Columbia
  44. University Center for Computing Activities (Chris is now at MIT), who
  45. should be held responsible for any omissions or misrepresentations,
  46. and all opinions, therein, and who invite your comments.  Please note
  47. that this file is under constant development.  If you have additions
  48. or corrections, please send them to:
  49.  
  50.   Frank da Cruz
  51.   Columbia University Computer Center
  52.   New York, NY 10027
  53.  
  54. or
  55.  
  56.   Chris Ryland
  57.   MIT, room 38-374
  58.   Cambridge, MA 02139
  59.  
  60. Or, if you're on the Arpanet, to g.daCruz@SU-SCORE and CPR@MIT-AI.
  61.  
  62. This file contains many INFO pointers at files which may live on
  63. different directories on different sites.  Your site will have to
  64. update these pointers to point at the right places.  The pointers in
  65. the file assume a logical device name for each language, which is the
  66. same (in most cases) as the default filename extension (file type) of
  67. the language, e.g. SIM: for Simula.  All of the file pointers that
  68. don't refer to DOC: or HLP: refer to these logical names.
  69. 
  70. File: Languages, Node: Top, Up: (Dir)
  71.  
  72.         This section describes the programming languages we support here
  73. at MIT-EECS. These nodes are in the process of being revised, so please
  74. forgive us if some of this is untrue. Bugs can be sent to <JAF>, also
  75. if your interested in writing about your favorite language, or if you
  76. have some neat routines you'd like included in a library, send mail
  77. to <jaf>.
  78.  
  79. * Menu: The following languages exist on DEC-20's:
  80.  
  81. * Assemblers::  Several assembly-language processors.
  82. * Algol-60::    ALGOrithmic Language-1960.
  83. * Algol-68::    ALGOrithmic Language-1968.
  84. * Simula::      SIMULAtion Language.
  85. * Fortran::     FORmula TRANslation language.
  86. * Sail::        Stanford Artificial Intelligence Labs language.
  87. * Mainsail::    MAchine INdependent Sail
  88. * Pascal::      Named after Blaise, a modern, fully-typed language,
  89.                  with additions for systems programming on the -20.
  90. * Lisp::        List-Processing Language: 2 implementations for the -20.
  91. * Bliss::       Several versions of DEC's "implementation language".
  92. * PPL::         Polymorphic Programming Language, a pedagogic,
  93.                  extensible language.
  94. * ECL::         Harvard's extensible programming system (EClectic
  95.                  Language).
  96. * C::           Bell Lab's portable, high-level "implementation language".
  97. * BCPL::        A relative of C from BBN.
  98. * CPL::         A "toy" PL/I from DEC.
  99. * PL/I::        The real PL/I, also from DEC.
  100. * Basic::       Beginner's All-purpose Symbolic Instruction Code.
  101. * APLSF::       A Programming Language with Shared Files.
  102. * Snobol::      StriNg-Oriented symBOlic Language.
  103. * Cobol::       COmmon Business-Oriented Language.
  104. * PCL::         Programmable Command Language for TOPS-20.
  105.  
  106. * Utilities::   Language-related utilities.
  107. 
  108. File: Languages, Node: Assemblers, Up: Top, Next: Algol-60
  109.  
  110. An assembler allows you to write programs consisting of actual machine
  111. instructions.  This is thought to be desirable for at least two
  112. reasons:  1. only in assembly language can you write a program that
  113. can take advantage of all the features of the  machine, and 2. you
  114. have maximum control over every aspect of the operation of your program,
  115. including storage allocation, efficiency, etc.
  116.  
  117. In order to use an assembler, you must first be familiar with the
  118. machine's instruction set.  The definitive source for this information
  119. is the:
  120.  
  121.     DECsystem-10/DECSYSTEM-20 Hardware Reference Manual, Volume I:
  122.     Central Processor, EK-10/20-HR-001 (1978).
  123.  
  124. You will notice that this manual actually describes three different
  125. machines: the KA10, the KI10, and the KL10.  You should be aware that
  126. DEC-20's are KL10's, except for 2020's which are KS-10's.  There is
  127. also a PDP-10 Reference card (DEC-10-XSRCA-B-D) which is out of date
  128. (a new one is expected some day), and an article that traces the
  129. development of the PDP-6/PDP-10 36-bit family of computers:
  130.  
  131.     Bell, et al., "The Evolution of the DECsystem-10", CACM (Jan 1978)
  132.  
  133. also found in
  134.  
  135.     Bell, et al., "Computer Engineering", Digital Press (1978).
  136.  
  137. Another thing that assembly-language programmers need to know about is
  138. monitor calls.  There are many things that you cannot do even in
  139. assembly language on a time-shared machine, such as issue i/o
  140. instructions; only the monitor can do these things.  You can ask the
  141. monitor to perform services for you by issuing a monitor call (a
  142. DEC-20 monitor call is called a 'JSYS' (Jump to SYStem)).  Information
  143. about DEC-20 monitor calls is to be found in the following DEC
  144. manuals:
  145.  
  146. 1. Monitor Calls User's Guide, DEC-20-OMUGA-A-D (1976).
  147.    This is a rather informal introduction to DEC-20 monitor calls,
  148.    with detailed information about some of the most common ones.
  149.  
  150. 2. TOPS-20 Monitor Calls Reference Manual, AA-4166D-TM (1980).
  151.    The definitive source for information about DEC-20 monitor calls
  152.    (Release 4 of TOPS-20).
  153.  
  154. In addition, an excellent introduction to assembly language
  155. programming will soon be available (and is in circulation at some
  156. sites in draft form):
  157.  
  158.    Gorin, Ralph E., "Introduction to DECsystem-20 Assembly
  159.      Language Programming", Stanford University Computer
  160.      Science Department, 1980.  Soon to be published by
  161.      Digital Press.
  162.  
  163. There are several assemblers suitable for use on the DEC-20.
  164.  
  165. * Menu:         They include:
  166.  
  167. * Macro::       The standard DEC assembler
  168. * Midas::       MIT's alternative for Macro
  169. * Fail::        A very fast one-pass assembler from Stanford
  170.  
  171. Only Macro is supported by DEC, but the other two have certain
  172. distinct advantages.
  173.  
  174. In addition, the following general information is available on line:
  175.  
  176. * Instruction set:      (MAC:ASM.DOC)*
  177.    A document put together at Columbia in June 1979 that combines
  178.    portions of various DEC manuals and other materials in an attempt
  179.    to provide a single reference on opcodes, jsys's, macro, style,
  180.    etc.  Somewhat superfluous with the appearance of Ralph Gorin's
  181.    book.  The chapters (OPCODE, JSYS, MACRO, etc), are also available
  182.    seperately with their own tables of contents and indexes.
  183. 
  184. File: Languages, Node: Macro, Up: Assemblers, Next: Midas
  185.  
  186. Macro: Assembler
  187.  
  188.  > Comes from: DEC
  189.  > Invoke via: 'Macro' or load-class command.  Extension: .MAC
  190.  > System orientation: -20
  191.  > Description: Free-format, statement-oriented, 2-pass assembler with
  192. macro processor.  Capable of searching external 'universal' files at
  193. assembly time.  Fully supported by DEC.  Most system programs,
  194. including the monitor and the Exec, are written in Macro.
  195.  > Debugging: DDT interactive symbolic debugger.
  196.  > References:
  197. 1. Macro Assember Reference Manual, DEC, AA-4159C-TM (1978).
  198.     You won't learn how to program in Macro from this manual;
  199.     it is strictly for reference.
  200. 2. Macro Assembler User's Guide, DEC (forthcoming).
  201. 3. DECsystem-10 Assembly Language Handbook, DEC, DEC-10-NRZB-D (1972).
  202.     This is out of print, and strictly -10ish, but it is of a better
  203.     instructional nature than any of the currently available DEC manuals.
  204.     It also includes a DDT manual.
  205. 4. Singer, "Introduction to DECsystem-10 Assembler Language",
  206.     John Wiley & Sons (1978).  Strictly for the -10, but it's a textbook.
  207.     Also covers Teco and DDT.  Ignore the description of TOPS-10 monitor
  208.     calls.  TOPS-20 monitor calls are described in the references cited
  209.     under the general topic 'assemblers' (up).
  210. 5. Gorin, Ralph E., "Introduction to DECsystem-20 Assembly Language
  211.     Programming", Stanford University Computer Science Department
  212.     (1980). Soon to be published by Digital Press.  The only introductory
  213.     textbook especially for TOPS-20, and the best one we're likely to see.
  214.     Discusses opcodes, MACRO, JSYS's, and programming techniques.
  215.  
  216. * Menu: On-line information:
  217.  
  218. * Help:         (HLP:MACRO.HLP)*
  219. * Manual:       (MAC:MACRO.DOC)*
  220. * Hints:        (MAC:HINTS.TXT)*
  221. * Debugging:    (HLP:DDT.HLP)*
  222. * DDT Manual:   (MAC:DDT.DOC)*
  223. 
  224. File: Languages, Node: Midas, Up: Assemblers, Next: Fail
  225.  
  226. Midas: Assembler
  227.  
  228.  > Comes from: MIT, distributed with EMACS.
  229.  > Invoke via: 'midas'. Extension: .MID
  230.  > System orientation: ITS (MIT's Incompatible Timesharing System) and TOPS-20.
  231.  > Description: Midas is a 2-pass assembler several times as fast as
  232. Macro.  In addition, it has better error messages, and more powerful
  233. macro facilities.  Most software that comes from MIT that is not
  234. written in Teco or Lisp is written in Midas, for instance Teco itself.
  235. If you want to use TOPS-20 monitor symbols, you must use the statement
  236. ".insrt sys:twxbts.mid".  Midas can produces executable code directly,
  237. allowing you to bypass LINK, if you include the .DECSAV directive.
  238. This is a great performance win for assembly language students.
  239.  
  240.  > Debugging: DDT interactive symbolic debugger.
  241.  
  242. * Menu:         Online information:
  243.  
  244. * Help:         (HLP:MIDAS.HLP)*
  245. * Debugger:     (HLP:DDT.HLP)*
  246. * DDT Manual:   (MAC:DDT.DOC)*
  247. * Manual:       (INFO:MIDAS)Top
  248.                 This is the INFO-structured manual.
  249. 
  250. File: Languages, Node: Fail, Up: Assemblers
  251.  
  252. Fail: Assembler
  253.  
  254.  > Comes from: Stanford Artificial Intelligence Laboratory (SAIL),
  255.      but is usually distributed with MM or other programs that are
  256.      written in Fail.
  257.  > Invoke via: 'Fail', or load-class command.  Extension: .FAI
  258.  > System orientation: -20
  259.  > Description: Fast, one-pass, block-structured assembler written by
  260. Ralph Gorin at Stanford.  DEC-20 monitor calls are built in, but
  261. symbols have to obtained by searching monsym (.FUN, not .UNV).
  262. Extremely close to Macro (except block structure, which need not be
  263. used, and small syntactic differences) but about 5 times faster.
  264. Programs can be written such that they will assemble under either
  265. Macro or Fail; MM is a good example.
  266.  > Debugging: DDT (but if you use block structure, watch out!)
  267.  > Reference:
  268. Wright & Gorin, "Fail", SAIL Operating Note 75B (Jan 1977).
  269.  
  270. No online documentation, but command string is like Macro's.
  271. It understands full -20 file names, but doesn't do recognition on
  272. them.
  273. 
  274. File: Languages, Node: Algol-60, Up: Top, Previous: Assemblers, Next: Algol-68
  275.  
  276. Algol-60 (ALGOrithmic Language 1960): compiler
  277.  
  278.  > Comes from: DEC
  279.  > Invoke via: 'Algol' or load-class command.  Extension: .ALG
  280.  > System orientation: strictly -10.  DEC has no plans to 20ize.
  281.  > Description:
  282.  Block structured, recursive, statement-oriented language best suited
  283. for clear, structured exposition of algorithms.  Various data types
  284. are available.  This is the original common language of computer
  285. scientists and is the basis of many other languages, such as Sail,
  286. Simula, Pascal, Bliss, etc.  Can be linked with external routines in
  287. Algol, Fortran, and Macro.  DEC still distributes Algol-60, but no
  288. longer develops it.  There are no plans to make it 20ish.
  289.  > Debugging: ALGDDT, an interactive source-level debugger.
  290.  > References (only a few of many):
  291. 1. DECSYSTEM-10/20 Algol Programmer's Guide, AA-0196C-TK (1977).
  292. 2. Backus et al., "Revised Report on the Algorithmic Language ALGOL-60",
  293.     CACM vol.6, no.1 (1963).
  294. 3. Dijkstra, "A Primer of Algol-60 Programming", Academic Press, 1962.
  295. 4. "Collected Algorithms for CACM and ACM TOMS (1966 ff.).
  296. 5. "Modified Report on the Algorithmic Language Algol 1960",
  297.      Computer Journal, v.19, Nov 1976.
  298.  
  299. * Menu: On-line information about Algol-60
  300.  
  301. * Help:         (HLP:ALGOL.HLP)*
  302. * Debugger:     (HLP:ALGDDT.HLP)*
  303. 
  304. File: Languages, Node: Algol-68, Up: Top, Previous: Algol-60, Next: Simula
  305.  
  306. Algol-68 (Algorithmic Language 1968): compiler
  307.  > Comes from: University of Essex, U.K.
  308.  > Invoke via: A68.  Extension: .A68.  Logical name: A68:.
  309.  > System orientation: TOPS-20 (native) (but since it produces .REL
  310. files that must be LINKed, TOPS-10 conventions should still be
  311. observed in naming your Algol-68 programs).
  312.  > Description:
  313.  A very powerful language which includes extensible language facilities
  314. and employs a new grammatical method of language definition.
  315. Developed under IFIP auspices by Working Group 2.1 (Algol).  Not a
  316. compatible extension of Algol-60 although it retains the atmosphere of
  317. the earlier language.  Algol-68 was originally defined in 1968; it has
  318. recently been revised by WG 2.1 in light of implementation experience.
  319. Versions exists for IBM 360/370 as well as PDP-10, PDP-11, and other
  320. computers.
  321.  
  322.  > References:
  323. 1. Van Wijngaarden et al., "Revised Report on the Algorithmic Language
  324.     Algol 68", ACM Sigplan Notices, v.12 (May 1977), or in hardcover
  325.     (Springer Verlag).
  326. 2. Bourne, S.R., "ALGOL68C Reference Manual", University of Cambridge
  327.     Computer Laboratory (refers specifically to our version).
  328. 3. Tanenbaum, "A Tutorial on Algol-68", ACM Computing Surveys, v.8
  329.     (June 1976).
  330. 4. Lindsey & van der Meulen, "Informal Introduction to Algol-68",
  331.     Revised edition, North-Holland Publ. Co. (1977).
  332.  
  333. * Menu:         See also:
  334.  
  335. * Help:         (HLP:A68.HLP)*
  336. * Users Guide:  (A68:A68.MAN)*
  337. * Bugs:         (A68:A68.DOC)*
  338. * i/o system:   (A68:CHAPT8.MAN)*
  339. * Formatting:   (A68:PSF.MAN)*
  340. * Updates:      (A68:UPDATE.MAN)*
  341. 
  342. File: Languages, Node: Simula, Up: Top, Previous: Algol-68, Next:  Fortran
  343.  
  344. Simula-67 (Simulation Language 1967), compiler.
  345.  
  346.  > Comes from: Norwegian and Swedish governments
  347.  > Invoke via: 'simula' or load-class command.  Extension: .SIM
  348.  > System orientation: TOPS-10 (a native version is on the way)
  349.  > Description:
  350.  A powerful general-purpose language that contains Algol-60 as a
  351. subset.  Simula has built-in capabilities for list-processing,
  352. text-handling, abstract data types, quasi-parallel processing
  353. (coroutines), formatted i/o, limited extensibility, and discrete event
  354. simulation.  Distinct from its predecessor, known as Simula-I, which
  355. was primarily a simulation language.  Implemented on most large
  356. computers, including IBM 360/370.  Simula is one of the languages that
  357. fulfills the role on the DEC-20 that PL/I plays on IBM systems, but
  358. Simula differs from PL/I in that it is fully defined (i.e. there is no
  359. risk that the language specification does not say what will happen
  360. when a certain construct is used).  Simula programs are fully portable
  361. except where the machines involved have differing character codes, in
  362. which case conversion programs are supplied.  A codasyl-type database
  363. management system, SIMDBM, is available.
  364.  
  365. Unfortunately, Simula combines its abstract data types with strong
  366. (compile-time) type checking, which eliminates most of the potential
  367. advantage of abstract data types.
  368.  
  369.  > Debugging: SIMDDT, interactive source-level bebugger.
  370.  > References:
  371. 1. Dahl et al., "Common Base Language", Norwegian Computing Center,
  372.     Oslo.
  373. 2. Birwistle et al., "Simula begin", Auerbach, Phila (1973).
  374. 3. "Simula Newsletter", Norwegian Computer Center.
  375. 4. "DECsystem-10/20 Simula Gazette", Swedish Nat'l Defense Research
  376.     Institute, Stockholm.
  377. 5. A list of Simula reports & papers appears in ACM SIGPLAN Notices,
  378.     vol 15 #5, May 1980, pp 12-18.
  379.  
  380. * Menu:         See also:
  381.  
  382. * help:         (HLP:SIMULA.HLP)*
  383.    General help about Simula.
  384. * compile:      (SIM:SIMCOM.HLP)*
  385.    How to use the Simula compiler.
  386. * debug:        (SIM:SIMDDT.HLP)*
  387.    How to use the Simula debugger.
  388. * directory:    (SIM:SIMDIR.HLP)*
  389.    How to use the Simula module maintenance facility.
  390. * editor:       (SIM:SIMED.HLP)*
  391.    How to use the source-file formatter and implementation
  392.    conversion program.
  393. * runtime:      (SIM:SIMRTS.HLP)*
  394.    Information about the runtime system, especially file access.
  395. * general:      (SIM:SIMULA.HLP)*
  396.    General info about Simula, known bugs, etc.
  397. * man1:         (SIM:SIMLH1.MAN)*
  398.    Part I of the language handbook: the language definition.
  399. * man2:         (SIM:SIMLH2.MAN)*
  400.    Part II of the language handbook: TOPS-10 dependencies.
  401. * man3:         (SIM:SIMLH3.MAN)*
  402.    Part III of the language handbook: The Simula library.
  403. 
  404. File: Languages, Node: Fortran, Up: Top, Previous: Simula, Next: Sail
  405.  
  406. Fortran is the common language of engineers and many scientists;  it
  407. is best suited for numerical applications, and it can be found on
  408. almost every computer. However, it is also a very early language and
  409. lacks most of the features which are thought to be essential to a
  410. modern programming language (the 'do while' and 'if-then-else'
  411. constructions, statement bracketing, scoping of variables, a standard
  412. way of dealing with character-string data, adequate means of error
  413. recovery, etc.), and therefore a great deal of discipline is required
  414. to write clear, readable, correct, transportable programs.
  415.  
  416.  > References:
  417. 1. American National Standard, FORTRAN, ANS X3.9-1966.
  418. 2. American National Standard Basic FORTRAN, ANS X3.10-1966.
  419. 3. "Clarification of FORTRAN Standards -- Second Report", CACM v.14
  420.     (Oct 1971).
  421.  
  422. By the way, there is a new ANSI standard for Fortran called
  423. Fortran-77, which corrects a couple of the most outstanding
  424. deficiencies (noted above) of Fortran-IV.  It replaces the 1966
  425. standard.  See:
  426.  
  427. 1. American National Standard, FORTRAN, ANS X3.9-1978.
  428. 2. Brainerd, "Fortran 77", CACM v.21 (Oct 78).
  429.  
  430. We don't expect to see Fortran-77 on the DEC-20 for several years
  431. (except for SITGO, see below).
  432.  
  433. The following dialects of Fortran-IV exist (on the DEC-20):
  434.  
  435. * Menu:
  436.  
  437. * Fortran-20::  Fortran-20:
  438.                 The principle Fortran compiler for the DEC-20.
  439.                 Capable of producing well-optimized code.
  440.  
  441. * Sitgo::       This is a fast compile-and-go
  442.                 system mainly useful for instruction and
  443.                 program development.  Includes Fortran-77 features.
  444.  
  445. * Ratfor::      "Rational Fortran".  This is a preprocessor
  446.                 that allows structured programming, string
  447.                 manipulation, etc., in Fortran programs.
  448. 
  449. File: Languages, Node: Fortran-20, Up: Fortran, Next: Sitgo
  450.  
  451. Fortran-20 (Fortran for the -20): compiler
  452.  
  453.  > Comes from: DEC
  454.  > Invoke via: 'fortran' or load-class command.  Extension: .FOR
  455.  > System orientation: -10, but upgrade to -20 will happen some day.
  456.  > Description:  Full ANSI 1966 standard Fortran IV with useful
  457. extensions.  Global optimization as an integral (but optional) part of
  458. the system.  Has a large library of built-in functions, and allows
  459. access to various packages, such as the IMSL scientific subroutine
  460. library and DBMS, and to external routines in Fortran, assembly
  461. language, and Cobol.  Also, Fortran routines can be called from other
  462. languages such as Algol and Sail.
  463.  > Debugging: FORDDT, an interactive source-level debugger.
  464.  > Reference:
  465. FORTRAN Reference Manual, DEC, AA-4158B-TM (1977)
  466.  
  467. * Menu:         On-line information:
  468.  
  469. * Help:         (HLP:FORTRA.HLP)*
  470. * Debugger:     (HLP:FORDDT.HLP)*
  471. * Hints:        (FOR:HINTS.TXT)*
  472. * Document:     (DOC:FORTRAN.DOC)*
  473.    This contains details of how to use Fortran on the DEC-20,
  474.    and comparison of DEC-20 Fortran with IBM Fortran and
  475.    standard Fortran.
  476. 
  477. File: Languages, Node: Sitgo, Up: Fortran, Next: Ratfor, Previous: Fortran-20
  478.  
  479. Sitgo (Stevens Institute of Technology 'go'): compiler/loader
  480.  
  481.  > Comes from: DEC via Stevens Institute of Technology, Hoboken, NJ.
  482.  > Invoke via: 'Sitgo' or load-class command, Extension: .STG
  483.  > System orientation: Strictly -10
  484.  > Description:
  485. A very fast fortran compiler designed especially for people learning
  486. Fortran.  It has very good compile-time diagnostics.  Includes most of
  487. the Fortran-77 features.  Can be run interactively, or it can manage
  488. its own batch stream.  Requires modifications to PA1050.  Since it
  489. does no optimization and bypasses LINK, it can be a big performance
  490. win on systems with big introductory Fortran courses.
  491.  
  492. * Menu:
  493.  
  494. * Help:         (HLP:SITGO.HLP)*
  495. * Manual:       (DOC:SITGO-USERS-GUIDE.DOC)*
  496. 
  497. File: Languages, Node: Ratfor, Previous: Sitgo, Up: Fortran
  498.  
  499. Ratfor (Rational Fortran): Preprocessor
  500.  
  501.  > Comes from: Bell Labs via BBN
  502. There are many other versions, but this is the one we happen to have.
  503.  > Invoke via: 'ratfor'. Extension: .RAT
  504.  > System orientation: TOPS-20 (but see below)
  505.  > Description:
  506.  
  507. Developed at Bell Laboratories by Kernighan and Plauger.  A
  508. preprocessor for Fortran which gives it modern control structures,
  509. string data, text substitution, etc., without leaving the language
  510. entirely.  The flavor of Ratfor is like C, and the language is
  511. becoming very popular because it meets minimal requirements for
  512. structuredness and utility, and it generates a Fortran source program,
  513. which can be compiled on almost any computer.  Since Ratfor itself is
  514. written in Ratfor, the compiler can be moved to new computers very
  515. easily.  The compiler runs native; you can give it TOPS-20
  516. file specifications for input and output, but it produces a Fortran
  517. program, and Fortran currently runs under compatibility.  However, a
  518. number of routines can be found in RAT: that allow TOPS-20 i/o from
  519. Ratfor and hence from Fortran.  The compiler and other sources are on
  520. line in RAT:; users are invited to make fixes and improvements.  No
  521. comprehensive document about this version exists; users are invited to
  522. write one.
  523.  
  524.  > Debugging: ForDDT interactive Fortran source-level debugger.
  525.  > References:
  526.  
  527. Kernighan & Plauger, "Software Tools", Prentice-Hall (1976).
  528.  
  529. * Menu:         See also
  530.  
  531. * help:         (HLP:RATFOR.HLP)Top
  532. * history:      (RAT:RATFOR.INFO)*
  533.    This is a mail file; use Rmail or MM to read it.  Contains valuable
  534.    information about how Ratfor was developed at BBN and how the BBN
  535.    version differs from K & P's.
  536. * cucca:        (RAT:CUCCA-RATFOR-NOTES.TXT)*
  537. 
  538. File: Languages, Node: Sail, Up: Top, Previous: Fortran, Next: Mainsail
  539.  
  540.  
  541. Sail stands for Stanford Artificial Intelligence Language. Sail is based
  542. on Algol but also has fairly extensive list processing capability. Sail
  543. allows one to include inline assembly code, and call most jyses directly.
  544. Sail's i/o handling is awesome, but a bit tricky at first. Overall, sail
  545. is a good language to hack in, but probably shouldn't be tackled by
  546. someone unfamiliar with block structured languages.
  547.  
  548. * Menu: On-line information about Sail:
  549.  
  550. * Help:         (HLP:SAIL.HLP)*
  551.                 The directions for compiling sail programs.
  552.  
  553. * Debugger:     (HLP:BAIL.HLP)*
  554.                 The directions for bail, the sail debugger.
  555.  
  556. * Libraries:    (SAIL-LIBS)*
  557.                 The many varied and useful Sail library routines.
  558.  
  559. * Manual:       (SAI:SAIL.MAN)*
  560.                 The 1976 version of the sail manual.
  561.  
  562. * New Stuff:    (SAI:SAIL.DOC)*
  563.                 Updates for the 1976 version of the sail manual.
  564.  
  565. * Source::      Where sail comes from, and a more technical description.
  566.  
  567. * Hints:        (SAI:HINTS.TXT)*
  568.                 Valuable tips from Sail users.  You can append
  569.                 your own tidbits to this file.
  570.  
  571. * Tutorial:     (DOC:SAIL-BEGINNERS-GUIDE.DOC)*
  572.                 It's quite long, but if you want to teach yourself Sail
  573.                 it beats the reference manual, especially if you come from
  574.                 a Fortran background.
  575.  
  576. 
  577. File: Languages, Node: Source, Up: Sail, Next: Manual
  578.  
  579. Sail (Stanford Artificial Intelligence Labs language): compiler
  580.  
  581.  > Comes from: Stanford Artificial Intelligence Laboratory.
  582.    Distributed by:
  583. Charles Hedrick (Hedrick@RUTGERS)
  584. Director,
  585. Laboratory for Computer Science Research
  586. Hill Center, Busch Campus
  587. Rutgers University
  588. New Brunswick, NJ  08903
  589.  > Invoke via: 'sail' or load-class command. Extension: .SAI
  590.  > System orientation: Mostly Tenex, some -20 (but no -10!).
  591.  > Description:
  592.  
  593. A superset of Algol-60.  Additional features include dynamic strings,
  594. records, additional control structures, in-line assembly code,
  595. built-in access to monitor calls (JSYS's), a complete set of
  596. compile-time arithmetic and logic as well as a macro processor,
  597. conditional compilation and compile-time i/o, sets and lists,
  598. interrupt facilities, plus just about every other feature that could
  599. be imagined.  Also included is another language called LEAP, which
  600. allows manipulation of associative data structures.  Sail can be
  601. linked with external routines in Sail, Fortran, and assembly language.
  602. Sail is not entirely free of idiosyncrasies and bugs - it was written
  603. by many different people over a long period.  But it is quite usable.
  604. Sail only runs on DEC-10's and -20's, but a machine-independent Sail
  605. (Mainsail) is available; it's not the same language, but it's very
  606. close in spirit.
  607.  > Debugging: Bail, a source-level interactive debugger.
  608.  > References:
  609.  
  610. Shapiro, Marvin,  "A Beginner's Guide to Sail",
  611.  Division of Computer Research and Technology,
  612.  National Institutes of Health, Bethesda MD 20014 (July 1976).
  613.  Also on line as DOC:SAIL-BEGINNERS-GUIDE.DOC.
  614.  
  615. Reiser, "SAIL", Stanford Artificial Intelligence Laboratory Memo
  616.  AIM-289, Computer Science Department Report No. STAN-CS-76-574.
  617.  This reference manual is indispensible for Sail users.
  618.  
  619. Smith, "Sail Tutorial", Sail Memo AIM-290,
  620.  C.S. Dept Report STAN-CS-76-575.
  621.  
  622. Feldman, "An Algol-Based Associative Language", CACM Aug 1969.
  623.  (This is about Leap).
  624.  
  625. 
  626. File: Languages, Node: Mainsail, Up: Top, Previous: Sail, Next: Pascal
  627.  
  628. Mainsail (MAchine-INdependent Sail): Compiler
  629.  
  630.  > Comes from: Stanford University Medical Center
  631.  The contact is:
  632. Clark R. Wilcox (Wilcox@SUMEX-AIM)
  633. SUMEX Computer Project
  634. Department of Genetics, Room TB105
  635. Stanford University Medical Center
  636. Stanford CA 94305
  637.  
  638. The Mainsail project is about to go commercial, as XIDAK Inc.  (Cheap
  639. for educational institutions).
  640.  
  641.  > Invoke via: 'mainsail'. Extension: .MSA (or null).
  642.  > System orientation: TENEX
  643.  > Description:
  644.  Under development at SUMEX by Clark R. Wilcox et al., this language
  645. may well be the long-awaited native-mode general-purpose programming
  646. language for the DEC-20.  It is a generalization of Sail, designed
  647. from scratch with portability and consistency as principle criteria.
  648. It is a serious effort, fully supported by the Biotechnology Resources
  649. Program of the National Institutes of Health.  All the power of Sail
  650. is there, but the hacks are gone and many of Sail's features have been
  651. extended, especially strings and records.  In addition, certain
  652. concepts have been adapted from other languages, such as the modules
  653. of Simula.  A wide variety of data types and control structures are
  654. supported.  Mainsail programs cannot be linked with programs written
  655. in other languages, but it is possible to write in-line assembler code
  656. or assembly-language modules.  In fact, Mainsail cannot be used with
  657. LINK; Mainsail provides its own combined dynamic linker and operating
  658. environment.  Since Mainsail programs are intended to look the same on
  659. any machine, some special features of TOPS-20 like filename
  660. recognition are not available.  Versions currently exist for TENEX
  661. (and therefore with very slight modification for TOPS-20), TOPS-10,
  662. UNIX, RSX-11M, and RT-11.  There are also versions under development
  663. (perhaps completed by the time you read this) for the VAX, MC68000,
  664. and IBM 370/30xx/43xx CMS.
  665.  
  666.  > Debugging: An interactive source-level debugger is expected.
  667.  > References:
  668.  
  669. 1. Wilcox et al., "Mainsail Language Manual", Stanford University
  670.     Medical Center (also available on line, see menu).
  671. 2. Wilcox, "The Mainsail Project: Developing Tools for Software
  672.     Portability", Proc. 1st Annual Symposium on Computer Application
  673.     in Medical Care, Washington DC (Oct 77).
  674. 3. Wilcox (in Lederberg & Feigenbaum, [?]), "Comparison of Mainsail
  675.     and Pascal".
  676.  
  677. * Menu:
  678.  
  679. * Help:         (HLP:MAINSAIL.HLP)*
  680. * Hints:        (MSA:HINTS.TXT)*
  681. * PDP-10:       (MSA:PDP10.DOC)*
  682. * Manual:       (MSA:MAINSAIL.MANUAL)*
  683.  
  684. 
  685. File: Languages, Node: Pascal, Up: Top, Previous: Mainsail, Next: Lisp
  686.  
  687. Pascal: Compiler
  688.  
  689.  > Comes from: Rutgers University.  Converted from Hamburg DECsystem-10
  690. version by Charles Hedrick, and given systems programming orientation
  691. in the doing.
  692.  > Invoke via: 'pascal' or load-class command, Extension: .PAS
  693.  > System orientation: TOPS-20.  The compiler command string is in
  694. TOPS-10 format to allow it to be hooked into the load-class
  695. commands.  Otherwise, the compiler runs native on the -20, as do
  696. the programs it generates.
  697.  > Description:
  698.  Loosely based on Algol-60; includes a variety of data-structuring
  699. facilities (records, sets, lists).  Intended as both a convenient
  700. basis to teach programming and as an efficient tool to write large
  701. programs; emphasis is on keeping the number of fundamental concepts
  702. reasonably small.  Pascal-20 was developed for use as a systems
  703. programming language, and includes a JSYS interface and the ability to
  704. write external Pascal and assembly language procedures, but is
  705. otherwise very close to the original language definition.  Active
  706. development of Pascal-20 continues; current projects are to make it
  707. closer to UCSD Pascal, to add a preprocessor, and to make a compatible
  708. compile-and-go version (an incompatible compile-and-go version has
  709. been done at Stanford, called PASSGO, but it's not quite ready for
  710. widespread distribution).
  711.  
  712.  > Debugging: PASDDT, interactive source-level debugger.
  713.  > References:
  714. 1. Jensen & Wirth, "Pascal User Manual and Report", 2nd Ed.,
  715.     Springer-Verlag (1974).
  716. 2. Wirth, "The Programming Language Pascal", Acta Informatica 1 (1971).
  717. 3. Wirth, "Systematic Programming: An Introduction", Prentice-Hall (1973).
  718. 4. Conway, Gries, & Zimmerman, "A Primer on Pascal", Winthrop (1976).
  719. 5. Mickel (editor), "PASCAL Newsletter", Computer Center, University
  720.     of Minnesota.
  721.  
  722. * Menu:
  723.  
  724. * Help:         (HLP:PASCAL.HLP)
  725. * Pas-Critique::
  726.    An objective evaluation of Pascal-20 by its author.
  727. * Manual:       (PAS:PASCAL.DOC)*
  728.    This document describes only the system-dependent aspects of Pascal-20.
  729.    It is not a language manual; for this see reference 1.
  730. * Full-Manual:  (DOC:PASCAL-FULL-MANUAL.DOC)*
  731.    This is a complete guide to the extensions that are built into
  732.    the on-line Pascal implementation.  It is not a language manual.
  733. 
  734. File: Languages, Node: Pas-Critique, Up: Pascal
  735.  
  736. The following words were written by Charles L. Hedrick at Rutgers:
  737.  
  738. [PASCAL] is based on the PASREL compiler from the University of
  739. Hamburg, which was submitted to DECUS about two years ago.  Since then
  740. Hamburg has submitted an updated version, the most useful pieces of
  741. which we have also used.  (In general there seem to have been more
  742. bugs in the updates than in the original implementation.)  I have made
  743. the following sorts of changes to their system:
  744.  
  745. - The TOPS-20 I/O system is completely new.
  746.  
  747. - The runtime structure has been changed to allocate core
  748. automatically as needed.
  749.  
  750. - The compiler has had many bug fixes made.
  751.  
  752. - The compiler has been modified in a number of minor ways to be
  753. closer to a full implementation of the PASCAL language.
  754.  
  755. - Certain added I/O and runtime procedures required modification of
  756. the compiler in order to be compiled properly.
  757.  
  758.  
  759. The goals of these changes were as follows:
  760.  
  761. - To give the user access to all the facilities of the underlying
  762. operating system if he desires, supplying reasonable defaults when he
  763. does not.
  764.  
  765. - To make use of the system "smoother" (e.g. provide output for CREF,
  766. fix problems that caused every program to begin by typing "*" and to
  767. always create a file called OUTPUT).
  768.  
  769.  
  770. The "non-goals" (to use DEC's terminology) were
  771.  
  772. - To make an optimizing compiler (not practical in the time available,
  773. and maybe not even desirable for installations using this for
  774. students).
  775.  
  776. - To extend the PASCAL language (as distinguished from adding new I/O
  777. procedures).  While there are serious limitations to PASCAL, solving
  778. them would make it a "bigger", more complex language, thus possibly
  779. reducing its attractiveness for teaching purposes.  Anyway, there are
  780. other languages available that have all the features that would be
  781. added (e.g. SAIL).  However I have not removed the extensions present
  782. in the original PASREL compiler.
  783.  
  784. I consider that [PASCAL] has the following major strengths [in the
  785. DECSYSTEM-20 environment]:
  786.  
  787. - Its syntax is based on Algol.  This is the major source of its
  788. reputed "cleanness".  (I cannot understand why PASCAL is taking the
  789. world by fire and Algol never got anywhere.)
  790.  
  791. - It has very good data structuring facilities.  The record structures
  792. are very general and easy to use.  Packed records make it possible to
  793. define the various wierd argument blocks used by UUO's and JSYS's.
  794.  
  795. - This implementation gives very good access to the functions of the
  796. operating system.  It is possible to do odd kinds of I/O, and to
  797. insert UUO's and JSYS's into the program without needing to set up
  798. arguments using assembly language.
  799.  
  800.  
  801. These advantages make it useful for teaching and system programming.
  802. However when one attempts to use it for general applications
  803. programming, the following problems in the design of the language show
  804. up.
  805.  
  806. - It is not possible to write procedures that take arrays of arbitrary
  807. size as arguments.  E.g. one can write a procedure to invert 5 by 5
  808. matrices, but not to invert arbitrary size matrices.
  809.  
  810. - There is no double precision arithmetic.
  811.  
  812. - There are no character strings.  Instead one has only arrays of
  813. characters.  Thus one is constantly writing loops that deal with each
  814. character in the array.  None of the usual string operations are
  815. available (or even definable, because of the limitation on variable
  816. length arrays).  This implementation allows you to treat a character
  817. array as a file, which makes some operations a bit easier.  But
  818. character handling is dramatically clumsier than SAIL, or even DEC
  819. Algol.
  820.  
  821. - Records are not garbage collected nor is their any way to return
  822. records to the heap.
  823.  
  824.  
  825. The first two problems mean that the language cannot be considered for
  826. serious numerical work.  The lack of character strings means that it
  827. takes considerable ingenuity to write interactive programs that
  828. conduct dialogs with the user.  The fact that records cannot be
  829. returned means that non-trivial use of pointers requires the user to
  830. supply his own memory management.  Because of strong typechecking, it
  831. is not possible for the user to write a good memory management system.
  832. The best one can do without abusing the language is to keep separate
  833. free lists for each record type.
  834.  
  835. I think most users would find SAIL a better choice for general
  836. applications programming.  PASCAL would be better only in the
  837. following rather special circumstances:
  838.  
  839. - Records and pointers are very important to the application.  Packed
  840. records and strong type checking make PASCAL an excellent choice in
  841. this case.  (This implementation checks for attempts to follow NIL or
  842. 0 pointers, and it is possible to force all uninitialized variables to
  843. be 0.)  SAIL's record syntax is somewhat clumsy, and it does not
  844. provide a clean way to have records with components smaller than a
  845. word.  However macros can be used to solve these problems in SAIL if
  846. necessary.
  847.  
  848. - The program contains many JSYS's.  In SAIL one would have to use the
  849. facility for inserting assembly language in line.  In PASCAL monitor
  850. calls can be done very nicely in a high level way, using the data
  851. structures built into the language.
  852.  
  853. - The program is intended to be transportable.  In this case one should
  854. consider Simula as an alternative, however, as there are a number of
  855. other Simula implementations.  Simula is not my first choice because
  856. the programs that have been done locally using it seem to be big and
  857. slow.  (I.e. when translated into SAIL they get smaller and and
  858. faster.)
  859.  
  860. There are, of course, a number of languages other than SAIL which
  861. would be suggested by my various colleagues.  (The most interesting of
  862. these seems to be ECL, which combines a good interactive environment,
  863. such as Lisp and APL provide, with the advantages of a syntax and
  864. semantics of roughly the same power as Algol 68.)
  865.  
  866. - Charles L. Hedrick, Rutgers University, October 1978
  867. 
  868. File: Languages, Node: Lisp, Up: Top, Previous: Pascal, Next: Bliss
  869.  
  870. Lisp - various Lisp implementations for the -20
  871.  
  872. Columbia has tried various implementations of LISP - Rutgers/UCI
  873. (originally Stanford) 1.6 Lisp, InterLisp, and UCI Tenex/Tops20 Lisp
  874. (called ILisp), and has settled - for now at least - on MIT MacLisp
  875. because of the current choices, it's the easiest on the system
  876. (Interlisp practically needs a dedicated machine), and it's most at
  877. home in the TOPS-20 environment.  There is also a totally new LISP
  878. system under development at Rutgers which we'll be watching.
  879.  
  880. If you don't know much about Lisp, you should look at the Lisp Culture
  881. section, as selectable in the Menu below.  Also see the Lisp Tutor
  882. section, and the tutorial referenced below.
  883.  
  884. * Menu:         the Lisps we have on the -20
  885.  
  886. * Lisp Culture:: Some ramblings about Lisp
  887. * Lisp Tutor::  A Lisp CAI (Computer Assisted Instruction) system
  888. * MacLisp::     MIT project MAC LISP.
  889. * RUCI Lisp::   Rutgers/UCI/Stanford Lisp 1.6
  890. * Interlisp::   BBN/XEROX PARC Interlisp
  891. * ILisp::       IMSSS' UCI Tenex/Tops20 Lisp
  892.  
  893. 
  894. File: Languages, Node: Lisp Culture, Up: Lisp, Next: Lisp Tutor
  895.  
  896. Some Cultural Information about Lisp
  897.  
  898. Lisp is a language that has probably generated most of the important
  899. seminal ideas in language theory and practice (Algol fans' opinions
  900. notwithstanding), and which has carried most of the burden of
  901. symbol-manipulation tasks in the computer science community for many
  902. years.  It has been a particularly important tool in the development
  903. of artificial intelligence and related disciplines, and still lives on
  904. strong in many of these circles.  It is a language that can't be beat
  905. for simplicity and power in its intended application of symbol
  906. manipulation (which encompasses tasks such as natural language
  907. understanding, goal-oriented programming, theorem-proving, etc.), and
  908. it is even a decent programming language in its own right in other
  909. areas (it is used as a systems programming language at some notorious
  910. places, most notable the M.I.T. Artificial Intelligence Labs).  Its
  911. simultaneous simplicity and power make it an attractive language for
  912. many tasks.
  913.  
  914. Honeywell now sells an EMACS written in Maclisp, for their Multics
  915. system.  The author said that using Lisp resulted in code that was
  916. more concise, faster, and smaller in core than he would have got using
  917. PL/1, the standard Multics system programming language.  With luck,
  918. there may be an EMACS written in Lisp for DEC systems to replace the
  919. current one.
  920.  
  921. Lisp is also the only truly extensible language.  Because a Lisp
  922. interpreter is available when the compiler is used, the user can
  923. define syntactic extensions which run arbitrary Lisp programs to
  924. compute the code they expand into.  It is easy to define new control
  925. constructs.
  926.  
  927. This is not to say that it couldn't be better; it has many rough edges
  928. that have been smoothed in later attempts at sophisticated
  929. programming languages, but it still has a good deal of popularity in
  930. many computer science circles.
  931.  
  932. Lisp was first conceived and developed by John McCarthy of (then)
  933. M.I.T., who's now at Stanford (and has been for many years).  McCarthy
  934. first defined a 'pure' Lisp which was theoretically very interesting,
  935. but not very practical.  He, and several other people elsewhere, added
  936. standard-programming-language features to it, and the result was
  937. several versions of impure Lisp, which have diverged even further
  938. since then.  Still, the basic concepts are the same, and
  939. implementations have a surprising closeness, differing mostly in the
  940. 'sugar' added later to sweeten the particular programming environment.
  941. There is a very good article on the history of Lisp, by McCarthy, in
  942. the History of Programming Languages Conference Proceedings (Sigplan
  943. Notices, Volume 13, Number 8, August 1978).  McCarthy, it should be
  944. mentioned, is often considered one of the fathers of the time-sharing
  945. concept, as he was the key figure on the development of CTSS at
  946. M.I.T., back in the one-programmer-at-a-time-on-the-computer days.
  947.  
  948. To throw in a little controversy, I would venture to say that any
  949. computer scientist that doesn't know and appreciate Lisp is missing
  950. quite a bit, due to its singular importance in the development of this
  951. science.
  952.  
  953. For more reading, there are several good places to look: Pat Winston,
  954. the director of the Artificial Intelligence Labs at M.I.T., and a
  955. very good teacher, has just written a introduction to the field of
  956. artificial intelligence which includes a Lisp primer ("Artificial
  957. Intelligence," Addison-Wesley; 1977).  He has also written, with
  958. Berthold Horn, a complete text ("Lisp," Addison-Wesley; 1977).
  959. The old standby, somewhat babyish, but certainly a good beginner's
  960. book, is the Weissman "Lisp 1.5 Primer" (Dickenson Publishing Co.; 1967).
  961. There's also a fairly new book, called "Let's Talk Lisp", written by
  962. Laurent Siklossy (Prentice-Hall; 1976); I don't know if it's that good,
  963. but Winston recommends it.
  964.  
  965. For a very tasteful overview of how one segment of the computer
  966. science community 'lives in' Interlisp, see the article "Programming
  967. in the Interactive Environment: the LISP Experience", by E. Sandewall,
  968. ACM Computing Surveys, Volume 10, Number 1 (March 1978).
  969.  
  970. Lisp has many spiritual children; some of the most prominent are
  971. Planner, a goal-oriented programming language developed at M.I.T.;
  972. Conniver, an alternative to Planner (there were a couple of papers
  973. written of the sort "why Conniving is better than Planning"); QLisp,
  974. an attempt at modernizing Lisp; QA4, a theorem-proving-oriented
  975. language; POPL, a British language that emphasized a more ordinary
  976. syntax; ECL, an extensible language developed at Harvard that owes
  977. much to Lisp and has a kinship to Algol-68; MDL (or Muddle), a
  978. considerably unusual dialect of Lisp developed at M.I.T. for use as a
  979. modelling language; and many more which I probably don't know about.
  980. (Of course, this paragraph does great injustice by trying to summarize
  981. many man-years of intellectual striving in a single phrase.)
  982.  
  983. One reason that Lisp and her offspring have fared so well, and are so
  984. important for research is that implementations have two big advantages
  985. over other languages: (a) the programs themselves are just Lisp (or
  986. language X) data structures, and are thus manipulable in wonderful
  987. ways, and, as a consequence, (b) these implementations are usually
  988. completely self-contained and full environments (as the Sandewall
  989. article mentioned above points out).  This means that one can live
  990. totally in the world of the language, editing, compiling, running,
  991. debugging, all at the language level.  Further, since most of these
  992. systems are thus self-extensible, customization for personal tastes is
  993. quite common, and encouraged; contrast this to the usual situation of
  994. a language that is frozen forever (usually in its wrongness).
  995. 
  996. File: Languages, Node: Lisp Tutor, Up: Lisp, Previous: Lisp Culture,
  997.       Next: MacLisp
  998.  
  999. Lisp Tutor: Lisp teaching system
  1000.  
  1001.  > Comes from: IMSSS (Stanford Center for Mathematical Studies in the
  1002.    Social Sciences)
  1003.  > Invoke via: 'lsp:lspcai'.
  1004.  > System orientation: Tenex/Twenex
  1005.  > Description: Attempts to be a self-teaching system for Lisp, given
  1006. some programming background; does a fairly good, if straightforward,
  1007. job.  It tries to keep a history for each student, and has a fair
  1008. amount of features designed to help teachers track students' progress
  1009. (which we don't use, naturally, but at least it knows where you last
  1010. left off).  The system-specific parts refer to ILisp.
  1011.  
  1012. * Menu:
  1013.  
  1014. * LspCAI Reference: (LSP:LSPCAI.DOC)*
  1015.                 Very IMSSS-specific, but tells about the system.
  1016.                 (Somewhat garbled, meant for hardcopy output.)
  1017. 
  1018. File: Languages, Node: MacLisp, Up: Lisp, Next: RUCI Lisp,
  1019.       Previous: Lisp Tutor
  1020.  
  1021.  > Comes from: MIT, distributed by:
  1022. John L. White (JONL@MIT-MC)
  1023. MIT AI Lab
  1024. 545 Technology Square
  1025. Cambridge MA 02139
  1026.  > Invoke via: 'lisp', extension: .LSP, logical name: LSP:.
  1027.  > System orientation: TOPS-20.
  1028.  > Description: MacLisp features a compiler, file i/o, throws and
  1029. catches (with tags), arbitrary precision integer arithmetic (including
  1030. gcd function), arrays, macros, hunks, but lacks double precision
  1031. floating point arithmetic and complex numbers.
  1032. Well integrated with EMACS (LEDIT).  There are also TENEX and TOPS-10
  1033. versions, and it.  An extended version of MacLisp, Lisp Machine Lisp,
  1034. runs on the LISP machines at MIT.  In fact, the entire Lisp Machine
  1035. system is written in Lisp Machine Lisp.  A machine independent version
  1036. of Lisp (called NIL) is under development.
  1037.  > References:
  1038. 1. Winston & Horn, (title unknown), Addison-Wesley (forthcoming).
  1039.  
  1040. 2. Touretzky, "A Summary of MacLisp Functions and Flags",
  1041.     Carnegie-Mellon University (Aug 1979).
  1042.  
  1043. * Menu:                 Online documentation:
  1044.  
  1045. * Hints:                (DOC:LISP-HINTS.DOC)*
  1046.                           Helpful Hints - How to run functions.
  1047. * Manual:               (LSP:LISP.DOC)*
  1048.                           Detailed documentation (incomplete).
  1049. * Functions:            (LSP:QIOORD.DOC)*
  1050.                           Names of functions and features.
  1051. * News:                 (LSP:LISP.NEWS)*
  1052.                           Cryptic messages about newer features.
  1053. * Note:                 (LSP:THIS.NOTE)*
  1054.                           Introductory letter to the latest version
  1055. 
  1056. File: Languages, Node: RUCI Lisp, Up: Lisp, Next: Interlisp,
  1057.       Previous: MacLisp
  1058.  
  1059. Rutgers/UCI Lisp: Interpreter
  1060.  
  1061.  > Comes from: Rutgers (from UCI (from Stanford))
  1062.  > Invoke via: [not at Columbia any more],  Extension: .LSP
  1063.  > System orientation: -10 (see ILisp node for -20 version)
  1064.  > Description: see the Lisp Culture node (previous) for some flavor
  1065. of the language.  This is a later version of the original Stanford
  1066. Lisp 1.6, which was enhanced at U.C., Irvine, and even more enhanced
  1067. at Rutgers.  These improvements have left this version of Lisp with a
  1068. good deal of Interlisp flavor.  The advantages of this implementation
  1069. are its smallness, and consequent speed.  One unfortunate property of
  1070. using this Lisp is that you have to drag through three separate
  1071. manuals to get all the details, although the first manual (the
  1072. Stanford A.I. Labs Memo) contains nearly all you have to know to get
  1073. started.
  1074.  > Debugging: built in to the language
  1075.  > References: see node Lisp Culture (previous node)
  1076.  
  1077. * Menu:
  1078.  
  1079. * Basic Manual: (LSP:SAILSP.MAN)*
  1080.                 This contains the basic language information.
  1081. * UCI Version:  (LSP:UCILSP.MAN)*
  1082.                 Describes a few enhancements, and the new editor.
  1083. * Rutgers Version: (LSP:RUTLSP.MAN)*
  1084.                 The Rutgers enhanced Lisp.
  1085. 
  1086. File: Languages, Node: Interlisp, Up: Lisp, Previous: RUCI Lisp, Next: ILisp
  1087.  
  1088. Interlisp: Interpreter
  1089.  
  1090.  > Comes from: Bolt, Beranek and Newman (BBN) and XEROX Palo Alto
  1091. Research Center (PARC)
  1092.  > Invoke via: [not at Columbia], no real default extension
  1093.  > System orientation: -20 (really, Tenex, but it's close enough)
  1094.  > Description: See the Lisp Culture node for a flavor of the
  1095. language.  This implementation of Lisp is by far the biggest and (some
  1096. claim) the best around; it really has everything, including the
  1097. kitchen sink.  Unfortunately, we have to recommend against using it,
  1098. as it's just too large for our poor system.  Its manual is
  1099. phenomenally good (and large).  Interlisp now has working
  1100. implementations on IBM 360/370 systems, Burroughs B6700's, and CDC
  1101. 3300's (I'm not sure about this last one); the reason it's called
  1102. Interlisp is that it was designed to be portable to various machines.
  1103.  > Debugging: an integral part of the implementation
  1104.  > References:
  1105.   See the Lisp Culture Node, two Previous nodes.
  1106.  
  1107.   "Interlisp Reference Manual", Warren Teitelman, XEROX Palo Alto
  1108. Research Center, October 1974.  (Cost: about $30 from XEROX PARC)
  1109.  
  1110. There is no on-line documentation.
  1111. 
  1112. File: Languages, Node: ILisp, Up: Lisp, Previous: Interlisp
  1113.  
  1114. ILisp: interpreter
  1115.  
  1116.  > Comes from: Rutgers (from IMSSS (from UCI (from Stanford A.I. Labs)))
  1117.  > Invoke via: [not at Columbia], extension: .LSP, logical name: LSP:.
  1118.  > System orientation: -20 (really, Tenex)
  1119.  > Description:  See the Lisp Culture node for language flavor.  ILisp
  1120. is a version of UCI Lisp (which is a version of Stanford Lisp 1.6),
  1121. adapted for the Tenex (and thus, nearly fully, the TOPS-20)
  1122. environment by the Stanford IMSSS (Institute for Mathematical Studies
  1123. in the Social Sciences) group.  ILisp lacks the additional features of
  1124. Rutgers/UCI Lisp (see RUCI Lisp node), and purportedly has a buggy
  1125. compiler, but we recommend its use over RUCI Lisp due to ILisp's
  1126. Tenex/Twenex orientation.  Unfortunately, like RUCI Lisp, there are
  1127. three manuals that you need for total system use, unless you already
  1128. know Lisp, in which case you can skip the basic Stanford 1.6 Lisp
  1129. manual (these manuals are listed below).
  1130.  > Debugging: built in to the system
  1131.  
  1132. * Menu:
  1133.  
  1134. * Basic Manual: (LSP:SAILSP.MAN)*
  1135.                 This is the Stanford 1.6 Lisp manual, which contains
  1136.                 basic language information.
  1137. * UCI Version:  (LSP:UCILSP.MAN)*
  1138.                 The UCI version of Stanford 1.6 Lisp.
  1139. * ILisp:        (LSP:TNXLSP.DOC)*
  1140.                 Describes the new features of ILisp vs. UCI Lisp.
  1141. 
  1142. File: Languages, Node: Bliss, Up: Top, Previous: Lisp, Next: PPL
  1143.  
  1144. Bliss: compiler
  1145.  
  1146. A recursive, block-structured, expression-oriented language which DEC
  1147. uses for writing its compilers (Basic+2 and Fortran, for instance).
  1148. There are no data types in Bliss, only words, and there is no built-in
  1149. i/o or monitor interface, but packages exist for these things as well
  1150. as for string manipulation, etc.  Versions for the -10 and the -11
  1151. exist, but they all run on the -10 (or the -20, of course), and
  1152. produce code for the appropriate machine.  Currently the versions for
  1153. the -10 and the -11 are Bliss-10 and Bliss-11, respectively, but there
  1154. is now a Common Bliss language, from which offshoot the various Bliss
  1155. compilers for the -10/-20, -11 and VAX (Bliss-36, Bliss-16, and
  1156. Bliss-32).  The newer compiler has just been announced commercially.
  1157.  
  1158. * Menu:         The following versions of Bliss are available:
  1159.  
  1160. * Bliss-10::
  1161. * Bliss-11::
  1162. * Common Bliss::
  1163. 
  1164. File: Languages, Node: Bliss-10, Up: Bliss, Next: Bliss-11
  1165.  
  1166. Bliss-10 (Bliss for the -10): Compiler
  1167.  
  1168.  > Comes from: CMU via DEC
  1169.  > Invoke via: 'blis10'.  Extension: .BLI or .B10
  1170.  > System orientation: -10.
  1171.  > Description: Generates code for -10's and -20's.
  1172.  > Debugging: Six12 in conjunction with DDT
  1173.  > References:
  1174. 1. Bliss-10 Programmer's Reference Manual, DEC-10-LBRMA-A-D (1974)
  1175. 2. Wulf, "Bliss: A Language for Systems Programming", CACM (Dec 1971)
  1176.  
  1177. * Menu:         Online information:
  1178.  
  1179. * Help:         (HLP:BLISS.HLP)*
  1180. * Six12 Manual: (BLI:SIX12.MAN)*
  1181. 
  1182. File: Languages, Node: Bliss-11, Up: Bliss, Next: Common Bliss,
  1183.  Previous: Bliss-10
  1184.  
  1185. Bliss-11: Compiler
  1186.  
  1187.  > Comes from: Carnegie-Mellon University
  1188.  > Invoke via: 'blis11'
  1189.  > System orientation: -10
  1190.  > Description:  Generates Macro-11 code for the PDP-11, which in turn
  1191. can be assembled on the -20 by MACN11 or MACY11 and linked on the -20
  1192. using Link11.  See the language utilities node for more information
  1193. about MACx11, Link11, and a package of RSX macros (*Note Utilities: Utilities.)
  1194.  > Debugging: Six12 (but for the -11) in conjunction with ODT on the -11.
  1195.  > References:
  1196. 1. "Bliss-11 Programmer's Manual" (1974) available from CMU or DECUS.
  1197. 
  1198. File: Languages, Node: Common Bliss, Up: Bliss, Previous: Bliss-11,
  1199.  
  1200. Common Bliss: Compiler
  1201.  
  1202.  > Comes from: DEC
  1203.  > Invoke via: 'bliss' [but not yet at Columbia], extension: .BLI
  1204.  > System orientation: -20
  1205.  > Description:
  1206.  DEC's corporate "system implementation language", intended mainly for
  1207. writing compilers, editors, and other programs that could conceivably
  1208. run on more than one of {PDP-10,DEC-20,VAX,PDP-11}.  Great care has
  1209. gone into designing the language to be both highly optimized and
  1210. transportable.  Common Bliss actually refers to the union of
  1211. {Bliss-16,Bliss-32,Bliss-36}, which are the specific compilers that
  1212. generate code for PDP-11's, VAXes, and PDP-10's/DEC-20's,
  1213. respectively.  Bliss-16, by the way, only runs on PDP-10's and
  1214. DEC-20's, and may never be available commercially.  It is highly
  1215. doubtful that any flavor of Bliss will ever be available on any
  1216. non-DEC machine.  Bliss-36 has just been proclaimed available to
  1217. customers by DEC (April 1980), but it's still not clear what the
  1218. pricing will be.
  1219.  > References:
  1220. 1. Bliss Language Guide, DEC AA-H275A-RK (1978).
  1221. 2. Bliss Pocket Guide, DEC AV-H289A-TE (1978).
  1222. 3. DEC also has some kind of Bliss Primer or Reader.
  1223.  
  1224.  
  1225. 
  1226. File: Languages, Node: PPL, Up: Top, Previous: Bliss, Next: ECL
  1227.  
  1228. PPL: interpreter
  1229.  
  1230.  > Comes from: Harvard via XEROX PARC
  1231.  > Invoke via: 'ppl', Extension: .PPL
  1232.  > System orientation: -20 (actually, Tenex), does its own irritating
  1233. TTY-style editing.
  1234.  > Description:
  1235.  A language developed at Harvard for research in extensible languages,
  1236. which turned into a pedagogic tool.  It was used to teach programming
  1237. systems to non-science majors, and was quite successful in this task.
  1238. Its flavor is APL-ish, if you know APL; if not, then it's an
  1239. interpretive, highly interactive language, with a great deal of power,
  1240. allowing you to define new data types and operators, as well as
  1241. performing in more mundane ways (e.g. like Basic).  PPL is now in use
  1242. at several universities, most of whom run it under UNIX, and is the
  1243. subject of at least two books on introductory programming (one of
  1244. which, quite good, is about to appear later this year; see reference
  1245. 2, below).
  1246.  > Debugging: an integral part of the system
  1247.  > References:
  1248.    1. "PPL User's Manual", by Ed Taft and Tim Standish, Technical Report
  1249. 15-67, Center for Research in Computing Technology, Harvard
  1250. University, August 1976.  Note that TOPS-20 PPL uses the "old editor"!
  1251.    2. "A First Course in The Art and Science of Computing", by Mark
  1252. Tuttle, Charles Prenner and Thomas Standish, to be published by
  1253. Addison-Wesley, 1978.
  1254.  
  1255. * Menu:         On-line documentation
  1256.  
  1257. * Help:         (HLP:PPL.HLP)*  A brief help file.
  1258.  
  1259. Note from RMS:
  1260.  
  1261. My first system programming experience was helping a little in
  1262. implementing PPL.  As far as I can see, any advantage it has over
  1263. other languages for pedagogy lie in its interactive
  1264. line-number-within-function editor, which somewhat resembles the APL
  1265. editor.  This is easier than using a standard printing terminal text
  1266. editor, and more so for students.  However, any display editor (such
  1267. as EMACS) ought to even things out for other languages.
  1268.  
  1269. Aside from that, PPL does have the advantage of not having strong
  1270. typing, so that the user is not burdened with data type declarations
  1271. for variables.  This makes less to worry about when writing a simple
  1272. program.  However, Lisp has the same advantage.
  1273. 
  1274. File: Lanaguages, Node: ECL, Up: Top, Previous: PPL, Next: C
  1275.  
  1276. ECL: complete programming system
  1277.  
  1278.  > Comes from: Harvard
  1279.  > Invoke via: 'ecl:ecl', Extension: .ECL (.BIN for compiled modules)
  1280.  > System orientation: -10, a little -20 (Tenex, actually)
  1281.  > Description (taken from the manual): "The ECL programming system
  1282. has been designed as a tool for general applications programming.  Its
  1283. emphasis is on providing a powerful linguistic medium and convenient
  1284. programming environment for the production of software spanning a
  1285. large range of applications areas.  In providing such an environment,
  1286. three goals were considered primary: (a) to allow problem-oriented
  1287. description of algorithms, data and control over a wide range of
  1288. applications areas; (b) to facilitate program construction and
  1289. debugging; and (c) to facilitate smooth progression between initial
  1290. program construction and the realization of a well-tuned final product.
  1291. ECL consists of a programming language, called EL1, and a system
  1292. built around this language to realize these goals.  The system allows
  1293. on-line interactive construction, testing, and running of programs.
  1294. It includes a language-oriented editor, an interpreter, and a fully
  1295. compatible compiler.  Utilities include a debugging package, a
  1296. source-level frequency profile package, and a source program
  1297. formatter..."
  1298.  > Debugging: an integral part of the system.
  1299.  > References:
  1300.    1. "ECL Programmer's Manual", TR 23-74, Center for Research in
  1301.        Computing Technology, Harvard University, December 1974.
  1302.    2. Wegbreit, "The ECL Programming System", Proc. AFIPS 1971
  1303.        FJCC, vol.39.
  1304.    3. Wegbreit, "The Treatment of Data Types in EL1", CACM (May 74).
  1305.    4. ("The Computer Journal" article by Wegbreit, about closure in
  1306.        ECL).
  1307.  
  1308. There is no on-line documentation.
  1309.  
  1310. Note from RMS:
  1311.  
  1312. I was connected with ECL for a while too.  If you imagine Lisp, with
  1313. user-defined record and array data types which can be defined at run
  1314. time, given an Algolish syntax, you get the idea.
  1315.  
  1316. ECL has the right basic idea for how to do data type definitions,
  1317. because data types are objects in their own right which can be created
  1318. and manipulated at run time.  So a program has a chance of working on
  1319. data types which did not exist when the program was written (because
  1320. they are part of another program which is also loaded).  This is
  1321. essential for writing debuggers, interpreters, etc. in the language
  1322. itself.  Unfortunately, ECL fails to make it completely possible to
  1323. omit type checking entirely when that is desired, and this must be
  1324. programmed around.  It would be easy to fix this.
  1325.  
  1326. The Algol-style front end is a bad idea to begin with.  If you can't
  1327. adapt to winning Lisp syntax, most Lisp systems come with simple
  1328. optional Algol-style syntax front ends which do the same thing that
  1329. ECL does, and they can be extended by the user.  ECL's syntax cannot
  1330. be.
  1331. 
  1332. File: Languages, Node: C, Up: Top, Previous: ECL, Next: BCPL
  1333.  
  1334. C: Compiler
  1335.  
  1336.  > Comes from: The C Language was invented at Bell Laboratories.
  1337. The Portable C compiler was written by Alan Snyder at M.I.T.
  1338. Portable C was implemented for the -20 by Norman Kincl and Chris
  1339. Ryland at Columbia University.  Contact Eliot B. Moss at MIT Lab for
  1340. Computer Science (545 Tech Square, Cambridge, MA 02139) for
  1341. information on obtaining MIT's version of C.
  1342.  > Invoke via: 'c:cc'. Extension: .C
  1343.  > System orientation: -20
  1344.  > Description:
  1345. "C is a general-purpose programming language which features economy of
  1346. expression, modern control flow and data structures, and a rich set of
  1347. operators.  C is not a 'very high level' language, nor a 'big' one,
  1348. and is not specialized to any particular area of application.  But its
  1349. absence of restrictions and its generality make it more convenient and
  1350. effective for many tasks than supposedly more powerful languages."(1)
  1351. C was designed to be machine-independent, but Columbia's version
  1352. includes a Jsys interface to allow it to take full advantage of the
  1353. TOPS-20 environment.  The C compiler currently generates a Macro-20
  1354. (q.v.)  source program that can be compiled in the normal way.  Work
  1355. on the runtime support is still in progress.
  1356.  > References:
  1357.  
  1358. 1. Kernighan & Ritchie, "The C Programming Language", Prentice-Hall (1978).
  1359.  
  1360. 2. Snyder, "A Portable Compiler for the Language C", M.I.T. Project MAC
  1361.     (May 1975).
  1362.  
  1363. * Menu:         Online information:
  1364.  
  1365. * Help:         (HLP:C.HLP)Top
  1366. 
  1367. File: Languages, Node: BCPL, Up: Top, Previous: C, Next: CPL
  1368.  
  1369. BCPL (BBN Combined Programming Language): compiler
  1370.  
  1371.  > Comes from: BBN (Bolt, Baranek, & Newman)
  1372.  > Invoke via: 'bcpl'. Extension: .BCP
  1373.  > System orientation: Tenex (and therefore almost entirely -20)
  1374.  > Description:  A simple recursive programming language designed for
  1375. compiler writing and system programming; readable, easy to learn, and
  1376. efficient. It is made self-consistent and easy to define accurately by
  1377. an underlying structure based on a simple idealized object machine.
  1378. The treatment of data types is unusual and allows the power and
  1379. convenience of a language with dynamically varying types and yet the
  1380. efficiency of Fortran.  BCPL is itself written in BCPL and has been
  1381. transferred successfully to other machines, including IBM 360's and
  1382. 370's,  the PDP-11, Univac 1100 series, Honeywell 6180, and many more.
  1383. Has the flavor of (and shares common ancestry with) C.  Includes a
  1384. Jsys interface; can be linked with external modules in BCPL or
  1385. assembler.
  1386.  > Debugging: BDDT interactive source-level debugger.
  1387.  > References:
  1388. 1. BCPL Manual, BBN (1974).
  1389. 2. Richards, "BCPL: A Tool for Compiler Writing and Structured
  1390.      Programming", AFIPS (1969 SJCC, v.34).
  1391.  
  1392. * Menu:         Online information:
  1393.  
  1394. * Help:         (HLP:BCPL.HLP)*
  1395. * Concordance:  (BCP:CONC.DOC)*
  1396.    Makes a concordance of a BCPL program.
  1397.  
  1398. No online language manual.
  1399. Various interesting items under logical name bcp:.
  1400. 
  1401. File: Languages, Node: CPL, Up: Top, Previous: BCPL, Next: PL/I
  1402.  
  1403. CPL (Conversational Programming Language): Interactive Interpreter
  1404.  
  1405.  > Comes from: DEC
  1406.  > Invoke via: 'cpl'. Extension: .CPL
  1407.  > System orientation: -10, partially 20-ized.
  1408.  > Description:
  1409.  
  1410. A subset of standard ANSI PL/I with some extensions.  Totally
  1411. interactive, with built-in syntax-checking editor, immediate-mode or
  1412. deferred execution of statements, etc., but with several deficiencies
  1413. which make it impractical as a "serious" language: there is no
  1414. matching compiler, hence no way to link CPL programs with external
  1415. modules or to run CPL programs efficiently;  there is no random-access
  1416. (or keyed or binary) i/o; PL/I structures are missing; the CPL editor
  1417. will not let you format your programs - all statements are
  1418. left-justified (but you can use EMACS's PL/I formatter after the
  1419. fact).  There are a few missing minor features, too: complex and
  1420. decimal datatypes, label and file variables, various ON-conditions,
  1421. etc., but even with its faults it's a good instructional language, and
  1422. a useful facility for PL/I program development.  CPL was written and
  1423. documented by a single person (John Xenakis) but DEC has no plans for
  1424. further work on it.
  1425.  > Debugging: built in (immediate mode statements, etc.)
  1426.  > Reference:
  1427. DECSYSTEM10/20 Conversation Programming Language User's Manual,
  1428.  DEC-10-LCPLA-A-D.
  1429.  
  1430. * Menu:         Online information:
  1431.  
  1432. * Help:         (HLP:CPL.HLP)*  A brief help file.
  1433. * Summary:      (DOC:CPL.DOC)*
  1434.    The summary of language elements, from the manual (ch. 32).
  1435. 
  1436. File: Languages, Node: PL/I, Up: Top, Previous: CPL, Next: Basic
  1437.  
  1438. Programming Language I - Compiler.
  1439.  
  1440.  > Comes from: DEC
  1441.  > Invoke via: [we don't have it]
  1442.  > System orientation: unknown
  1443.  > Description:
  1444. DEC is still keeping this under wraps, but they will announce a
  1445. fullblown PL/I sometime in the near future.  It is being done by the
  1446. same person that did CPL.
  1447. 
  1448. File: Languages, Node: Basic, Up: Top, Previous: PL/I, Next: APLSF
  1449.  
  1450. Basic (Beginner's All-Purpose Symbolic Instruction Code) was invented
  1451. at Dartmouth by John Kemeny to popularize interactive computing.  Its
  1452. major features are supposed to be simplicity and interactiveness; a
  1453. beginner can write a Basic program with just a manual and very little
  1454. prior knowledge.   However, Basic lacks certain essential language
  1455. features: scoping of variables, statement bracketing, and usually the
  1456. ability to load external procedures.  The PDP-11 RSTS system has a
  1457. better basic than you can get for the -20.
  1458.  
  1459. The Basic Language definition can be found in:
  1460. American National Standard, BSR X3.60, Programming Language Minimal
  1461. BASIC (draft standard) available from CBEMA.
  1462.  
  1463. Another draft standard for extended Basic is in preparation.
  1464.  
  1465. There are dozens of books about Basic, mostly introduction to computing
  1466. using Basic.  Among them:
  1467.  
  1468. 1. Bennett, "Scientific and Engineering Problem-Solving with the
  1469.     Computer", Prentice-Hall (1976).
  1470. 2. Gross [fill in]
  1471.  
  1472.  
  1473. * Menu:         There are two versions of Basic on the -20:
  1474.  
  1475. * Basic-20::    Simple but not interactive.
  1476. * Basic+2::     Not simple, not very interactive either.
  1477.  
  1478. (Basic+2)-(Basic-20)=22?
  1479.  
  1480. Basic is very popular for pedagogy and on microcomputers.  It's
  1481. peculiar that so many people believe that Basic is somehow simple or
  1482. good for beginners.
  1483.  
  1484. The reason for this is probably that Basic's line-number editor was
  1485. better than punched cards, for beginners.  The language which you
  1486. edit, however, is terrible.  Even Fortran is better, on the whole.
  1487. 
  1488. File: Languages, Node: Basic-20, Up: Basic, Next: Basic+2
  1489.  
  1490. Basic-20: Non-interactive interpreter.
  1491.  
  1492.  > Comes from: DEC via Stanford LOTS (Low Overhead Timesharing System).
  1493.  > Invoke via: [fill this in when we decide what to do with it...]
  1494.  > System orientation: -20.  Extension: .BAS
  1495.  > Description:
  1496. This is just a TOPS-20ized version of DEC's Basic-10.  LOTS found
  1497. that they had to replace Basic+2 with this much more modest version
  1498. of Basic just so their system wouldn't grind to a halt.  The major
  1499. drawback of Basic-20 is that there are no immediate-mode statements,
  1500. and therefore no convenient way to debug programs.  More about
  1501. Basic-20 if we ever install it.
  1502.  > References:
  1503. 1. BASIC User's Guide, DEC-20-LBMAA-A-D
  1504.  
  1505. * Menu:         Online information:
  1506.  
  1507. [to be filled in...]
  1508. 
  1509. File: Languages, Node: Basic+2, Up: Basic, Previous: Basic-20
  1510.  
  1511. Basic-Plus-2: Semi-interactive interpreter and compiler
  1512.  
  1513.  > Comes from: DEC
  1514.  > Invoke via: 'basic'.  Extension: .B20
  1515.  > System orientation: -20
  1516.  > Description:  This monstrosity is the product of DEC's attempt to
  1517. capitalize on the micro-computer-spawned Basic frenzy, and suffers
  1518. mainly from trying to incorporate every feature that's ever been put
  1519. into every version of Basic that ever existed, and then adding a lot
  1520. more besides.  The result is one of the worst core hogs on our system,
  1521. and a language that's unwieldy, cumbersome, inconsistent, and full of
  1522. bugs.  Furthermore, it lacks a feature that all Basics should have:
  1523. the ability to interrupt your program during execution, issue
  1524. immediate-mode statements and/or modify your program, and resume
  1525. execution - the primary debugging feature of Basic.  It also lacks an
  1526. adequate resequencer - there is no way to change the order of
  1527. statements.  Furthermore, although a compiler (and a linker!) are
  1528. built into the Basic system, there is no way to link a program with
  1529. external modules in Basic or any other language.  Those who need a
  1530. simple, totally interactive language on the DEC-20 should consider
  1531. something other than Basic, perhaps PPL.  Those who are attracted to
  1532. Basic-Plus-2 for its "power" should consider using some other
  1533. language, such as Snobol (for string manipulation), Sail (for almost
  1534. anything if you are willing to put up with its idiosyncracies);
  1535. Lisp for a clean, powerful and extensible system programming language
  1536. which can implement extensible programs, Pascal, Algol, or C for
  1537. clear, structured implementation of algorithms which do not need to be
  1538. extensible , APLSF for matrix manipulation (and much more), even
  1539. Fortran for scientific or statistical applications (because it's
  1540. well-defined, widely known, and quite efficient in production
  1541. environments).
  1542.  > References:
  1543.  
  1544. 1. Basic-Plus-2 Language Manual, DEC AA-0153A-TK (1977).
  1545.     This manual is for PDP-11's and DEC-20's.  It describes
  1546.     DEC's corporate standard Basic-Plus-2.
  1547. 2. Basic-Plus-2 User's Guide, DEC AA-0152A-TM (1978).
  1548.     TOPS-20 system-dependent aspects of Basic+2.
  1549. 2. TOPS-20 BASIC-PLUS-2 Language Manual, AA-H654A-TM (1979).
  1550.     This one actually supersedes the other two; in version 2 of B+2,
  1551.     DEC dropped the "corporate standard" machine-independent business,
  1552.     tacitly acknowledging the failure of the project.
  1553.  
  1554. * Menu:         Online information:
  1555.  
  1556. * Help:         (HLP:BASIC.HLP)*
  1557. * Conversion:   (BAS:CONVRT.MEM)*
  1558.    How to convert a RSTS Basic-Plus program to Basic-Plus-2/20.
  1559.  
  1560. In addition, there's usually some news in a file called
  1561. BAS:BASxxx.DOC, where xxx is the latest version number.
  1562. 
  1563. File: Languages, Node: APLSF, Up: Top, Previous: Basic, Next: Snobol
  1564.  
  1565. APLSF (A Programming Language (with Shared Files)): interactive interpreter
  1566.  
  1567.  > Comes from: CMU via DEC
  1568.  > Invoke via: 'aplsf'.  Extension: .APL
  1569.  > System orientation: -10
  1570.  > Description:
  1571.  A world in itself.  A powerful, concise, interactive programming
  1572. system that, alas, prefers to be used on terminals with special
  1573. character sets.  Especially noted for its vector and matrix
  1574. manipulation capabilities.  Invented by K.E. Iverson at IBM, written
  1575. for the -10 at CMU (where the 'shared file' capability was added -
  1576. this just means that APLSF can read/write files that are accessible to
  1577. other processors), and adopted, marketed, and supported by DEC.
  1578. Extensive proprietary libraries are available.
  1579. See LIB1:NEWS for more information (i.e. type ')LOAD LIB1:NEWS',
  1580. and then type 'DESCRIBE').
  1581.  > References:
  1582. 1. APLSF Programmer's Reference Manual, DEC-20-LASFA-A-D (1977).
  1583. 2. Iverson, "A Programming Language", Wiley (1962).
  1584. 3. Polivka et al., "APL: the Language and Its Usage", Prentice-Hall (1975).
  1585. 4. APL Quote-Quad, ACM STAPL/SIGPLAN (a periodical).
  1586.  
  1587. * Menu:         Online information:
  1588.  
  1589. * Help:         (HLP:APLSF.HLP)*
  1590. * TTY:          (HLP:APL-TTY.HLP)*
  1591.    How to use APL on a TTY (i.e. a non-APL terminal)
  1592. * Commands:     (DOC:APLSF.DOC)*
  1593.    A list of APLSF system commands
  1594.  
  1595. In addition, voluminous documentation is built in to the APLSF system
  1596. itself.
  1597. 
  1598. File: Languages, Node: Snobol, Up: Top, Previous: APLSF, Next: Cobol
  1599.  
  1600. Snobol (StriNg-Oriented symBOlic Language): Non-interactive interpreter
  1601.  
  1602.  > Comes from: Stevens Institute of Technology (Sitbol)
  1603.  > Invoke via: 'snobol' or load-class command.  Extension: .SNO
  1604.  > System orientation: -10
  1605.  > Description:
  1606.  A truly magic language for string manipulation invented by Griswold,
  1607. Poage, and Polonsky at Bell Laboratories, and written for the -10 at
  1608. Stevens.  Includes powerful pattern-matching facilities, dynamic
  1609. creation of variables (and even code!), and many features to be found
  1610. nowhere else.  Suffers from the lack of any control mechanism other
  1611. than goto and function invocation.  Superhuman discipline is required
  1612. to write readable code.  If you actually want to create code at run
  1613. time, it's simpler in Lisp.
  1614.  
  1615. There are other implementations of SNOBOL for the -20, including FASBOL
  1616. (which is compiled and is alleged to be very fast).
  1617.  
  1618.  > SNODDT interactive source-level debugger.
  1619.  > References:
  1620. 1. Griswold et al., "The Snobol4 Programming Language", 2nd ed.,
  1621.     Prentice-Hall (1971).  The standard language manual.
  1622. 2. Gimpel, "Sitbol Version 4B", Stevens Inst. Tech. S4D30B (1976).
  1623.     Describes Sitbol, our version of Snobol.
  1624. 3. Griswold & Griswold, "A Snobol4 Primer", Prentice-Hall (1974).
  1625.     An introduction to Snobol at a relatively simple level.
  1626. 4. Gimpel, "Algorithms in Snobol4", Wiley (1976).
  1627.     A collection of Snobol programs and algorithms, with some
  1628.     attention to programming style.  Includes a large bibliography.
  1629. 5. Griswold, "SNOBOL4 -- Structure and Implementation", Bell Labs,
  1630.     presented at SHARE XXXVII, NYC (Aug 1971).
  1631. 6. Griswold & Hanson, "An Alternative to the Use of Patterns in String
  1632.     Processing", ACM TOPLAS v2 (April 1980).
  1633.  
  1634. * Menu:         Online information:
  1635.  
  1636. * Help:                 (HLP:SNOBOL.HLP)*
  1637. * Manual:               (DOC:SNOBOL5.MANUAL)*
  1638. * Debugger:             (HLP:SNODDT.HLP)*
  1639. * Version 5:            (DOC:SNO5.DOC)*
  1640. 
  1641. File: Languages, Node: Cobol, Up: Top, Next: PCL, Previous: Snobol
  1642.  
  1643. COmmon Business Oriented Language.  Probably 90% of all computer
  1644. programs are written in this language.  As the name implies, those
  1645. programs are the ones used in business - accounts payable, general
  1646. ledger, etc (whatever all that is!).  The language was designed to
  1647. read like English, so that the boss could look over the "coder's"
  1648. shoulder.  Cobol has no place in an academic environment, and is not
  1649. available on Columbia's DEC-20.  If you want to use Cobol, you'll have
  1650. to elsewhere; if you want to learn Cobol, go to a trade school.
  1651. 
  1652. File: Languages, Node: PCL, Up: Top, Previous: Cobol
  1653.  
  1654. PCL - Programmable Command Language for TOPS-20 (compiler).
  1655.  
  1656.  > Comes from: Carnegie-Mellon University Computation Center
  1657.    Distributor:
  1658.      J. Ray Scott
  1659.      CMU Computation Center
  1660.      Schenley Park
  1661.      Pittsburgh PA 15213
  1662.  > Invoke via: <Jsol>Exec
  1663.  > System orientation: -20
  1664.  > Description:
  1665.  PCL is a compiled language for writing custom TOPS-20 Exec commands.
  1666. It is block structured, has various data types and all the normal
  1667. control structures, and when completed (it is in the early stages of
  1668. development at the time of this writing), it will give to TOPS-20
  1669. users the long awaited ability to write programs of Exec commands
  1670. (comparable in power to CMS Execs, TOPS-10 MIC, Wylbur Execfiles,
  1671. etc).  Procedures that you write in PCL become part of your Exec.
  1672. PCL is expected to be supported by DEC in release 5 of TOPS-20.
  1673.  
  1674. There is a library of local PCL hacks in <Uc.Common.PCL>.  Enjoy!
  1675.  
  1676. 
  1677. File: Languages, Node: Utilities, Up: Top
  1678.  
  1679. Language Utilities.  These include debuggers, linking loaders,
  1680. cross-referencers, cross assemblers and linkers, symbol-table dumpers,
  1681. etc, that don't apply to any particular language on the -20.
  1682.  
  1683. * Menu:
  1684.  
  1685. * DDT::                 Dynamic Debugging Tool
  1686. * Linkers::             Linking loaders.
  1687. * ATSIGN: (ATSIGN).     The ATSIGN program makes cross-reference
  1688.                         listings from source files.
  1689. * SRCCOM: (SRCCOM).     SRCCOM is a fast program for comparing
  1690.                         and merging source files.
  1691. * CREF::                Produces cross-reference listings.
  1692. * Misc::                Miscellaneous utilities.
  1693. * PDP-11::              Utilities for the PDP-11.
  1694. 
  1695. File: Languages, Node: Linkers, Up: Utilities, Next: CREF
  1696.  
  1697. Linking loaders are programs that produce from a .REL file (the
  1698. relocatable binary output from a compiler) an executable program in
  1699. memory by resolving external references, calling in external modules
  1700. and combining them with your program and fixing up references among
  1701. the modules.  The final result is left in memory, ready to run.  If
  1702. you want a copy to be saved on disk, you must save it yourself using
  1703. the 'save' or 'csave' command of the Exec.  Executable programs are
  1704. kept on the disk with the extension .EXE.
  1705.  
  1706. * Menu:         There are 2 loaders available:
  1707.  
  1708. * Link::        This is the standard DEC-20 product.
  1709. * Loader::      This is the old DEC-10 loader, which is much
  1710.                  smaller and faster, and sometimes suffices.
  1711. 
  1712. File: Languages, Node: DDT, Up: Utilities, Next: Misc
  1713.  
  1714. DDT is actually a family of programs that do interactive source-level
  1715. debugging of executable programs, most suitably those originally
  1716. written in assembly language.  DDT is word-oriented; it displays the
  1717. contents of each word as a KL-10 instruction, with the various fields
  1718. filled in from the program's symbol table (which is usually loaded
  1719. with the program).  The display format can be changed for data words
  1720. to octal, decimal, ascii, sixbit, etc.  Breakpoints can be inserted and
  1721. deleted, programs can be single-stepped, arbitrary locations can be
  1722. examined and/or modified, searches can be performed, patches can be
  1723. inserted, etc.
  1724.  
  1725. Many high-level languages have their own DDT's (ALGDDT, FORDDT, etc)
  1726. which are described elsewhere, but DDT itself is the tool of last
  1727. resort, and can be used to debug any executable program, providing you
  1728. can understand its internal representation.
  1729.  
  1730. DDT is available through the 'DDT', 'SDDT', and 'Debug' Exec commands.
  1731. The appropriate version of DDT is loaded 'above' your program (but in
  1732. the same fork), at address 764000.  If you're programming in assembly
  1733. language, you must remember to leave room for DDT at 764000-777777.
  1734.  
  1735. There is no single definitive source for information about DDT, but a
  1736. DDT manual is forthcoming from DEC.  In the meantime, there is a brief
  1737. description in the DECSYSTEM-20 User's Guide (versions 3A and
  1738. earlier), and a more thorough (but dated) description in the
  1739. DECsystem-10 Utilities Manual.
  1740.  
  1741. There are various versions of DDT that are appropriate under different
  1742. circumstances:
  1743.  
  1744. UDDT (the default) works as described above.
  1745.  
  1746. SDDT is like UDDT, except it knows all the MONSYM symbols, and can be
  1747.  used "standalone", e.g. to write a program on the fly to try out some
  1748.  JSYS feature.
  1749.  
  1750. IDDT (invisible DDT) is like UDDT, except it sits in its own fork and
  1751.  therefore cannot interfere with your program inadvertently.  It
  1752.  must be requested explicitly.  IDDT is also handy for debugging
  1753.  programs that run in multiple forks, or that use UDDT's addresses.
  1754.  
  1755. FILDDT (file DDT) works like DDT, but on arbitrary files which could
  1756.  be dumps, binary data files, etc.
  1757.  
  1758. * Menu:         For further information, see
  1759.  
  1760. * Help:         (HLP:DDT.HLP)top
  1761.    which contains pointers to further information.
  1762. 
  1763. File: Languages, Node: Link, Up: Linkers, Next: Loader
  1764.  
  1765. LINK
  1766.  
  1767. This is the standard DEC-20 linking loader.  It is a huge program,
  1768. mostly -10 oriented (in its present state, it only understands TOPS-10
  1769. filenames).  It has far more power than most people will ever need,
  1770. but all programs compiled on the DEC-20 can be linked with it (except
  1771. for those languages that do their own linking, like Basic-Plus-2,
  1772. Mainsail, or those that are strictly interpretive and need no linking,
  1773. like APL).
  1774.  
  1775. References:
  1776. 1. DECSYSTEM-20 LINK Reference Manual, AA-4183B-TM.
  1777.  
  1778. * Menu:
  1779.  
  1780. * Help:         (HLP:LINK.HLP)
  1781. 
  1782. File: Languages, Node: Loader, Up: Linkers, Previous: Link
  1783.  
  1784. LOADER.  This is the old TOPS-10 linking loader; it has been replaced
  1785. even on DECsystem-10's by LINK.  However, it still works under some
  1786. circumstances and it's a lot smaller and more efficient than LINK and
  1787. should be used whenever possible, e.g. with Sail.  The command string
  1788. is in the following format:
  1789.  
  1790. odev:filnam.ext<idev:filnam.ext,idev:filnam.ext,...ESC
  1791.  
  1792. Switches may also be included.  Each time CR is typed, loading is
  1793. performed for all files listed on that line.  When loading is
  1794. completed for that line, LOADER prints an asterisk requesting
  1795. additional instructions.  When ESC, the /G switch, or ^Z is typed, all
  1796. remaining loading operations, library searches, and output operations
  1797. are completed, and the program terminates.  Some useful switches:
  1798.  
  1799. /D Load DDT.
  1800. /T Load with DDT, and start DDT when done.
  1801. /E begin execution after loading.
  1802. /G Exit after loading.
  1803. /S Load with local symbols.
  1804. /W Load without local symbols (default).
  1805.  
  1806. References:
  1807. 1. DECsystem-10 Assembly Language Handbook, 2nd Ed., DEC-10-NRZB-D.
  1808. 
  1809. File: Languages, Node: CREF, Up: Utilities, Previous: Linkers, Next: Misc
  1810.  
  1811. CREF produces cross-reference listings from special (.CRF) files that
  1812. are generated by compilers when cross-referencing is requested.  CREF
  1813. is invoked by typing 'Cref' to the Exec; you must first have used a
  1814. load-class command with the /CREF switch.  If you have used a compiler
  1815. that is not supported by load-class commands, you must have requested
  1816. cross-referencing first; then you type 'r cref' to the Exec (to
  1817. request the Cref program; 'cref' is an Exec command) and then supply a
  1818. standard TOPS-10 command string.  Not all languages produce Cref
  1819. input; some have their own cross-referencing facililty.  See the
  1820. appropriate language manual for details.
  1821. 
  1822. File: Languages, Node: Misc, Up: Utilities, Previous: CREF, Next: PDP-11
  1823.  
  1824. Miscellaneous language utilities.
  1825.  
  1826. * Menu:
  1827.  
  1828. * Glob::        Produces listings of global symbols.
  1829. * Grump::       Produces symbolic dumps of .REL files.
  1830. * Maklib::      Produces load-module libraries fro .REL files.
  1831. 
  1832. File: Languages, Node: Glob, Up: Misc, Next: Grump
  1833.  
  1834. The GLOB program reads multiple binary program files and produces
  1835. an alphabetical cross-referenced list of all the global symbols
  1836. (symbols accessible to other programs) encountered.  This program also
  1837. searches files in library search mode, checking for globals, if the
  1838. program file was loaded in library search mode.
  1839.  
  1840. GLOB is strictly a TOPS-10 program.
  1841.  
  1842. Command format (in response to "*" prompt):
  1843.  
  1844. odev:file.ext[p,p]=indev:file.ext[p,p],...,indev:file.ext[p,p]
  1845.  
  1846. where [p,p] is a TOPS-10 project-programmer number, and the command
  1847. string is terminated by ESC.  If the output device is omitted, DSK is
  1848. assumed.  If the entire output filespec is omitted, TTY is used.  If
  1849. any PPN's are omitted, DSK is used.
  1850.  
  1851. Switches:
  1852.  
  1853. /A      Output all global symbols.
  1854. /E      List only multiply defined globals.
  1855. /F      List nonrelocatable symbols only.
  1856. /H      Help.
  1857. /L      Library search mode.
  1858. /M      Turn off library search mode.
  1859. /N      List only symbols that are never referenced.
  1860. /P      List all routines that define a symbol to have the same value.
  1861. /Q      Suppress listing of subsequent definers resulting from /P.
  1862. /R      List only relocatables.
  1863. /S      List symbols with non-conflicting values that are multiply defined.
  1864. /X      Don't print listing header.
  1865.  
  1866. Symbols are flagged in the listing as follows:
  1867.  
  1868. M       Multiply defined.
  1869. N       Never referred to (i.e. never declared external).
  1870. S       Multiply specified with no conflict.
  1871. U       Undefined.
  1872. 
  1873. File: Languages, Node: Grump, Up: Misc, Previous: Glob, Next: Maklib
  1874.  
  1875. Prints an alphabetic dump of (symbol, octal value) the symbol table of
  1876. a .REL file.  Various options are available (there is a built-in help
  1877. message).  Useful for producing symbol definition files for languages
  1878. that have this feature (e.g. Sail).  Seems to be TOPS-10 oriented.
  1879. 
  1880. File: Languages, Node: Maklib, Up: Misc, Previous: Grump
  1881.  
  1882. Manipulates relocatable binary files (.REL files), which are single
  1883. programs or a collection of programs or routines (libraries).  The
  1884. relocatable binary file is the machine-readable output from a source
  1885. language translator such as the Fortran compiler or the Macro
  1886. assembler.  Allows examination of individual modules and libraries and
  1887. modification of modules, deletion of unnecessary symbols, and adding
  1888. an index that can be used by link to speed up library searches.
  1889. Typically used for building a library from a set of separately
  1890. compiled routines.  Strictly a TOPS-10 program.
  1891.  
  1892. Manual:  MAKLIB Program Functional Specification, DEC-20-UMKLA-A-D.
  1893.  More recently, there's a MAKLIB chapter in the TOPS-20 Utilities
  1894.  Manual, AA-D850A-TM.
  1895.  
  1896. * Menu:         See also,
  1897.  
  1898. * Help:         (HLP:MAKLIB.HLP)*       commands, switches, etc.
  1899. * Sail:         (SAI:HOW-TO-MAKE-A-LIBRARY.HLP)*
  1900. 
  1901. File: Languages, Node: PDP-11, Up: Utilities, Previous: Symbols
  1902.  
  1903. Here we should mention MAC{X,Y}-11, LINKX11 or whatever it's called,
  1904. Bliss-11 (and -16), etc.
  1905.  
  1906. Another cross-assembler PALX-11 is available from MIT.
  1907.  
  1908.