Utopia 84(ID:4038/uto002)


An idealised language proposed by Knuth and commented on by Ledgard and Richard, to get an ideal language by 1984


Related languages
Utopia 84 => STAR   Implementation

References:
  • Knuth, Donald E. "Structured Programming with go to Statements" view details Abstract: A consideration of several different examples sheds new light on the problem of ereating
    reliable, well-structured programs that behave efficiently. This study focuses
    largely on two issues: (a) improved syntax for iterations and error exits, making it
    possible to write a larger class of programs clearly and efficiently without go to statements;
    (b) a methodology of program design, beginning with readable and correct,
    but possibly inefficient programs that are systematically transformed if necessary into
    efficient and correct, but possibly less readable code. The discussion brings out opposing
    points of view about whether or not go to statements should be abolished;
    some merit is found on both sides of this question. Finally, an attempt is made to
    define the true nature of structured programming, and to recommend fruitful directions
    for further study. DOI Extract: UTOPIA 84
    At the present time I think we are on the verge of discovering at last what programming languages should really be like. I look forward to seeing many responsible experiments with language design during the next few years; and my dream is that by 1984 we will see a consensus developing for a really good programming language (or, more likely, a coherent family of languages). Furthermore, I'm guessing that people will become so disenchanted with the languages they are now using--even COBOL and FORTRAN-- that this new language, UTOPIA 84, will have a chance to take over. At present we are far from that goal, yet there are indications that such a language is very slowly taking shape.

          in [ACM] ACM Computing Surveys (CSUR) 6(4) December 1974 view details
  • Richard, Frederic; Ledgard, Henry F. "A reminder for language designers" pp73-82 view details Abstract: Most existing programming languages do not suit the production of large software systems. To implement real problems, no current programming language offers clear solutions. Too often, the structure o£ the problem must be twisted to the structure of the language. To devise programs that can be read and modified, programmers must observe a strict obedience to numerous and complex programming standards. Many of these standards exist only to remedy serious pitfalls of the language, and complicate the task of programming. As to verification of large programs, most languages are hopeless.
    In our opinion, current programming languages are seriously afflicted and a radical cure is in order. We believe there is a need for a new general purpose, procedure-oriented programming language. This UTOPIA 84 (Knuth 74) should not only be designed to enable the programmer to devise clear data structures and algorithms. It should also provide assistance to the user in the development of large programs, their verification, and their maintenance. For this purpose, the readability of a language (i.e. human appreciation) is far more important than its. writability (i.e. translation from precise implementation specifications).
    In this paper we suggest several language design principles for UTOPIA 84. These principles are based in part on the works of Dijkstra (68), Gannon and Horning (75), Hoare (72), Knuth (67), Ledgard and Marcotty (75), Weinberg (75), Wirth (74), and Wulf and Shaw (73). No attempt is made to address the whole language design area. Little consideration is given to writability and efficiency of implementation. we believe that these goals have received too much attention in the past. DOI Extract: Parting Comments
    Parting Comments
    UTOPIA 84 is still a long way off. The selection of the primitives of a language and the elaboration of data type facilities are important issues that were barely mentioned. moreover, the design of a comfortable operating environment, including input/output primitives, and the quality of an implementation have a serious effect on the acceptance of a language.
    Through the design principles presented in this paper we have tried to emphasize that all consequences of a design decision should be evaluated. Each design decision should promote ease of learning, program validation, and program maintenance. We cannot underestimate the use of formal definitions in the language design cycle, for they should provide useful indications on the simplicity and clarity of the result. Above all, the designer should strive to keep a language small, consistent, and readable.
    A note on implementation must be made. Although we have given little consideration to efficiency of implementation, we doubt that any of our recommenda tions would lead to high inefficiency. Even so, if one considers the actual cost of software development and maintenance, a sensible gain in readability justifies some loss of efficiency.
    In parting, we must admit that some notions used in this paper, like readability, remain purely subjective. Language designers may be easily misled if they keep to their own notions. They must listen to the users and interpret their complaints. After all, users remain the ultimate judges in language design.
          in SIGPLAN Notices 12(12) December 1977 view details
  • Arisawa, Makoto and Iuchi, Minoru "Fortran + Preprocessor = Utopia 84" view details Extract: Account
    Since E.W.Dijkstra pointed out that programs must be well structured, there have been lots of efforts towards so called "structured programming." Several programming languages have been designed and implemented along this line. Old heroes such as Cobol or Fortran were criticised. But still many programmers seem to stick to Fortran for some reason or another.

    In order to reform Fortran into more "structured" language, preprocessor approach has been tried with considerable success.  (See references.) This approach usually is called "structured Fortran," and many preprocessors fall into this family, Ratfor for an example.
    In the present paper, we discuss how to push forth this approach so that we could reach the ideal language level. Utopia 84 is the final objective for our efforts. (Utopia 84 is the name of an ideal, programming language or a class of languages mentioned by D.E.Knuth.)
    We have designed and implemented a version of "structured Fortran" preprocessor, to be called "Star" in the followings, and now are polishing it up. Hopefully, Star will be growing up to be "micro Utopia 84", "mini Utopia 84", and so on, until at last we reach the final Utopia 84.
          in SIGPLAN Notices 14(01) January 1979 view details