PAF(ID:22/paf001)

Conversational programming language 


for Programmation Auomatique des Formules

Dmitri Starynkevitch, 1957.

Similar to Fortran II, with French language symbol words

PAF was an interactive computing language created by Dimitri Starynkevitch for the CAB500 in 1958

It made use of stacks which were called "deep variables"

"One peculiar feature of the PAF language processor is that it minimized the operator burden by allowing him (or her) to enter only the first letters of a keyword and completed the statement. PAF also handled in a consistent interface the statements of the programming language and the control of operation and the program debugging.

PAF was similar to what became later known as incremental BASIC, and resembled somewhat to the future APL.

The Flexowriter character set had been adapted to the PAF language by introducing the subscripted letters i, j, k and numeric exponents. Labels were numeric as the original BASIC. All statements were automatically numbered mod 10.Non numbered statements were interpreted as immediate commands. Named functions were to be recognized by a leading space. The multiply sign was implicit.
Keywords use the French language
IMPRIMER (Print)
FIN (End)
ALLER EN (GoTo)
POSER (PUT)
CALCULER (COMPUTE)
eg
SI A > B ALLER EN (IF B GO TO)
IMPRIMER AVEC 2 DEC(imales) RC(racine carree) (de) N ? PRINT SQUARE ROOT of N to 2 DECIMALS.


A program could be interrupted from the console, value of the variables could be displayed (and modified). Additional statements could be inserted. All variables were floating point numeric."

from http://perso.club-internet.fr/febcm/english/sea_cab500.htm#paf



Papers in French journal RAIRO, 1961-1963?

Implemented for the S.E.A. CAB500 computer (France).

The SEA CAB 500 Computer Dimitri Starynkevitch


References:
  • Starynkevitch, D. "La programmation automatique des formulas sur CAB 500" [Automatic formula programming on the CAB 500]. Elektr. Daten. 9 (1961), pp1-5 view details Abstract: This paper describes an automatic programming system applied to a small-size French computer CAB 500 built by SEA Cie. The process is to write down mathematical formulas and a few sentences (declarations) in plain language, similar but not identical to spoken language. Then a recorded program will translate them, produce a program in a machine code and store it in memory, ready for use.
  • Watanabe, M. Yokohama, Japan, review of Starynkevitch 1961 view details Abstract: This is an introductory article of the CAB 500 PAF (Programmation Automatique des Formules) system [...] PAF is similar to languages such as FORTRAN, but has several features worth noting. Formulas and declarations are treated separately, and numbers are attached to declarations if necessary, to designate order of execution. Other interesting features which are not mentioned in the present paper are the use of a lower case alphabet to indicate a subscripted variable, and a plotting routine which enables curve plotting on the typewriter.

          in ACM Computing Reviews 2(01) January-February 1961 view details
  • Starynkevitch, D. "Programmation Automatique Sur Des Calculatrices De Moyenne Importance" view details Extract: Local copy of extracts
    PROGRAMMATION AUTOMATIQUE SUR DES CALCULATRICES DE MOYENNE IMPORTANCE
    D. STARYNKEVITCH (France)

    La programmation directe est une chose aride et souvent pénible, car elle doit être faite en langage machine, c'est-à-dire dans un code particulier à chaque calculatrice, difficile à écrire, difficile à lire, donc à vérifier.
    De plus en plus on essaye de créer des langages différents, plus explicites, qui sont traduits par la calculatrice elle-même en langage machine. L'avantage d'un tel langage est de le rendre plus facile à lire, donc a vérifier, car c'est un langage clair qui ressemble au langage humain auquel nous sommes habitués.
    L'expérience montre que suivant le type de travail à faire, que ce soit un problème scientifique, ou problème de gestion, la programmation est sensiblement différente.
    Dans les problèmes scientifiques, les formules de calcul sont en général compliquées, mais on traite relativement peu d'informations.
    La Programmation Automatique de Formules (PAF) réalisée à la SEA, répond à ces exigences.
    Les formules y sont écrites en clair sur leur forme classique.
    Ex. Y=(X3+A)(X+B)Z SIN2X
    Les mémoires de la machine utilisée correspondent aux lettres de A à Z.
    Si ceci est insuffisant, on peut indicer les variables, soit numériquement
    Xz    Y3    415, soit littéralement
    Xi    Yij   Bik etc. ...
    Mais le nombre d'indices est toujours connu à l'avance et limité. Par exemple si l'on traite une matrice de 20x20, on sait qu'il faut réserver 20x20=400 adresses pour les données.
    On écrit donc:
    z=20   7=20   X A B.
    On pourra écrire dans le programme PAF des instructions du type
    Calculer     Xik=Xik+A'j Bjk
    Les instructions de calcul sont données par des mots clés tels que:
    POSER
    CALCULER IMPRIMER, etc. ...

    On écrit donc par
    11     poser X=0
    12     calculer Y
    13     Si X<20 aller en 6
    Les étiquettes des instructions sont toujours numérotées.
    Dans les problèmes de gestion, les calculs sont en général plus simples. Il y a par contre un grand nombre de données dont la quantité n'est pas connue à l'avance. Les informations sont entrées sur bande magnétique puis transférées en mémoire interne de la calculatrice.
    Les informations transférées sont de même structure, mais de longueur variable. Elles sont donc toujours au même endroit de la mémoire interne.
    Une programmation plus automatique se fait en plusieurs étapes.
    Une première étape consiste à remplacer les adresses de la machine par des mots indiquant leur contenu.
    Par exemple, pour calculer une commission d'assurance :
    Commission=Pourcentage x Prime
    Il faut écrire en langage machine un ordre du type: M   236.    226.    280
    M = multiplication,
    236 = adresse du pourcentage de l'agent, 226 = adresse de la prime, 280 = adresse du résultat = commission.
    En adresse symboliques, on écrira au lieu de cela: M POURCENTAGE, PRIME, COMMISSION.
    ou par une mise à jour de fichier.
    P   400,   200,   2800
    P indique une rupture de séquence conditionelle :
    P = Si (400) < (200) aller en 2800 Si 400 = adresse du N° Mouvement 200 = adresse du N° Fichier 2800 = adresse du programme de mise à jour.
    En adresse symbolique ceci s'écrit:
    P NUMERO MOUVEMENT, NUMERO FICHIER 2.800

    Il faut au préalable introduire la liste des informations utilisées, avec leur longueur en nombre de caractères:
    NUMERO FICHIER 6 -> 200
    NOM     20 -^206
    PRIME     5 -> 226
    DATE ECH.     5 -> 231
    POURCENTAGE        2 -> 236
    puis on peut utiliser les adresses symboliques.
    Les données sont lues et totalisées par 2 caractères, puis une table de correspondance est constitutée.
    Une deuxième étape vers une programmation plus automatique consiste à écrire en clair les opérations ou la succession des opérations à faire. Chaque ligne d'instruction sera précédée d'un numéro représentant une étiquette numérique.

    Ex.:
    CALCULER COMMISSION = POURCENTAGE*
    PRIME.
    Si Numéro Mouvement inférieur à Numéro Fichier aller en 15.
    15 = étiquette du programme mise à jour.
    Les lignes d'instruction peuvent être plus complètes et inclure plusieurs calculs.
    Ex. :
    Mise à jour sans quittancement si date échéance non encore arrivée, c'est-à-dire supérieure à la date jour.
    SI NUMERO-MOUVEMENT INFERIEUR A NUMERO-FICHIER ET SI DATE-ECHEANCE SUPERIEURE A DATE-JOUR, TRANSFERER MOUVEMENT VERS NOUVEAU FICHIER.

          in Popplewell, Cicely M. (Ed.) Information Processing 62, Proceedings of the 2nd IFIP Congress, Munich, Aug. 1962. North Holland Publ. Co., 1963. view details
  • Marc Pélegrin, Machines à calculer électroniques, Dunod 1964, p.227-231 view details
          in Popplewell, Cicely M. (Ed.) Information Processing 62, Proceedings of the 2nd IFIP Congress, Munich, Aug. 1962. North Holland Publ. Co., 1963. view details
  • Denes, J.E. ; Upton, N. Y. Review of Ritout 1966 view details Abstract: This is a brief description of a SIFT-like translator of PAF source programs to FORTRAN ones. A three-pass proeessor manages to overcome some rather serious incompatibilities between the two languages. The paper describes the solution of some of the major incompatibilities, and gives a summary description of the three phases of the translator. This description is not detailed enough to judge whether any novel or special methods are used in its implementation
          in ACM Computing Reviews 7(03) May-June 1966 view details
  • Ritout, M. "PAF-to-FORTRAN translator" pp207-211 view details
          in Proc. 3rd AFCALTI Congress of Computing and Information Processing, view details
  • Stock, Karl F. "A listing of some programming languages and their users" in RZ-Informationen. Graz: Rechenzentrum Graz 1971 180 view details Abstract: 321 Programmiersprachen mit Angabe der Computer-Hersteller, auf deren Anlagen die entsprechenden Sprachen verwendet werden kennen. Register der 74 Computer-Firmen; Reihenfolge der Programmiersprachen nach der Anzahl der Herstellerfirmen, auf deren Anlagen die Sprache implementiert ist; Reihenfolge der Herstellerfirmen nach der Anzahl der verwendeten Programmiersprachen.

    [321 programming languages with indication of the computer manufacturers, on whose machinery the appropriate languages are used to know.  Register of the 74 computer companies;  Sequence of the programming languages after the number of manufacturing firms, on whose plants the language is implemented;  Sequence of the manufacturing firms after the number of used programming languages.]
          in Proc. 3rd AFCALTI Congress of Computing and Information Processing, 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 442 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 Proc. 3rd AFCALTI Congress of Computing and Information Processing, view details
  • Backus, John "The History of FORTRAN I, II and III" view details
          in SIGPLAN Notices 14(04) April 1979 including The first ACM SIGPLAN conference on History of programming languages (HOPL) Los Angeles, CA, June 1-3, 1978 view details
  • Bernard A.Galler The Fortran Language view details
          in SIGPLAN Notices 14(04) April 1979 including The first ACM SIGPLAN conference on History of programming languages (HOPL) Los Angeles, CA, June 1-3, 1978 view details
  • Starynkevitch, Dimitri "The SEA CAB 500 Computer" view details Extract: PAF
    The Language PAF (Programmation Automatique des Formules)
    The idea of high-level programming language began to arise almost everywhere at about the same time, around the mid-1950s. In SEA the first studies in programming mathematical formulae were made in 1956, on the CAB 2022; these were concerned only with attempts to interpret formulae, as this machine was ill adapted to direct evaluation. In fact, the initial aim was only to construct the program corresponding to a given formula, so as to extend the use of the "desk machine" (that is, of the computer as a desk calculator); hence the name Programmation Automatique des Formules, PAF.

    Thus what was wanted was a high-level language to enable formulae to be given to the machine in a form as close as possible to that which was used frequently, in particular, variables should be represented by single letters and it should not be necessary to give the multiplication sign in a product. The input and output devices of the future CAB 500, described above, were planned with this in view; the keyboard was designed to be used with PAF, the first versions of which became available in 1957 or 1958, shortly before the commercial launch of the machine. It was for this use that the need for certain mathematical symbols, in addition to the usual letters and decimals digits, was foreseen, especially for exponents and indices: just as in ordinary algebraic notation, the former would express powers and the latter could be used to define new variables, thus increasing the number that could be used beyond the 26 letters of the alphabet, or to index entries in an array.

    Compilation of the formulae was based on the use of stacks, operands, operators, and priorities; these have since become standard procedures, but at that time (1956) the term "stack" was unknown to us and we called them "deep variables." Thus it was that PAF was developed at the same time as the CAB 500; the prototype version appeared in 1958; a definitive version appeared in 1959, incorporating a number of additions and improvements.

    The prime objective of PAF was to make it possible to handle and evaluate mathematical formulae on the machine in as natural way as possible, and without any need for experience in computer programming. To achieve this the syntax of the language had to be made as simple as possible, and therefore keywords were used to express the semantics. PAF, and probably the CAB 500 generally, was aimed primarily at mathematicians, who at that time were not accustomed to using a typewriter, so as to require as little as possible from them in the way of typing skills, the portion of the keyword that had to be typed was reduced to the minimum. As soon as enough of the leading characters had been given for there to be no ambiguity in the choice of keyword, the machine supplied the rest. Since the syntax was so simple, it was easy to distinguish between a variable and a keyword. In general an instruction could only be an assignment, distinguished by the symbol "=" following the first alphabetic character or a keyword. Experience showed that the use of PAF -- it could hardly be called "programming" -- could be learned in a very short time -- just a few hours; in this respect we had achieved our aim.
          in Annals of the History of Computing 12(1) January 1990 IEEE view details
    Resources