Speakeasy(ID:660/spe002)

Interactive expression-oriented language with plugins 


Simple array-oriented language with numerical integration and differentiation, graphical output, aimed at statistical analysis.

Linkules were one of the first plugin systems.

Stan Cohen, Argonne Labs, 1971


Structures:
Related languages
Named Storage => Speakeasy   Incorporated some features of
Speakeasy => DELPHI-SPEAKEASY   Port of
Speakeasy => KAPPA-SPEAKEASY   Extension of
Speakeasy => Rakugo   Port of
Speakeasy => SIMUL   Influence
Speakeasy => Speakeasy 2   Evolution of
Speakeasy => Speakeasy Theta   Evolution of

References:
  • McVoy, K. W. "Regge Poles and Strong Absorption in Heavy-Ion and alpha-Nucleus Scattering" Phys. Rev. C 3, 1104?1117 (1971) Issue 3 ? March 1971 view details Extract: Invaluable nature of Speakeasy
    In this regard special thanks are due S. Cohen for making available the interacting console terminal of the Argonne National Laboratory 360/75 computer; this terminal, combined with Cohen's SPEAKEASY language, facilitated a data-fitting procedure which would otherwise have been extremely difficult if not impossible.
  • Speakeasy: A Computer Language for People view details
  • Cohen, S. "SPEAKEASY: 'RAKUGO'" view details
          in First USA-Japan Computer Conference Proceedings, Tokyo, 1972. view details
  • Cohen, S.; Kimmel, R. N.; Rich, K.; and F. J. D. Serduke, "SPEAKEASY-3: Linkules and Interfaces," Argonne Physics Division Information Report PHY-1972C. view details
          in First USA-Japan Computer Conference Proceedings, Tokyo, 1972. view details
  • Cohen, Stanley "An introduction to SPEAKEASY" Informal report - Argonne Physics Division PHY 1968E Argonne National Laboratory 1972 view details
          in First USA-Japan Computer Conference Proceedings, Tokyo, 1972. view details
  • Fink, J. K. "The SPEAKEASY HELP Documents," Argonne Physics Division Informal Report PHY-1972G (July 1972). view details
          in First USA-Japan Computer Conference Proceedings, Tokyo, 1972. view details
  • Sammet, Jean E., "Roster of Programming Languages 1972" 269 view details
          in Computers & Automation 21(6B), 30 Aug 1972 view details
  • Cohen, S. "SPEAKEASY" view details DOI Abstract: SPEAKEASY is a language with three basic design criteria: (1) it should be natural, easy to learn and easy to use; (2) it should be adaptable to a wide variety of devices; and (3) it should be able to evolve with ever increasing capabilities.
    Extract: Introduction
    SPEAKEASY as it exists today satisfies those specifications and is extremely powerful because of its large and growing vocabulary. The language processor provides a humanized and easily used interface to information and algorithmic techniques stored in a computer complex. It is, moreover, only one component in a generalized information management system. The overall system is highly modular in structure and is genuinely extensible, making use of attached libraries as its information base. Libraries of compiled algorithms, documents and tabular data are attached to the basic system, The information in these libraries is then easily available to users. Additions to the system are made by including new information in the libraries or by attaching additional libraries.
    An interpretive processor, working in conjunction with a dynamic storage allocation package, provides a user with an easily understandable scratch pad facility in which structured objects can be defined and addressed. Extensive use of dynamic linkage to precompiled routines stored in libraries of the system provides him with a large and expandable set of tools for carrying out calculations on these objects and for other types of operations, The operator-operand facilities thus provided are general and unrestricted. Limitations in the current system reflect only a specialization of the available components in the libraries. Additional capabilities can be added with ease and without modification to the basic system. The power of SPEAKEASY rests both in the ease of use of the system through the language processor and on the ease of extension to the facilities available to the processor.
    Growth in the capabilities of the processor and its demonstratable ease of use have been facilitated by the availability of TSO for IBM 360 and 370 computers. The SPEAKEASY system operates in a standard OS environment and is therefore easily adapted for use under TSO. No modifications are required either to the operating system or to SPEAKEASY. Operating under TSO, SPEAKEASY can be viewed as a super desk calculator. It has facilities for producing tabular output and easily readable results. It has built in algebraic rules for both array and true matrix algebra. It provides an extensive set of basic operations at the fingertips of users.
    Above all the operations of the system have been oriented toward the user and toward providing him with answers to his problems quickly and in readable form, A novice user is not aware of the structure of SPEAKEASY, and in fact, need not be aware of any of the details involved in running a computer program. Occurrences that force the user to think about a computer are viewed as failures in the implementation and have for the most part been eliminated.
    SPEAKEASY is not a new processor, it has been under development and in use for several years. Its rapid growth in usage in recent months reflects the availability of TSO and the power that a user-oriented system has when operating in a time-sharing environment. SPEAKEASY is currently operational in about 60 installations, mostly in TSO environments, but in many cases it is used for normal batch submission. A translation of the processor to a word-oriented machine (a FACOM-60 in Japan) has been completed and several other translations are currently being carried out.
    This presentation is intended to demonstrate some of the capabilities of the currently available processors and to indicate the ease of use and variety of facilities available. It is also intended to trigger the formation of a users group to oversee future developments. SPEAKEASY is an adaptable tool with built-in capabilities for extension. Growth in power of the processor rests in contributions to its libraries. The cleanness and power of the present system reflects its controlled development environment. A properly constituted users group can help in maintaining these features in a vastly expanded system.


          in SIGPLAN Notices 8(07) July 1973 view details
  • Cohen, S. "The SPEAKEASY-3 Reference Manual," Argonne National Laboratory Report ANL-8000 (May 1973). view details
          in SIGPLAN Notices 8(07) July 1973 view details
  • Condie, James M "Econometric models via SPEAKEASY/FEDEASY" 1973 view details
          in SIGPLAN Notices 8(07) July 1973 view details
  • Kriloff, Harvey Z "A high-level language for use with multi-computer networks" Proc. AFIPS 1973 National Computer Conf., AFIPS Press, Montvale, N. J., pp149-153 view details
          in SIGPLAN Notices 8(07) July 1973 view details
  • Sammet, Jean E. "Roster of Programming Languages for 1973" p147 view details
          in ACM Computing Reviews 15(04) April 1974 view details
  • Stock, Marylene and Stock, Karl F. "Bibliography of Programming Languages: Books, User Manuals and Articles from PLANKALKUL to PL/I" Verlag Dokumentation, Pullach/Munchen 1973 571 view details Abstract: PREFACE  AND  INTRODUCTION
    The exact number of all the programming languages still in use, and those which are no longer used, is unknown. Zemanek calls the abundance of programming languages and their many dialects a "language Babel". When a new programming language is developed, only its name is known at first and it takes a while before publications about it appear. For some languages, the only relevant literature stays inside the individual companies; some are reported on in papers and magazines; and only a few, such as ALGOL, BASIC, COBOL, FORTRAN, and PL/1, become known to a wider public through various text- and handbooks. The situation surrounding the application of these languages in many computer centers is a similar one.

    There are differing opinions on the concept "programming languages". What is called a programming language by some may be termed a program, a processor, or a generator by others. Since there are no sharp borderlines in the field of programming languages, works were considered here which deal with machine languages, assemblers, autocoders, syntax and compilers, processors and generators, as well as with general higher programming languages.

    The bibliography contains some 2,700 titles of books, magazines and essays for around 300 programming languages. However, as shown by the "Overview of Existing Programming Languages", there are more than 300 such languages. The "Overview" lists a total of 676 programming languages, but this is certainly incomplete. One author ' has already announced the "next 700 programming languages"; it is to be hoped the many users may be spared such a great variety for reasons of compatibility. The graphic representations (illustrations 1 & 2) show the development and proportion of the most widely-used programming languages, as measured by the number of publications listed here and by the number of computer manufacturers and software firms who have implemented the language in question. The illustrations show FORTRAN to be in the lead at the present time. PL/1 is advancing rapidly, although PL/1 compilers are not yet seen very often outside of IBM.

    Some experts believe PL/1 will replace even the widely-used languages such as FORTRAN, COBOL, and ALGOL.4) If this does occur, it will surely take some time - as shown by the chronological diagram (illustration 2) .

    It would be desirable from the user's point of view to reduce this language confusion down to the most advantageous languages. Those languages still maintained should incorporate the special facets and advantages of the otherwise superfluous languages. Obviously such demands are not in the interests of computer production firms, especially when one considers that a FORTRAN program can be executed on nearly all third-generation computers.

    The titles in this bibliography are organized alphabetically according to programming language, and within a language chronologically and again alphabetically within a given year. Preceding the first programming language in the alphabet, literature is listed on several languages, as are general papers on programming languages and on the theory of formal languages (AAA).
    As far as possible, the most of titles are based on autopsy. However, the bibliographical description of sone titles will not satisfy bibliography-documentation demands, since they are based on inaccurate information in various sources. Translation titles whose original titles could not be found through bibliographical research were not included. ' In view of the fact that nany libraries do not have the quoted papers, all magazine essays should have been listed with the volume, the year, issue number and the complete number of pages (e.g. pp. 721-783), so that interlibrary loans could take place with fast reader service. Unfortunately, these data were not always found.

    It is hoped that this bibliography will help the electronic data processing expert, and those who wish to select the appropriate programming language from the many available, to find a way through the language Babel.

    We wish to offer special thanks to Mr. Klaus G. Saur and the staff of Verlag Dokumentation for their publishing work.

    Graz / Austria, May, 1973
          in ACM Computing Reviews 15(04) April 1974 view details
  • Cohen, S. "Speakeasy - an evolutionary system" view details Abstract: Speakeasy is a very high level user-oriented language imbedded in a modular computer system. This system, designed for use with attached libraries for its information base, is an evolutionary development constantly being augmented in power by its user community. This paper describes the basic structure of the system and demonstrates some of its capabilities. Extract: Introduction
    I. Introduction
    A modern computer complex is an extremely fast information processor with a vast amount of stored information available to it. Machines and their associated software base are becoming ever faster , ever larger and ever more complex. This growth in capability brings with it increasing responsibility to provide the normal,: set with adequate access to available information. Unfortunatelya sense of isolation from advances in computer science is common in many disciplines and results in the people most in need of the capabilities provided by a computer being forced to rely on secondary sources for solutions to their problems or to ignore advances entirely and to program using first generation computer techniques (e.g., Fortran II programming techniques are still common in "standard" programs in the physical sciences).
    One answer to this problem of information exchange can be found within the structure of a modern .computer system. Development of a generalized modular system for computational processing designed to access and operate with libraries of stored information can make advanced algorithms and general computational information available to users in a sensible way. Properly structured, such a system can become the basic mode of operation for many users and can provide the tools necessary for effective utilization of a computer. Inadequacies in such a system are answered by adding new capabilities to satisfy existing needs. The overall system evolves in a manner that is sensible viewed both from the applications and the development as a whole. A system designed for growth provides the environment for a long-term project to answer the needs of users; it can at the same time provide researchers in computational science with an audience for their work.
    In order for such a system to be viable it is necessary that several conditions be satisfied.
    1) The system must contain basic sets of validated features so that a new user can formulate his problem within the system with ease and with assurance that the results are correct.
    2) The system must be capable of growth so that inadequacies can be overcome and so that the system can be expanded beyond its original design structure.
    3) The system must be sufficiently complex and its facilities diverse enough to satisfy the needs of a large community so that its growth and the dissemination of information within the system can be assured.
    4) The system must be adequately documented so that users can be made aware of the system and features available within it.
    5) A community of active users must exist.
    When these conditions are satisfied then the system becomes self-perpetuating. Users of the system feel that it is valuable enough to warrant the inconvenience caused by reorienting their normal mode of operation. The growth in size of the user community in turn attracts the addition of new facilities in the literature associated with the system which in turn attracts new users. A repository for ideas contributed by many and usable by more then becomes a realistic goal.
    This paper describes a system of this type that has been in use and under development for several years. Originally designed as a tool for research scientists, the generalized and easily used structure of this processor has now led to its acceptance by a large and varied user community.
    Although Speakeasy 1-4 has been in existence for many years, it is the widespread availability of time-sharing features such as TSO that accounts for the recent rapid growth in acceptance.
    The user communities already include physical scientists, engineers, econometricians, highway departments, hospitals, government agencies and universities. The growth in the capab ilitiesof Speakeasy in recent months is partially in response to the diverse nature of this user group and partially due to contributions from it. Acceleration in this growth rate can be expected as more communities are added.
    The Speakeasy processor is currently available for use on IBM 360 or 370 computers operating under VS, OS, TSO, NUROS or MTS. It has been translated and is also usable on FACOM-60 and NEAC-2000 series computers. Translation to several other computer systems are now being carried out. There are currently over 70 installations of Speakeasy and that number is growing rapidly.
    Operating under a time-sharing system, Speakeasy plays the role of an extremely powerful desk calculator. It is therefore easy to display its capabilities. Because of the richness of the available resources, each user finds within the system many features specifically tailored to his special discipline. He tends to view Speakeasy as a tool designed for his personal use. The real power of this processor though is its built-in capability for growth by accumulation and adaption. New users to this system, originally attracted by its ease of use are soon adding to its capabilities and are thus helping to provide an ever more powerful system for all users.
    Speakeasy is easily used by the novice, easily understood by the initiated and easily expanded by the expert. It provides a means for sensible dissemination of advanced computational techniques and makes their use direct both for the untrained user and for the expert. Growth by accumulation of the ideas of mXny users has already made Speakeasy one of the most powerful computer languages available, it has at the same time remained one of the most easily learned and easily used methods of communicating with a computer. This paper is intended to explain, in a general way, the structure of a Speakeasy system.
    The real power of Speakeasy rests in this basic structure. The currently available system, in spite of its widespread use, is to be viewed only as a demonstration of the capabilities provided by any library-oriented system. Properly viewed, the present Speakeasy processors are merely operational prototypes of much more powerful generalpurpose processors. Discussions about Speakeasy as it exists today may crystallize the development of this type of system to the benefit of all users.
    The paper is divided into sections describing the basic components of this system. It is important to emphasize that Speakeasy is an existing and operational system. The demonstratable realization of the concepts being discussed is of particular importance in this development because it is the feedback from users that has led both to the simplicity of notation found in Speakeasy and to the variety of facilities available. A section of this paper demonstrates some of the capabilities, available in the currently available TSO version of the system. It shows that a user-oriented system can at the same time be a powerful one.
    Extract: The Overall Description
    II. The Overall Description
    The structure of the Speakeasy system is shown diagramatically in Figure 1. The Speakeasy system consists of a language processor designed to interpret the requests of the user and to break them down into basic syntatical components. A scratch-pad storage facility available to this processor enables it to maintain transient information for the duration of the particular application. The language processor and its scratch pad provide the mechanism for a user to define and address structured objects that repres'ent intermediate information in the tasks being assigned to the system. The syntax of the communication language accepted by the processor is a straightforward one modeled on the conventional form of expression in the discipline of interest. The vocabulary of keywords directly associated with the processor is minimal, representing only those basic features of universal applicability.
    Libraries of information are attached to this processor to provide the system with its working vocabulary. When a specific operator is requested of the system, it searches the libraries attached to the system at that time. If the requested operator is found, then it is dynamically attached to the system so that it may perform its function. In most applications such operations involve operands previously defined and saved in the transient scratch-pad area. Results are saved in the scratch-pad area and are therefore available for later use.
    This operator-operand formulation with operators on structured objects is the heart of the Speakeasy system. The ability to define structured objects such as arrays, vectors and matrices makes it meaningful to develop a large set of operators tailored to specific data structures. The use of attached libraries make it possible to provide an ever increasing set of such operators without creating a system of extreme size and complexity.
    At the same time the use of libraries provides the mechanism for tailoring systems to specific applications without restricting the overall development. The extreme modularity of this system, the extensive use of libraries and the simplicity of its control language combine to provide a system with extreme power, ease of adaptability and the capab ility for sustained growth.
    Extract: Design Of The Language
    III. Design Of The Language
    The Speakeasy system is a repository for ideas. The communication language for the system (also called Speakeasy) is intended to make this repository usable. In designing the language and its syntatical rules the foremost considerations were naturalness, ease of use and tolerance for trivial mistakes. The basic specification for the language is a simple one. If a request by a user is unambiguous and looks correct to him then it should be accepted by the system. (For the most part this specification has been realized in the current processors.)
    This is somewhat different in philosophy from normal computer languages that are designed for programming a calculation for computer processing.
    Such languages are, to a large extent, tailored to the existing hardware facilities. The specifications of many conventional languages are designed so that a large number of decisions that relate only indirectly to the calculation must be made by the programmer. To give just a few examples, fixed point versus floating point numbers, dimension statements for quantities that occur only as intermediate results, and input and output formats-- none of these are directly related to the statement of the problem itself. Often such relatively trivial specifications constitute the bulk of a program--the parts of the program related to the calculation are but a small part of the material written by the user.
    In Speakeasy most of such decisions are considered to be part of the internal functions of the system. The user is supposed to formulate his problem in as brief and as natural a manner as possible, the system is supposed to translate this formulation into an executable form, relieving the user of as many decisions as possible. Actually the Speakeasy language specifications bear little relationship to the structure of a computer and only very indirectly reflect the form of calculation as executed in the computer.
    The Speakeasy language is designed to operate with structured objects. Arrays of numbers, mathematical vectors and true matrices are among the many classes of structured objects that a user may define and use in his calculations. Implicit algebraic rules that are class dependent provide a variety of tools for formulating calculations while operating on defined objects as single entities.
    The availability of structured objects means that an operator-operand form of language with great richness can be developed (one of the limitations of a normal language is that the scalar structure of the language itself limits the availability of built-in functions to those that operate on scalars).
    Each of the operators in Speakeasy is designed as a self-contained module whose operations are dependent upon the structure of its operands. In this way all of the decisions normally necessary in invoking routines in conventional programming techniques are internally contained in the operators of the system. Each operator is clearly definable in terms of what it does and contains many checks to see that it is being properly applied. By placing decision processes such as these within the system the user is relieved of most of the mundane parts of programming associated with languages such as Fortran or PL/I. The user can concentrate his effort on formulating the overall logic of his computation and be assured that a vast number of decisions are being properly made.
    Tolerance is somewhat foreign to computer languages. A misplaced comma in a format statement in most programming languages results in a complete abort of the calculation even though the intent of the user was obvious. In Speakeasy the primary intent is to provide the user with the answers to his problem, not to force him to specify his problem within rigid language rules. The structure of the language itself makes errors unlikely and the tolerant analysis aids even more by ignoring unimportant syntatical errors.
    As compensation for the tolerant language a large amount of internal consistency checking is carried out for each operation. The presence of structured objects in the language means that a large amount of information is available to the processor find as a result a large number of tests can be carried out automatically. Checks are thorough and prevent erroneously formulated problems from being carried out. Such internal checking combined with the tolerant language syntax provide the means for quickly and easily formulating a problem for processing with the assurance that the overall logic is correct. Actually the checking process is so detailed that completion of a problem without a detected error is real assurance of correct logic specification, a feature missing in most other languages. The overall language de signed a round an operator-operand concept combined with conventional algebraic tools is powerful, easily learned and easily used. It is logically complete and is extensible in both the types of structure supported, the algebraic rules for new structures, and the operators available for operating on objects.
    Extract: The Transient Scratch-Pad - Named Storage
    IV. The Transient Scratch-Pad - Named Storage
    A special dynamic storage scheme is an important component of the Speakeasy system. This storage facility provides the mechanism for defining and retrieving the structure objects discussed previously. In this scheme each defined object has associated with it a complete description of its structure along with particular values for its elements. Most importantly, the object and its descriptive information can be referenced by name. The name is all that is needed to locate any defined object, to determine everything about its structure and to use it in a calculation.
    Named Storage was developed in 1964 for use with calculations in nuclear physics. It is this storage technique that led to the development of Speakeasy. Individual modules of the Speakeasy system (the operators available to the language processor) are designed to operate on objects defined in Named Storage and to produce new objects there. Such modules (called Named Storage manipulators) are logically self-contained and complete.
    Each manipulator has available to it all structural information of the operands and is designed to perform a specific operation on structured objects. All decision processes, all tests on capability, etc. are made within the manipulator and the resultants are defined in Named Storage. The extreme modularity of the Speakeasy system is a consequence of this rather straightforward storage scheme.
    Each defined object in Named Storage has de sc riptive into rmation appended to it which des- ignates its class, the type of data in its elements and dimensionality. The allowed ranges for these designators has been made large so that new data types, new classes, etc. can be supported in later developments. Since no computational capabilities are contained in the storage package it is possible to extend the capabilities of Speakeasy entirely through additions to the manipulator attached to the system.



          in Proceedings of the ACM SIGPLAN symposium on Very high level languages, March 28-29, 1974, Santa Monica, California, United States view details
  • Cohen, S. "SPEAKEASY" view details
          in SIGPLAN Notices 9(10) October 1974 view details
  • Shavell, Zalman A. "System for economic simulation" pp755-756 view details Abstract: The characteristics desirable in a system designed for the development and operation of simultaneous equation economic models are outlined. Classes of users are identified; and their needs are considered. Specifically, the point is made that a system for economic simulation must include a data management capability and facilities for the analysis of data and the estimation of parameters in addition to those required to exercise models.
          in The 7th Winter Simulation Conference 14-16 January 1974 Washington Hilton Hotel, Washington, DC view details
  • Metcalfe, R. M. Review of Kriloff 1973 view details Abstract: The author discusses why a language called SPEAKEASY was extended to make invisible use of distributed facilities in the ARPA and MERIT computer networks. "Because the network features of the language are required to be totally transparent to the user, no examples of network programming are shown." The paper's principal assets are its somewhat unusual lists of 6 computer network types, 3 basic network communications operations, and 10 steps in establishing "linkule" communication. It appears that the paper was written too early in the life of the system it describes, but it is welcome, being on a subject of much import and little attention.

          in ACM Computing Reviews 16(01) January 1975 view details
  • Cohen, S. "Speakeasy - A Window Into a Computer view details
          in [AFIPS] Proceedings of the 45th National Computer Conference 1976 view details
  • Cohen, S. and S. C. Pieper. "SPEAKEASY-3 Reference Manual. Level Mu. IBM OS/VS" Version.Argonne National Lab., III. Aug 77. view details Abstract: Speakeasy is a computer language designed to provide access to information stored in a computer. Ease of use, natural notation, and built-in capabilities for growth are important features of Speakeasy. The language is based on the concepts of arrays and matrices, and processes these as entities; the need for many o* the loops necessary in other programing languages is thus eliminated. It has a large vocabulary (over 500 words) of functions and commands in the areas of array manipulation, matrix algebra including eigenanalysis. special mathematical functions, numerical integration and differentiation, statistics, graphics, and character processing. It can be used either in batch mode or interactively. This book is the primary reference manual for the Speakeasy language and presents a nearly complete description of its capabilities. The chapters deal with the use of Speakeasy as a "super desk calculator," the construction and editing of Speakeasy programs, the ability to communicate with other programing languages, the construction of user-written additions to the language, and various other facets of Speakeasy. In addition, a complete listing of the Help Library, which contains brief descriptions of each of the Speakeasy functions or commands, is included. This edition applies to the Mu release of Speakeasy-3, and describes the IBM OS/VS version. 18 figures.
          in [AFIPS] Proceedings of the 45th National Computer Conference 1976 view details
  • Cohen, Stan "Speakeasy linkules - plug compatible software" view details Abstract: A universal computer language must be able to evolve to satisfy the needs of its current and future users. This paper describes such a language, called Speakeasy. The paper emphasizes those features of Speakeasy that relate to its naturalness and to its extensibility. Extensibility in the Speakeasy sense means the ability to bring diverse sets of routines under the umbrella of the system and thus make them available to users. Interfacing a routine through the construction of a linkable module, called a linkule, extends the capabilities of Speakeasy in a general and unrestricted way. The concept of the linkule is explained and illustrated by examples. In order to provide some background a few illustrative examples of the Speakeasy language are given.


    Extract: Introduction
    Speakeasy is a computer language that is designed with the primary goal of answering the needs of users. One means of attaining this goal is by providing a language syntax that closely parallels that of the user. Modeled on conventional mathematical notation, the Speakeasy language is easily learned and tolerant of unimportant syntactical deviation. The language is therefore characterized by its naturalness and by its understanding. It is generally conceded that Speakeasy is the easiest computer language to learn; a typical introductory lecture of only a few minutes is sufficient to enable even a complete computer novice to begin to carry out relevant and meaningful calculations.
    That a language that is easily learned can at the same time be one of great power is perhaps less easily understood. None the less, it is rapidly becoming apparent that this language is one of the most powerful interactive computational languages currently in use and it will become even more potent in the future. This strength lies not in the language syntax but rather in the structure of the system in which the language processor resides.
    Designed over a decade ago, the system is truly extensible; the structure itself enables more and more power to be made available without modification of the basic processor. The growth of the Speakeasy system, manifested in the growth of its vocabulary, is now clearly the major feature that attracts new groups of users.
    The first section of this paper describes the basic Speakeasy language. Examples of the simplicity and naturalness of the language are given, primarily to demonstrate the overall atmosphere in which the user carries out the formulation of his problems. The second section involves the structure of the system. It is the disjoint nature of Speakeasy, the separation of the language processor from the mathematical operators of the system, that gives it its true power. The last section is a description of the interface to the linkules and a demonstration of the ease with which new abilities are added to the language. A sample of a linkule is supplied. Extract: Speakeasy - A Computer Language For People
    The design of any computer language requires that certain decisions relating to efficiency, clarity etc. be made. In most cases such decisions reflect an attempt to provide the user with access to the real capabilities of the computing hardware. Languages such as PL/I and Fortran let the bulk of the language specifications provide such information. The precision for numerical representation, the variety of data types and the means of formatting input and output are all related directly to the hardware of the computer.
    The difference between integer and floating point arithmetic, though of great importance in the actual implementation of the calculation, are not natural concepts to a person interested in formulating a problem for quick results. A Fortran diagnostic resulting from attempting to take the square root of an integer, though educational, hardly makes the computer more endearing. The rules that result in Fortran programs evaluating 3/2 as 1 or PL/I programs evaluating 25 + 1/3 as 5.333..., though meaningful to knowledgeable programmers, are not really natural to most people and represent an unnecessary burden to a casual computer user.
    Speakeasy is designed with the needs of such casual users in mind. The overall objective is to carry out the users stated problem with a minimum of hassle. The Speakeasy language specification is simple. If the statement is clearly and unambiguously specified, and it looks correct to the user, then it is the task of the processor to properly interpret that statement. While it is not always possible to meet this simple specification, it is the philosophy implied that is important. Believing that the user's prejudices are almost always right leads to the development of a language that is guaranteed to be acceptable to users.
    The conventional approach to creating a language is to specify it before implementation. All ambiguities and uncertainties are resolved prior to actual construction of the language processor.
    While such an approach is clearly advantageous to the language implementors it suffers from the same basic problem that confronts the development of any large predefined system. The first opportunity available for users of the system to provide meaningful feedback is after a major portion of the system is operating and much of the system is rigidly fixed. There is thus little opportunity for the eventual users of the program to influence the specifications of the system.
    Speakeasy has been a production language for many years. During that period, although used by many people, it has had no rigid language specification; rather it evolved under the influence of its users and has grown into a language that is highly readable and very understandable. While it might now be possible to completely specify Speakeasy and its notation, it is believed that the lack of such specifications were important during the initial evolution of the system. The capabilities of the processor have evolved greatly over the years of use, always in the direction of increased power but always with a concern for the users of the system and their real needs.

    Extract: Structure Of The System
    Structure Of The System
    Speakeasy is designed to work with structured objects and thus provides the environment in which a wide range of distinct operators can be made available. For instance, in the first illustrations an object was defined that is a square matrix. The existence of such an object as an entity within the users definitions means that it is possible to provide all of the operators that are associated with such matrices within the language. Words such as DETERMINANT, TRACE, INVERSE, and TRANSPOSE, are therefore available. Also the binary operators acquire their conventional meanings when used between two such objects. Similarly since statisticians make use of the system, the large number of basic operations associated with that discipline such as KURTOSIS and MULTIREGRESSION are also defined. The power of Speakeasy, in fact, rests on the availability of a large number of clearly defined words. The growth in the capability of the language processor has been by the accumulation of large numbers of distinct operations that can be described by well-known words. It is the completeness of the system coupled with the ability to grow to meet new requests that insures a really satisfied user community.
    Clearly if a system is to attract a wide audience it is necessary to provide a vast number of operations. To build such operations into a system by the conventional method involving construction of a single large program would necessitate a major and continued programming effort. So large and so complex a program would be certain to have innumerable errors and would be plagued by all of the problems that relate to such a system. The introduction of any new operation into the program would require major studies of the impact that it would have on the existing system and would be carried out slowly to avoid the possible unforeseen impact of the new section of program. It is hardly likely that a really broadly based system could, in fact, ever be constructed as a single program even if it could be clearly specified. It would probably be obsolete before it could be made operational.
    Speakeasy was originally conceived of as a system that would marry a simple yet powerful user oriented language to the computational resources available in a large computer complex. The idea was to match the needs of users by interfacing to facilities available within the machine. It was clear from the outset that the system would evolve under the influence of actual users and that it would therefore have to have growth capability within its structure. In fact the original system was conceived of as two distinct parts. The first was the basic processor designed to analyze through interpretation the request of the users. General operations such as input and output, storage of temporary information and simple definitions were built into this part of the system. In order to avoid inhibiting later growth no attempt was made to build in more than the basic operations. Instead, great effort was expended in the design of a truly library oriented system. A general interface routine was built into the processor. This interface provides the means for extending the language by adding new operations to libraries that are attached to the system while it is in use.
    The separation of the processor from the computational libraries provided many assets. The power of this approach cannot be over emphasized. Rather than being forced to develop a complete initial vocabulary it was possible to begin with a relatively primitive system and allow it to grow by the accumulation of new operations. At the same time it was possible to allow the relatively small processor to evolve on its own into a more and more powerful interpreter.
    The means of storing defined information is of great importance to a system such as this one. All information must be available not only to the computer but to each of the operators of the system. In Speakeasy a special dynamic storage scheme, called Named Storage 2, is a component of the processor. This storage facility provides the mechanism for defining and retrieving the structured objects. In this storage scheme each defined object has associated with it a description of its structure along with particular values for its elements. Most importantly, the object and its descriptive information can be referenced by name. The name is all that is needed to locate any defined object, to determine everything about its structure and to use it in a calculation.
    Each defined object in Named Storage has descriptive information appended to it that designates its class, the type of data in its elements and its dimensionality. The allowed ranges for these designators has been made large so that new data types, new classes, etc. can be supported in later developments. Since no computational capabilities are contained in the storage package it is possible to extend the capabilities of Speakeasy entirely through additions to the operators attached to the system.
    Individual operators in the Speakeasy system are designed to operate on objects defined in Named Storage and to produce new objectS there. The overall structure of this system is very much like a conventional mathematical system with operators, operands and resultants. The domain of the operators is the space defined by Named Storage. It is this quasi-mathematical structure that has led to the ease of development of the overall system.
          in [ACM] Proceedings of the 1977 ACM Annual Conference, Seattle, Washington, Oct. 16-19, 1977 view details
  • Cohen. S. "Human Factors in Speakeasy." Argonne National Lab., III. 1977, CONF-770858-1 view details Abstract: The philosophy used in producing the Speakeasy language is briefly discussed. The language has evolved under the suggestions and complaints of its users, and thus is truly user oriented. The concept of the linkable module enables users to extend the language to meet their needs.
          in [ACM] Proceedings of the 1977 ACM Annual Conference, Seattle, Washington, Oct. 16-19, 1977 view details
  • Condie , James M "A SPEAKEASY language extension for economists" view details Abstract: The flexibility and extendibility of SPEAKEASY has been utilized by the computer specialists at the Board of Governors of the Federal Reserve System to develop a system for economic modeling with simultaneous equations. Central to the design concept is a “model file” to either estimate the coefficients of the equations, or using previously estimated coefficients, compute solutions for the set of equations for each time period specified.
          in [ACM] Proceedings of the 1977 ACM Annual Conference, Seattle, Washington, Oct. 16-19, 1977 view details
  • Sammet, Jean E "Roster of programming languages for 1976-77" pp56-85 view details
          in SIGPLAN Notices 13(11) Nov 1978 view details
  • Giles Peterson and Aaron B. Budgor "The computer language Mathsy and applications to solid state physics" view details Abstract: The high-level interactive mathematics and graphics computer language, Mathsy (pronounced "math-c"). is discussed and demonstrated with sample applications. Mathsy is an interpretive, interactive, mathematical, array processing, and graphics system. Among its diverse uses in the laser fusion project at the Lawrence Livermore Laboratory, it has enafeied the conceptualization of a new algorithm to compute the density of electron or phonon states spectra which requires no roof solving.
    Extract: Introduction
    Introduction

    The emergence of high-level computer languages distinct from Fortran has permitted solvability of extremely complex problems. Mathsy, as an example of such languages, enables the user to issue commands much like those of hand calculators, but as we hope to demonstrate, is much more powerful.

    Mathsy is being used at the Lawrence Livermore Laboratory for a large portion of the image data analysis in the laser fusion project, for advanced laser design, and for other data manipulation and numerical calculation. Recently, the use of this language has been instrumental in the conceptualization of a new algorithm to complete the density of electron or phonon (quantized or normal mode vibrations) states spectrum in solid stale physics. Considering the ever increasing application of Mathsy to numerical work of all types, we feel that it is now timely to introduce Mathsy to the general computing public.
    Extract: Mathsy - The Language
    The Language: Mathsy
    Mathsy (math system) is an interpretive, interactive, mathematical, array (matrix) processing, and graphics system. The system is an interpreter that executes directly from commands given at a keyboard, from an editor-created file, or both. New commands are easily defined and can be treated as any basic library command. Mathsy is interactive as it presents the user with the facility to perform operations or make program changes from a keyboard and almost instantaneously view the results either numerically or graphically on a graphics terminal. Of the more than 250 currently existing library commands, the mathematical operations available include almost all of those in Fortran. Vector operations (across each row of an array) such as first Fourier transforms, curve fitting, sum and differencing, ordering, shifting, rotating, and reflecting are available. There are array operations such as transpose, maximum, minimum, and histogram. In addition to numerical output, many types of 2-D and 3-D graphical displays are possible. All the graphs in this paper were generated by the system.

    The Mathsy language is operationally similar to that of a hand calculator. There are no parentheses, and operations are perfbrmed from left to right with infix notation. Presently, only the 26 letters of the English alphabet are permitted as array variables; a colon followed by up to two letters enables definition of 703 scalar constants. Unless otherwise specified, the letter Y is the working array variable and is treated as the accumulator (display register) of a hand calculator.

    Arrays are initialized with dimension and value commands. The dimension commands specify how many rows and columns the arrays have. Array values are initialized by defining an operation. These are designated with a command such as "SPAN [2, -5]" which generates a linear span of numbers from two to minus five across each row of the working Y array. A single argument produces a span symmetric about zero. Thus, "SPAN2" is equivalent to "SPAN [-2, 2]", In Mathsy, the commands

    "B+C*A SIN D="

    are equivalent to the algebraic operations

    D(i,j) = SIN(A(i,j)[B(i,j) + C(i,j)]}

    i= 1,...,N, 1,...,M,

    for each of the N.M elements of the arrays A, B, C and D, Sequentially, the Mathsy commands bring the B array into the working Y array, add the corresponding C values to Y, multiply by the corresponding elements of A, take the SIN of each of the Y values, and then copy the Y array into the D array. [...]

    The compactness of the language can be illustrated by Figure 1; only two lines of code are needed to produce the torus there depicted. Figures 2, 3, and 4 demonstrate some of the graphics capabilities using a Gaussian function as data. Note from the figure captions that one command produces the desired operation and display. From this stance, Mathsy is operationally a geometric language. Sequential transformations are viewed via its graphic interface.

    Except for a few machine language routines used to increase Mathsy's speed, it is written in Fortran. Thus, it is reasonably transportable and can be interfaced with other graphics systems. This, together with its easily understandable syntax, is one of the major attributes of Mathsy, and distinguishes it from other graphics-array processing languages such as SPEAKEASY and LG.

    Implemented on the CDC 7600 computer, Mathsy uses about 48,000 words for program and nonuser data information; this leaves approximately 350,000 words for user data space. Mathsy adjusts its data size as the user program requires more or less space. To keep down the running size for the various graphic and command modes, the Mathsy program contains overlays. Many of the array operations, such as "SIN", are simply single "DO loops". These perform the same operation on all elements of an array. The vector operations, such as "SPAN", are double "DO loops". Except in the Boolean mode, where each bit of each word can be manipulated, all operations are 60-bit floating point with 14-digit accuracy.
    Extract: Mathsy Commands
    Mathsy Commands
    In this appendix we present an overview of all the Mathsy commands. The "BOOLEAN" and "NOBOOL" commands turn the Boolean mode on of off. In the Boolean mode commands such as "+ ? * / ** NEG ROL ROR SHL SHR" perform bit manipulations, logical operations, and rotate and shift bits within words.
    Array operators modify arrays by either performing specific operations (e.g., ABS, EXP, INV, LOG, LN, MAX, MIN, MOD, NEG, SQRT, COS, SIN, TAN, ACOS, ASIN, ATAN, COSH, SINH, TANH) or by combining two arrays or an array and a scalar (e.g., + ? * / **.). In addition to all the standard Fortran operations there are many others. The special function commands like "ERF" (error function), "ERFC" (complementary error function! "CHYPG" (the confluent hypergeometric function), "BESSJ" (Bessel function, 1st kind). "BESSY" (Bessel function, 2nd kind), and "VOIGT" (Voigt function) allow many other functions to be generated easily.
    The "VAX" command allows arrays other than the Y array to be used as the working space "Y AXA*A" in line 64 makes A the working array, then multiplies by itself. This could have been done with "A*A A=" or "A**2 A="; both move A into Y, square Y, and then move Y intoA. YAXA*A is faster.
    "NOSAVE"' and "SAVE" are used in conjunction with the "DIM" (dimension) command NOSAVE indicate that when any DIM is executed, all arrays are to be destroyed and the Y array is to be initialized to the specified number of raws and columns. SAVE indicates that when any DIM is executed no arrays are destroyed, but all arrays are now to be treated with the newly specified number of rows and columns. The first time an array is mentioned space is dynamically allocated for it in accordance with the present array dimension. Arrays can be reordered by ranking them from the smallest to the largest value (ORDER), by randomly rearranging the values (RANDO) by rotating or shifting each row (ROR ROL SHL SHR), by reflecting each row (REFL|, by transposing (TRANS), and by moving (MOVE). "MOVE" allowsthe beginning of an array to be moral to another part of it. The data that is being moved can be averaged, stepped across (eg,, every third row), or transposed.
    Functional approxiniation can be done with "FFT" (Fast Fourier Transform) and fitting commands. Poly-nomial least squared fits to each row of an array are done with else command "FIT n", where n is the poly-nomial degree desired. "FITF" allows fitting to arbitrary functions such as aF(x) + bG(x). (The coefficients a and b are available as well as the fitted function) Fitting can also be done using the B-spline method.
    The display commands allow linear and logarithmic horizontal and vertical axes enable a number of pictures to be displayed simultaneously, and provide different ways of displaying the same data (e.g. nonhidden, hidden, contours, gray level front, and degree). Arrays that have more than one row can be thought of as surfaces or families of curves. These pictures can be rotated to help visualise and understand the data. Unless instructed not to, MATHSY displays graphucally on the TV monitor. There are also commands allowing the data to be displayed numerically, and allowing other text labels to be displayed.
    "GRAY" level uses various degrees of gray to indicate density. "FRONT , xr, yr, zr, xt, yt, zt, xs, ys, zs" rotates, translates and scales  surfaces about and along the x, y and z axes in the order shown. "DEG de" specifies the viewing angle on the TV monitor, small "de" values permit one to "zoom" in on a surface.
    Data can be read into MATHSY from disk Files or from a keyboard terminal. Results can be stored on disk files, and any pictures generated can be displayed on a TV monitor or plotted on film or paper. Color commands permit color film to be generated. Although programs can be generated and written to disk using MATHSY. the usual procedure is to use an editor to generate a program on disk and then read it into MATHSY using the "RMAC" (read macros) command.
    A "FORMAT (. . .)" command specifies a standard Fortran format. These are used for displaying numerical information on a TV, on a terminal, or for reading or writing disk files. "TVX" and ''TVY" specify where to begin displaying characters on the TV. "WTV f, n" displays on the TV with format f, using the first n data values of the working array. "TVCX" arid "TVCY" are used to change the TVX and TVY values.
    In addition to the basic MATHSY commands, the user can define any commands (macros) be desires. User-defined commands can be called by other user-defined commands and can have arguments. A user-defined command can be repeated a specified number of times by using the form "XXX, n." (XXX is a user-defined command and n is the number of times it is to be repeated.) An example is the "BCS1,, :NQ" in line 52. The "IF" command stops a user-defined command if the specified condition is not met. Thus, if the user-defined command "ABC, 100" has been given and ABC contains an IF, execution of ABC will stop at any point if the IF test fails.
    The commands "PAUSE" and "GO" allow the user to run his program to a PAUSE, examine any array or scalar he desires, and then continue with GO. Since entire arrays are displayed graphically, programming errors are usually found easily.
    Extract: Discussion

    Discussion


    In the preceding sections we have attempted to give a didactic overview of the computer language Mathsy. Due to the nonexistence of published documentation our presentation was slanted toward a user's description of the language. As a noatrivial example of solving a complex physical problem which embodies some of the more geometric and data manipulative Mathsy commands, we introduced the density of states spectral problem in solid state physics. Mathy's conciseness, readability, and its ability to allow the user to visualize, better yet, geometrize the command-to-command transformations of a program enabled the authors to develop the LATSPEC algorithm.


    Mathsy enables researchers at the Lawrence Livermore Laboratory to complete their programming tasks in a much more adroit and efficient manner than they could have in Fortran. This is due to the fact that no program compilation is necessary, graphics routines are already interfaced, program debugging is easy (compared to other languages), the language is extremely powerful, thereby making programs relatively short (about 1/10 the size of Fortran programs), and new commands are easily defined by using basic Mathsy or other user-defined commands.


    Mathsy is capable of using just about any input-output computer facility and graphics routine available at the Lawrence Livermore Laboratory. Currently operative on the CDC 7600, it is being adapted to the PDP 11/70 and the CRAY-I.


    Two other computer languages which have some features similar to Mathsy are SPEAKEASY and LG. The crosses (x) in Table I indicate which of these are common to each other.







     MATHSYSPEAKEASYLG
    Macros* *
    Internal teaching facility** 
    Graphics facility***
    Array processing***




    In addition to the differences annotated here there are also philosophical differences. SPEAKEASY seems to be a concatenation of library commands, accessed by a more complex language than Mathsy. Although it is an array processing language, its algebraic rules on 2-D arrays are different from those on vectors. Mathsy, while contaimng a respectable number of library commands, stresses the use of operational transformations. This enables it to be an effective scientific language, as well as a data manipulator, without requiring the command library to forever keep expanding. Its algebraic rules in one and two dimensions do not require distinct sets of commands. LG is not an all-purpose language, as are Mathsy and SPEAKEASY. It is a language specifically constructed to do analytic geometry.
          in [ACM] CACM 23(08) August 1980 view details
  • Vandoni, Carlo "Scientic Data Visualization" Cern December 1995 view details pdf
          in [ACM] CACM 23(08) August 1980 view details
    Resources