BASIX -An Interpreter Written in TEX

Total Page:16

File Type:pdf, Size:1020Kb

BASIX -An Interpreter Written in TEX BASIX -An Interpreter Written in TEX Andrew Marc Greene MIT Project Athena, E40-342, 77 Massachusetts Avenue, Cambridge, MA 02139 617-253-7788. Internet: [email protected] Abstract An interpreter for the BASIC language is developed entirely in W. The interpreter presents techniques of scanning and parsing that are useful in many contexts where data not containing formatting directives are to be formatted by m. W'Sexpansion rules are exploited to provide a macro that reads in the rest of the input file as arguments and which never stops expanding. Introduction BASIX makes extensive use of these arrays. Commands are begun with C; functions with F; It is a basic tenet of the T@ faith that rn variables with V; program lines with /; and the is Turing-equivalent and that we can write any linked list of lines with L. This makes it easy for program in W.It is also widely held that the interpreter to look up the value of any of these is "the most idiosyncratic language known to us."' things, given the name as perceived by the user. This project is an attempt to provide a simple One benefit of \csname.. \endcsname is that programming front end to W. if the resultant command sequence is undefined. BASICwas selected because it is a widely used ~'FJ replaces it with \relax. This allows us to interpreted language. It also features an infix syntax check, using \ifx, whether the user has specified a not found in Lisp or POSTSCRIPT.This makes it a non-existent identifier. This trick is used in exercise more difficult but more general problem than either 7.7 in The mbook. We use it in BASIX to check of these others. for syntax errors and uninitialized variables. The speed of the BASIX interpreter is not impressive. It is not meant to be. The purpose Token streams. The BASX interpreter was de- of this interpreter is not to serve as the BASIC signed to be run interactively. It is called by typing implementation of choice. Its purpose is to display tex basix; the file ends waiting for the first line of useful paradigms of input parsing and advanced BASICto be entered at W's * prompt. This also W programming. allows other files to \input basix and immediately follow it with BASICcode. Interaction with We cannot have the scanner read an entire line at once, since if the last line of basix.tex Associative arrays. Using \csnane it is possible were a macro that reads a line as a parameter, to implement associative arrays in 7&X. Associative we'd get a "File ended while scanning use of arrays are arrays whose index is not necessarily a \getlinen error. Instead, we use a method which number. As an example, if \student has the name at first blush seems more convoluted but which is of a student, we might look up the student's grade actually simpler. with We note that TEX does not make any dis- tinction between the tokens that make up our interpreter and the tokens that form the BASIC which would be \grade.Greene in my case. (In code. The BASIX interpreter is carefully constructed the case of \csname, all characters up to the so that each macro ends by calling another macro \endcsname are used in the command sequence (which may read parameters). Thus, expansion is regardless of their category code.) never completed, but the interpreter can continue to absorb individual characters that follow it. These characters affect the direction of the expansion; it is Ward, Stephen A. and Robert H. Halstead, Jr., this behaviour that allows us to implement a BASIC Computation Structures, MIT Press, 1990 interpreter in W. TUGboat, Volume 11 (1990), No. 3-Proceedings of the 1990 Annual Meeting 381 Andrew Marc Greene Category codes. Normally, TEX distinguishes be- leaving this next token in the input stream. The tween sixteen categories of characters. To avoid word is returned in the macro \word. unwanted side effects, the BASIX interpreter reas- The peculiar way \scan operates gives rise to signs category codes of all non-letters to category new problems, however. We can't say 12, "other". One undocumented feature of TJ$ is that it will never let you strand yourself without because \scan looks at the tokens which follow an "active" character (which is normally the back- it, which in this case are \lineno=\word. We slash); if you try to reassign the category of your need some way to define the goto command so only active character (with, e.g., \catcode'\\=12), that the \scan is at the end of the macro; this it will fail silently. To allow us to use every typeable will take the next tokens from the input stream. character in BASIX, we first make \catcode31=0, We therefore have \scan "return" to its caller by which then allows us to reassign the catcode of the breaking the caller into two parts: the first part ends backslash without stranding ourselves. (Of course, with \scan and the second part contains the code the BASIX interpreter provides an escape back to which should follow. The second macro is stored TEX which restores the normal category codes.) in \afterscan, and \scan ends with \afterscan. We also change the category code of --M, the As syntactic sugar, \after has been defined as end-of-line character, to "active". This lets us \let\afterscan. This allows \Cgoto to be coded detect end-of-line errors that may crop up. as Semantics Words. A word is a collection of one or more (Actually, the goto code is slightly more compli- characters that meet requirements based on the cated than this; but the scanner is the important first character. The following table describes these point here.) This trick is used throughout the rules using regular expression n~tation.~These BASIX interpreter to read in the next tokens from rules are: the user's input without interrupting the expansion of the W macros that comprise the interpreter. First Regular Character Expression Meaning Expressions. An expression is a sequence of words [A-Z, a-zl [A-Z, a-z] [A-Z, a-z ,0-9]*$? Identifier that, roughly speaking, alternates between val- LO-91 CO-91+ Integer ues and operators. Values fall into one of three I8 V! [^Ill* [ll , -'MI String categories: literals, identifiers, and parenthesized Other Symbol expressions. An operator is one of less-than, more- An end-of-line at the end of a string literal is than, equality, addition, subtraction, multiplication, converted to a I' . division, or reference. (Reference is an implicit op- Everything in BASIX is one of these four types. erator that is inserted between a function identifier Line numbers are integer literals, and both variables and its parameters.) and commands are identifiers. Expressions are evaluated in an approach sim- The \scan macro is used in BASIX to read ilar to that used in the scanner. A word is the next word. It uses \futurelet to look at the scanned using \scan and its type is determined. next token and determine whether it should be part "Left-hand" values are stored for relatives, addi- of the current word; ie., whether it matches the tives, multiplicatives, and references. Using W's regular expression of the current type. If so, then it grouping operations the evaluator is reentrant, per- is read in and appended; otherwise \scan returns, mitting parenthesized expressions to be recursively evaluated. In order to achieve a functionality similar to that of \futurelet, we exit the evaluator by In this notation, [A-Z, a-zl means "any char- \expandafter\aftereval\word, where the macro acter falling between A and Z or between a and z, \aftereval is analogous to \afterscan. Since inclusive." An asterisk means "repeat the preceding \word will contain neither macros nor tokens whose specification as many times as needed, or never." A category codes need changing, this is as good as plus means "repeat the preceeding specification as \f uturelet. many times as needed, at least once." A question mark means "repeat the preceeding specification zero or one times." A dot means "any character." 382 TUGboat, Volume 11 (1990), No. 3-Proceedings of the 1990 Annual Meeting BASIX - An Interpreter Written in Structure of the Interpreter in a let statement must be =). \parseline has already been described. The file basix.tex, which appears as an appendix to this paper. defines all the macros that are Syntactic scanner. This is the section containing needed to run the interpreter. The last line of this \scan and its support macros, which are described file is \endeval, which is usually called when the above. interpreter has finished evaluating a line. In this Type tests. These routines take an argument and case, it calls \enduserline, which, in turn. calls determine whether it is an identifier, a string \parseline. variable, a string literal, an integer literal, a macro, The \parseline macro is part of the Program or a digit. The normal way of calling these routines Parser section of the interpreter. It starts by calling is \scan to get the first word of the next line. If \word is an integer literal. it is treated as a line number and the rest of the input line is stored in These predicates expand into either tt (true) or tf the appropriate variable without interpretation. If (false). Syntactic sugar is provided in the form of \word is not an integer literal, it is treated as a \itstrueand\itsfalse. \ifstring\worddoesn't command. work because of the way matches \if and \f i Each command is treated with an ad hoe tokens - only \if-style primitives are recognized.
Recommended publications
  • Introduction to Programming in Fortran 77 for Students of Science and Engineering
    Introduction to programming in Fortran 77 for students of Science and Engineering Roman GrÄoger University of Pennsylvania, Department of Materials Science and Engineering 3231 Walnut Street, O±ce #215, Philadelphia, PA 19104 Revision 1.2 (September 27, 2004) 1 Introduction Fortran (FORmula TRANslation) is a programming language designed speci¯cally for scientists and engineers. For the past 30 years Fortran has been used for such projects as the design of bridges and aeroplane structures, it is used for factory automation control, for storm drainage design, analysis of scienti¯c data and so on. Throughout the life of this language, groups of users have written libraries of useful standard Fortran programs. These programs can be borrowed and used by other people who wish to take advantage of the expertise and experience of the authors, in a similar way in which a book is borrowed from a library. Fortran belongs to a class of higher-level programming languages in which the programs are not written directly in the machine code but instead in an arti¯cal, human-readable language. This source code consists of algorithms built using a set of standard constructions, each consisting of a series of commands which de¯ne the elementary operations with your data. In other words, any algorithm is a cookbook which speci¯es input ingredients, operations with them and with other data and ¯nally returns one or more results, depending on the function of this algorithm. Any source code has to be compiled in order to obtain an executable code which can be run on your computer.
    [Show full text]
  • A Beginner's Guide to Freebasic
    A Beginner’s Guide to FreeBasic Richard D. Clark Ebben Feagan A Clark Productions / HMCsoft Book Copyright (c) Ebben Feagan and Richard Clark. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". The source code was compiled under version .17b of the FreeBasic compiler and tested under Windows 2000 Professional and Ubuntu Linux 6.06. Later compiler versions may require changes to the source code to compile successfully and results may differ under different operating systems. All source code is released under version 2 of the Gnu Public License (http://www.gnu.org/copyleft/gpl.html). The source code is provided AS IS, WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Microsoft Windows®, Visual Basic® and QuickBasic® are registered trademarks and are copyright © Microsoft Corporation. Ubuntu is a registered trademark of Canonical Limited. 2 To all the members of the FreeBasic community, especially the developers. 3 Acknowledgments Writing a book is difficult business, especially a book on programming. It is impossible to know how to do everything in a particular language, and everyone learns something from the programming community. I have learned a multitude of things from the FreeBasic community and I want to send my thanks to all of those who have taken the time to post answers and examples to questions.
    [Show full text]
  • BASIC CODE 2010 Edition by the League of Minnesota Cities Duke Addicks, Special Counsel Rachel Carlson, Staff Attorney
    THE MINNESOTA BASIC CODE 2010 Edition By The League of Minnesota Cities Duke Addicks, Special Counsel Rachel Carlson, Staff Attorney Published by American Legal Publishing Corporation 432 Walnut Street, 12th Floor Cincinnati, Ohio 45202 Tel: (800) 445-5588 Fax: (513) 763-3562 E-Mail: [email protected] Internet: http://www.amlegal.com PREFACE TO THE MINNESOTA BASIC CODE, 2010 EDITION The Minnesota Basic Code This League of Minnesota Cities/American Legal Publishing (LMC/ALP) Minnesota Basic Code (MBC) is an effort to provide a modern and comprehensive code of ordinances for smaller Minnesota cities without the expense of a customized code of ordinances. Its provisions are also useful to all Minnesota cities that wish to have models for the basic city ordinances on the subjects contained in the code. The code reflects current state statutes, case law and rules through January, 2010. The MBC will be supplemented periodically to reflect legislative enactments and new case law and rules. The supplements will consist of new pages which will replace or be in addition to the pages contained in this edition. In addition, the supplements will contain new model ordinances that will be included into the MBC unless the city decides not to incorporate them into their code. Authors and Editors This Minnesota Basic Code is partly based on the Model Ordinance Code for Minnesota Cities, Revised Edition 1980, prepared by Orville C. Peterson, former Executive Director of the League of Minnesota Cities, and the 1989 Model Ordinance Code prepared by Thomas L. Grundhoefer, then Staff Attorney and now General Counsel for the League.
    [Show full text]
  • AN125: Integrating Raisonance 8051 Tools Into The
    AN125 INTEGRATING RAISONANCE 8051 TOOLS INTO THE SILICON LABS IDE 1. Introduction 4. Configure the Tool Chain This application note describes how to integrate the Integration Dialog Raisonance 8051 Tools into the Silicon Laboratories Under the 'Project' menu, select 'Tool Chain Integration’ IDE (Integrated Development Environment). Integration to bring up the dialog box shown below. Raisonance provides an efficient development environment with (Ride 7) is the default. To use Raisonance (Ride 6), you compose, edit, build, download and debug operations can select it from the 'Preset Name' drop down box integrated in the same program. under 'Tools Definition Presets'. Next, define the Raisonance assembler, compiler, and linker as shown in 2. Key Points the following sections. The Intel OMF-51 absolute object file generated by the Raisonance 8051 tools enables source-level debug from the Silicon Labs IDE. Once Raisonance Tools are integrated into the IDE they are called by simply pressing the ‘Assemble/ Compile Current File’ button or the ‘Build/Make Project’ button. See the “..\Silabs\MCU\Examples” directory for examples that can be used with the Raisonance tools. Information in this application note applies to Version 4.00 and later of the Silicon Labs IDE and Ride7 and later of the Raisonance 8051 tools. 4.1. Assembler Definition 1. Under the ‘Assembler’ tab, if the assembler 3. Create a Project in the Silicon executable is not already defined, click the browse Labs IDE button next to the ‘Executable:’ text box, and locate the assembler executable. The default location for A project is necessary in order to link assembly files the Raisonance assembler is: created by the compiler and build an absolute ‘OMF-51’ C:\Program Files\Raisonance\Ride7\bin\ma51.exe output file.
    [Show full text]
  • 4 Using HLA with the HIDE Integrated Development Environment
    HLA Reference Manual 5/24/10 Chapter 4 4 Using HLA with the HIDE Integrated Development Environment This chapter describes two IDEs (Integrated Development Environments) for HLA: HIDE and RadASM. 4.1 The HLA Integrated Development Environment (HIDE) Sevag has written a nice HLA-specified integrated development environment for HLA called HIDE (HLA IDE). This one is a bit easier to install, set up, and use than RadASM (at the cost of being a little less flexible). HIDE is great for beginners who want to get up and running with a minimal amount of fuss. You can find HIDE at the HIDE home page: http://sites.google.com/site/highlevelassembly/downloads/hide Contact: [email protected] Note: the following documentation was provided by Sevag. Thanks Sevag! 4.1.1 Description HIDE is an integrated development environment for use with Randall Hyde's HLA (High Level Assembler). The HIDE package contains various 3rd party programs and tools to provide for a complete environment that requires no files external to the package. Designed for a system- friendly interface, HIDE makes no changes to your system registry and requires no global environment variables to function. The only exception is ResEd (a 3rd party Resource Editor written by Ketil.O) which saves its window position into the registry. 4.1.2 Operation HIDE is an integrated development environment for use with Randall Hyde's HLA (High Level Assembler). The HIDE package contains various 3rd party programs and tools to provide for a complete environment that requires no files external to the package. Designed for a system- friendly interface, HIDE makes no changes to your system registry and requires no global environment variables to function.
    [Show full text]
  • Lindoo2019 Miami Xojo Presentation
    Back to the Basics, in an Two Effort to Improve Student distinct retention in Intro to schools Programming Classes CS Dr. Ed Lindoo Associate Professor Computer Information Systems (CC&IS) 3 year average CS and CIS Drop/Fail rate • 3 year average • 50+ percent drop/fail rate in intro to programming class Two CIS classes taught by CS • Specifically CC&IS students were failing at a 62% rate! • Big problem! • If they fail this course, they don’t continue in the program • Represents a huge loss of revenue to the school • Intro to programming class taught by CS department • I was asked by our Dean to “Fix it” • Computer Science students and Information Systems students • Performed extensive research on why students fail. (business students) took the class together. • After sifting through all the research, I decided to go back to • Business students don’t have the strong technical skills to the basics, BASIC programing that is. jump into a Java or C++ course • I started thinking back to my days of BASIC and QBASIC • Certainly not as an intro class • Remember BASIC? • But that’s what was happening • Well that wasn’t going to cut it! • Further research found a common theme • Visual Programming Environments • Easier to understand languages. DON’T START WITH C++ • I thought long and hard about it • Re-wrote the entire course, Intro to Programming based on Xojo • Even though I had done a lot of work in VB.net, I felt like that was too heavy for this course • Ahh, but there’s a catch…………………isn’t there always? • Then I remembered back to my days of using Real Basic, so I • Must pass a Java course once they pass this class.
    [Show full text]
  • Programming Manual Version 2.0
    www.tinybasic.de programming manual version 2.0 TinyBasic Programming Manual Version 2.0 April 2008 altenburg © 2006-2008 by U. Altenburg CHAPTER 1 Introduction.....................................................8 EDITOR, COMPILER, DOWNLOAD, CONSOLE, SCOPE CHAPTER 2 Preprocessor……….........................................12 #TARGET, #INCLUDE, #DEFINE, #UNDEF, #IFDEF, #IFNDEF, #ELSE, #ENDIF CHAPTER 3 Variables and Types.......................................14 CHAR, BYTE, WORD, INTEGER, LONG, FLOAT, DATA, READ, RESTORE, LOAD, STORE, INC, DEC CHAPTER 4 Maths and Expressions..................................19 +, -, *, /, <, >, <=, >=, <>, <<, >>, (), [], NOT, AND, OR, XOR, MOD CHAPTER 5 Control Flow...................................................22 IF, THEN, ELSE, ELSIF, ENDIF, DO, LOOP, FOR, NEXT, WHILE, WEND, EXIT, ON, GOTO, GOSUB, RETURN, WAIT, PAUSE TinyBasic Programming www.tinybasic.de 5 CHAPTER 6 Functions.......................................................28 LO, HI, MIN, MAX, LEN, POS, VAL, PI, SIN, COS, TAN, ATN, DEG, RAD, SQR, EXP, LOG, POW, ABS, INT, ROUND, POINT, PEEK, EOF CHAPTER 7 Input and Output...........................................33 PUT, GET, PRINT, INPUT, OPEN, CLOSE, FLUSH, FIND, INITGSM, SENDSMS, RECVSMS, ERR, CR, NL, CHR, HEX, SPC, TAB, USING CHAPTER 8 Date and Time................................................40 SETCLOCK, DATE, TIME, HOUR, MINUTE, SECOND, DAY, MONTH, YEAR CHAPTER 9 Displays and Graphics...................................42 SETDISPLAY, SETSYMBOL, CLS, FONT, COLOR, PLOT, MOVE, DRAW, FRAME,
    [Show full text]
  • Microsoft Small Basic
    Microsoft Small Basic An introduction to Programming Chapter 1 An Introduction Small Basic and Programming Computer Programming is defined as the process of creating computer software using programming languages. Just like we speak and understand English or Spanish or French, computers can understand programs written in certain languages. These are called programming languages. In the beginning there were just a few programming languages and they were really easy to learn and comprehend. But as computers and software became more and more sophisticated, programming languages evolved fast, gathering more complex concepts along the way. As a result most modern programming languages and their concepts are pretty challenging to grasp by a beginner. This fact has started discouraging people from learning or attempting computer programming. Small Basic is a programming language that is designed to make programming extremely easy, approachable and fun for beginners. Small Basic’s intention is to bring down the barrier and serve as a stepping stone to the amazing world of computer programming. The Small Basic Environment Let us start with a quick introduction to the Small Basic Environment. When you first launch SmallBasic, you will see a window that looks like the following figure. Figure 1 - The Small Basic Environment This is the Small Basic Environment, where we’ll write and run our Small Basic programs. This environment has several distinct elements which are identified by numbers. The Editor, identified by [1] is where we will write our Small Basic programs. When you open a sample program or a previously saved program, it will show up on this editor.
    [Show full text]
  • TSO/E Programming Guide
    z/OS Version 2 Release 3 TSO/E Programming Guide IBM SA32-0981-30 Note Before using this information and the product it supports, read the information in “Notices” on page 137. This edition applies to Version 2 Release 3 of z/OS (5650-ZOS) and to all subsequent releases and modifications until otherwise indicated in new editions. Last updated: 2019-02-16 © Copyright International Business Machines Corporation 1988, 2017. US Government Users Restricted Rights – Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. Contents List of Figures....................................................................................................... ix List of Tables........................................................................................................ xi About this document...........................................................................................xiii Who should use this document.................................................................................................................xiii How this document is organized............................................................................................................... xiii How to use this document.........................................................................................................................xiii Where to find more information................................................................................................................ xiii How to send your comments to IBM......................................................................xv
    [Show full text]
  • Programmierung Unter GNU/Linux Für Einsteiger
    Programmierung unter GNU/Linux fur¨ Einsteiger Edgar 'Fast Edi' Hoffmann Community FreieSoftwareOG [email protected] 7. September 2016 Programmierung (von griechisch pr´ogramma Vorschrift\) bezeichnet die T¨atigkeit, " Computerprogramme zu erstellen. Dies umfasst vor Allem die Umsetzung (Implementierung) des Softwareentwurfs in Quellcode sowie { je nach Programmiersprache { das Ubersetzen¨ des Quellcodes in die Maschinensprache, meist unter Verwendung eines Compilers. Programmierung Begriffserkl¨arung 2 / 35 Dies umfasst vor Allem die Umsetzung (Implementierung) des Softwareentwurfs in Quellcode sowie { je nach Programmiersprache { das Ubersetzen¨ des Quellcodes in die Maschinensprache, meist unter Verwendung eines Compilers. Programmierung Begriffserkl¨arung Programmierung (von griechisch pr´ogramma Vorschrift\) bezeichnet die T¨atigkeit, " Computerprogramme zu erstellen. 2 / 35 Programmierung Begriffserkl¨arung Programmierung (von griechisch pr´ogramma Vorschrift\) bezeichnet die T¨atigkeit, " Computerprogramme zu erstellen. Dies umfasst vor Allem die Umsetzung (Implementierung) des Softwareentwurfs in Quellcode sowie { je nach Programmiersprache { das Ubersetzen¨ des Quellcodes in die Maschinensprache, meist unter Verwendung eines Compilers. 2 / 35 Programme werden unter Verwendung von Programmiersprachen formuliert ( kodiert\). " In eine solche Sprache ubersetzt\¨ der Programmierer die (z. B. im Pflichtenheft) " vorgegebenen Anforderungen und Algorithmen. Zunehmend wird er dabei durch Codegeneratoren unterstutzt,¨ die zumindest
    [Show full text]
  • The MSX Red Book (Revised Version 1997/08/06) Notes from The
    The MSX Red Book (revised version 1997/08/06) Notes from the editor: - The book was scanned and converted (via O.C.R.) by one person and edited by another (using an IBM PC compatible), independently. - All pages have a fix size of 64 lines. The width was not justified to make future modifications easier, though no line is longer than 80 columns. - This book only covers standard MSX. The BIOS entry points from 0000H to 01B5H should be used instead of the called entries described in the book, because other machines (MSX2, MSX2+, MSX turbo R and customized ones) have different positions for the routines. The use of internal BIOS routine addresses are responsible for many programs only running in MSX. - Some errors present in the original book were fixed, though it was tried to keep it as unaltered as possible. All page numbers match the originals, except undetected errors already present in the original. - Most figures were modificated due to the text-only nature of this file. The character set used during edition was the International IBM PC's one. The following special characters were used and should be changed to the corresponding ones of other character sets: Frame ÚÄÂÄ¿ Pound: œ characters: ³ ³ ³ Micro: æ ÃÄÅÄ´ ³ ³ ³ ÀÄÁÄÙ ------------------------------------------------------------------------------- CONTENTS Introduction .............................. 1 1. Programmable Peripheral Interface ...... 3 2. Video Display Processor ................ 8 3. Programmable Sound Generator ........... 21 4. ROM BIOS ............................... 26 5. ROM BASIC Interpreter .................. 89 6. Memory Map ............................. 208 7. Machine Code Programs .................. 240 Contents Copyright 1985 Avalon Software Iver Lane, Cowley, Middx, UB8 2JD MSX is a trademark of Microsoft Corp.
    [Show full text]
  • BASIC Session
    BASIC Session Chairman: Thomas Cheatham Speaker: Thomas E. Kurtz PAPER: BASIC Thomas E. Kurtz Darthmouth College 1. Background 1.1. Dartmouth College Dartmouth College is a small university dating from 1769, and dedicated "for the educa- tion and instruction of Youth of the Indian Tribes in this Land in reading, writing and all parts of learning . and also of English Youth and any others" (Wheelock, 1769). The undergraduate student body (now nearly 4000) outnumbers all graduate students by more than 5 to 1, and majors predominantly in the Social Sciences and the Humanities (over 75%). In 1940 a milestone event, not well remembered until recently (Loveday, 1977), took place at Dartmouth. Dr. George Stibitz of the Bell Telephone Laboratories demonstrated publicly for the first time, at the annual meeting of the American Mathematical Society, the remote use of a computer over a communications line. The computer was a relay cal- culator designed to carry out arithmetic on complex numbers. The terminal was a Model 26 Teletype. Another milestone event occurred in the summer of 1956 when John McCarthy orga- nized at Dartmouth a summer research project on "artificial intelligence" (the first known use of this phrase). The computer scientists attending decided a new language was needed; thus was born LISP. [See the paper by McCarthy, pp. 173-185 in this volume. Ed.] 1.2. Dartmouth Comes to Computing After several brief encounters, Dartmouth's liaison with computing became permanent and continuing in 1956 through the New England Regional Computer Center at MIT, HISTORY OF PROGRAMMING LANGUAGES 515 Copyright © 1981 by the Association for Computing Machinery, Inc.
    [Show full text]