PRAXIS(ID:4070/pra004)

High Level machine oriented algebraic computer language 


High-level machine oriented algebraic block-structured language computer language, written by BBN for the Nova High Energy Laser Project at Lawrence Livermore National Laboratory.


From the NEA release notes:

"DESCRIPTION OF PROGRAM OR FUNCTION - PRAXIS is a systems implementation programming language designed especially for control and communications programming. It is a modern, strongly-typed, block-structured language similar to PASCAL but with extentions and features particular to control systems applications. The software consists of three PRAXIS compilers and three associated support utilities - the PRAXIS RMS-11 Interface, a set of procedures, functions, and type declarations which allow PRAXIS programs to interface to the RMS-11 Input/Output system under VAX/VMS and the RSX-11M systems; TEXTIO, character I/O software for terminal and line-printer text operations; and UNPASCAL, a program which translates simple PASCAL programs into PRAXIS. The compilers included are: a VAX/VMS version which generates VAX code, a VAX/VMS version which generates PDP11 codes, and a PDP11/RSX-11M version which generates PDP11 code. NESC Edition B of PRAXIS is designated as Version 7.3 by the contributors. The PDP11 compiler is not supported and has not been changed since February 1982"

Places
Related languages
Pascal => PRAXIS   Extension of

References:
  • Greenwood, J.R.; A. Evans Jr., C.R. Morgan and M.C. Zarnstorff: An Introduction to PRAXIS. UCRL-52957 Rev. 1 (December 1980) view details
  • Evans, A. Jr. and R.E. Shapiro: PRAXIS Input/Output Interface. UCRL-15336 (January 1981) view details
  • Evans, A. Jr.: PRAXIS Compiler Internals. UCRL-15335 (January 1981) view details
  • Evans, A.C. Jr., C.R. Morgan, J.R. Greenwood, M.C. Zarnstorff, G.J. Williams, E.A. Killian and J.H. Walker: PRAXIS Language: Reference Manual. UCRL-15331 (January 1981) view details
  • Evans, Arthur "A Comparison of Programming Languages: Ada, Praxis, Pascal, C" BBN Report no. 4634 1981 view details Abstract: In this document, four high order languages (HOLs) are examined and features compared, with evaluation of the ability of each to meet the goals of systems programming. A major purpose of this discussion is to introduce Praxis, a new language, and compare it with existing languages.
  • Greenwood, J.R.; W.I. Nowiki, A. Evans Jr., C.R. Morgan and M.C. Zarnstorff: Programming in PRAXIS. A Detailed Introduction and Tutorial for the PRAXIS Language. UCID-18995 (April 1981) view details
  • Walker, J. H. "Praxis Language Reference Manual" Bolt Beranek and Newman, Inc., Cambridge, MA. Jan 81, UCRL-15331-Rev.1 view details Abstract: This document is a language reference manual for the programming language Praxis. The document contains the specifications that must be met by any compiler for the language. The Praxis language was designed for systems programming in real-time process applications. Goals for the language and its implementations are: (1) highly efficient code generated by the compiler; (2) program portability; (3) completeness, that is, all programming requirements can be met by the language without needing an assembler; and (4) separate compilation to aid in design and management of large systems. The language does not provide any facilities for input/output, stack and queue handling, string operations, parallel processing, or coroutine processing. These features can be implemented as routines in the language, using machine-dependent code to take advantage of facilities in the control environment on different machines.
  • Spector, David "Ambiguities and insecurities in Modula-2" pp43-51 view details Extract: Introduction
    Introduction
    While it is not yet clear whether Ada, BLISS, Mary/2, Modula-2, Mesa, C, CLU, Edison, Concurrent Euclid, Icon, Newton, PLAIN, PLUS, Praxis, Smalltalk, SQURL, Y, or some other language is "best" for systems programming, each language represents an advance towards the goal of supporting an understandable and efficient organization of the many details and relationships inherent in systems programming.
    Unfortunately, no one language has yet achieved the delicate balance between simplicity and power that would distinguish it as ideal, but it appears that Modula-2 comes quite close. Modula-2 represents a step forward in language design, both because it incorporates existing features instead of inventing its own, and because of its evident concern for simplicity.
    Modula-2 offers the following valuable language features:
    Simplicity.
    Few primitive datatypes are defined, few control constructs are supported (there is no "go to"), and input-output operations are not provided as part of the language (they can be provided via extensions written in Modula-2). This simplicity allows for easier standardization and better portability than can be achieved with most other languages.
    Modules
    A module is a named collection of variables and procedures, similar to an Ada package. It controls the interfacing and encapsulation of the conceptual parts making up large software systems. Modules provide a more flexible solution to the problem of partitioning the name space of a large program than does the more familiar hierarchical nesting of procedures. They are so valuable they are even being force-fitted onto existing languages.
    Separate Compilation.
    Modules may be compiled separately, providing good management for large programsr and definition modules allow for specifying interfaces without giving implementation details.
    Flexible Datatypes.
    Strong datatypes are enforced, but this can be relaxed when necessary in systems programming to just declaring a parameter to be a word, an address, or an array of words.
    Machine Access.
    Access to specific memory addresses and other characteristics of the underlying machine is supported.
    Tasking.
    Flexible and efficient tasking is provided by coroutine management routines.
          in SIGPLAN Notices 17(08) August 1982 view details
  • [NESC] Edition B of PRAXIS NESC9983/02: NESC Note 85-86 (September 6, 1985) view details
          in SIGPLAN Notices 17(08) August 1982 view details
  • Holloway, Frederick W. and Anthony J. DeGroot, PRAXIS Release Notes Version 7.3, UCID-20426, May 3, 1985. view details
          in SIGPLAN Notices 17(08) August 1982 view details
  • Holloway, Frederick W.; Anthony J. DeGroot, Timothy A. Sherman, and James M. Duffy, PRAXIS Language Environment Distribution Package Description, UCID-30196 Rev. 1, January 18, 1985. view details
          in SIGPLAN Notices 17(08) August 1982 view details
  • Holloway, Frederick W.; Antony J. DeGroot, and Timothy A. Sherman, PRAXIS Releases Notes Version 7.2, UCID-20332, January 18, 1985. view details
          in SIGPLAN Notices 17(08) August 1982 view details
  • Greenwood, J. R. "Comments on 'A View from the Trenches'. Ada vs. Modula-2 vs. Praxis." view details
          in SIGPLAN Notices 21(05) May 1986 view details
    Resources
    • NEA Page for NEA Praxis
      external link
    • DECUS PRAXIS archive
      This directory tree contains the complete PRAXIS language system and some tools. Three compilers exist, a native PDP11 one, a PDP11 compiler on VAX, and a native VAX compiler. The PRAXIS language was designed as a simpler more usable replacement for Ada before Ada was ever implemented but after the design had become known. Accordingly it has packages, tasking, and more.
      external link