CHAMP(ID:3015/cha002)

String-conscious algol 60 variant 


for CHAracter Manipulation Procedures

String-conscious algol 60 variant

Takes all of string rules and distills into two: concatenation and partition-testing


References:
  • Kaufman, M. T. "CHAMP: CHAracter Manipulation Procedures in ALGOL" Master's Th., U. of Virginia, Charlottesville, Va., June 1967. view details
  • Storm, Edward F. "CHAMP—character manipulation procedures" view details Abstract: A new programming language facility for symbol manipulation is described. String procedures may be declared and called in a standard ALGOL context. ALGOL procedures can in turn be called by string procedures so that numeric and symbolic processes may conveniently be programmed together. Concatenation and a variant of SNOBOL's pattern matching make up a set of primitive commands. These are assembled together into conditional expressions which are to be used to provide alternative computational patterns. Arrays of strings are processed using quantifiers. The class of things which may be assigned to an identifier can be restricted by a procedure expressed in the notation. The language facilities have been implemented in the ALGOL compiler for the Burroughs B5500. DOI Extract: Introduction
    l. Introduction
    In this paper the addition of character manipulation facilities to the ALGOL compiler for the Burroughs B5500 by the inclusion of a new syntactic type called (string procedure) is described.
    String procedures may be declared within an ALGOL program and may be invoked anywhere within the scope of the declaration. All string procedures are implicitly Boolean. The specification parts and declarations within a string procedure may include two new data types: atom and string. The type atom refers to a single character occurrence and the type string to an arbitrary string of symbols. String length may increase during a computation, and required storage is obtained by array allocation facilities already existing in the compiler. Dead storage is systematically returned using the same set of facilities.
    Since compiled code calls these allocation facilities extensively at run time, CHAMP procedures run well under maximum realizable efficiency, and thus the current version of the implementation is regarded as experimental. External to a string procedure, a string is created by declaring a real array, and strings are stored by packing 8 characters per array element. Certain control information must be provided in the first 18 bits of the first word of the array. Therefore, simple facilities have been provided to read a string from a card and to print a string. Syntax errors are detected at compile time.
    A string set is defined as the context in which a computation takes place. A recognition/partition test is described by which a string may be broken up into its component substrings. Schematic identifiers are introduced as a generalization of the declaration facility. Arrays of strings are permitted and bounded quantifiers are used to process the elements of an array. During the execution of a CHAMP procedure, changes to the string set are made provisionally. The permanent recording of such changes occurs only when a complete conditional expression is determined to come out true.
    Basic string manipulation operations (concatenation and partition) are permitted only within a string procedure. ALGOL statements may not appear within a string procedure, but calls on Ai~GOL procedures are allowed. One can then interleave string and numeric processing whenever convenient.
    In extreme situations the recognition/partition test involves an exhaustive combinatorial search. The magnitude of this search is multiplied by the presence of recursive features which may involve subordinate partition tests. For these reasons, and because of the experimental nature of the implementation, it would be inappropriate to apply these facilities either to long strings or to data in large quantities. On the other hand, the notation appears convenient for experimental programs in theorem proving and proof checking, formal differentiation, syntax checking, and syntax transformations. With suitable care in the application of the partition test, the language is useful for text handling and the preparation of special purpose editing formats.
    The additions to the syntax for Burroughs Extended ALGOL are given in the Appendix.

          in [ACM] CACM 11(08) (August 1968) view details
  • Wier, D. R. review of Storm 1968 view details Abstract: The article describes an implementation on the Burroughs B5500 of character manipulation facilities in ALGOL. Concatenation and a variant of SNOBOL'S pattern matching make up a set of primitive commands. The language seems limited in application to experimental programs in theorem proving and proof checking, formal differentiation,, syntax checking, and syntax transformations. Both from the standpoint of the language and the particular implementation, problems requiring a text handling facility or ability to process long strings of data would be difficult using CHAMP.

          in ACM Computing Reviews 9(12) December 1968 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 115 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 9(12) December 1968 view details