BLISS

BLISS
Paradigm Structured, imperative (procedural)
Designed by W. A. Wulf, D. B. Russell, A. N. Habermann
Developer Carnegie Mellon University
First appeared 1970
Stable release
BLISS-64
Typing discipline Typeless
OS Cross-platform: PDP-10, PDP-11, VAX, DEC PRISM, MIPS, DEC Alpha, Intel IA-32, Intel IA-64
Website pdp-10.trailing-edge.com/bb-m836d-bm/
Dialects
Common BLISS
Influenced by
ALGOL

BLISS is a system programming language developed at Carnegie Mellon University by W. A. Wulf, D. B. Russell, and A. N. Habermann around 1970. It was perhaps the best known systems programming language right up until C made its debut a few years later. Since then, C took off and BLISS faded into obscurity. When C was in its infancy, a few projects within Bell Labs were debating the merits of BLISS vs. C.

BLISS is a typeless block-structured language based on expressions rather than statements, and includes constructs for exception handling, coroutines, and macros. It does not include a goto statement.

The name is variously said to be short for "Basic Language for Implementation of System Software" or "System Software Implementation Language, Backwards". It was sometimes called "Bill's Language for Implementing System Software", after Bill Wulf.

The original Carnegie Mellon compiler was notable for its extensive use of optimizations, and formed the basis of the classic book The Design of an Optimizing Compiler.

DEC developed and maintained BLISS compilers for the PDP-10,[1] PDP-11,[1] VAX,[1] DEC PRISM,[2] MIPS,[1] DEC Alpha,[1] and Intel IA-32,[1] The language did not become popular among customers and few had the compiler,[3] but DEC used it heavily in-house into the 1980s; most of the utility programs for the VMS operating system were written in BLISS-32. After its acquisition of DEC, Compaq developed and maintained a BLISS compiler for Intel IA-64.[1]

Language description

BLISS has many of the features of other modern high-level languages. It has block structure, an automatic stack, and mechanisms for defining and calling recursive routines ... provides a variety of predefined data structures and ... facilities for testing and iteration ...

On the other hand, BLISS omits certain features of other high-level languages. It does not have built-in facilities for input/output, because a system-software project usually develops its own input/output or builds on basic monitor I/O or screen management services ... it permits access to machine-specific features, because system software often requires this. BLISS has characteristics that are unusual among high-level languages. A name ... is uniformly interpreted as the address of that segment rather than the value of the segment ... Also, BLISS is an "expression language" rather than a "statement language".

This means that every construct of the language that is not a declaration is an expression. Expressions produce a value as well as possibly causing an action such as modification of storage, transfer of control, or execution of a program loop. For example, the counterpart of an assignment "statement" in BLISS is, strictly speaking, an expression that itself has a value. The value of an expression can be either used or discarded in BLISS ... Finally, BLISS includes a macro facility that provides a level of capability usually found only in macro-assemblers.

Bliss Language Manual, Digital Equipment Corporation (1987)[4]

The BLISS language has the following characteristics:

Q = (IF .Z GTR 0 THEN .Z ELSE -.Z);

Source example

The following example is taken verbatim from the Bliss Language Manual:[4]

MODULE E1 (MAIN = CTRL) =
BEGIN
FORWARD ROUTINE
    CTRL,
    STEP;
ROUTINE CTRL =
!+
! This routine inputs a value, operates on it, and
! then outputs the result.
!-
    BEGIN
    EXTERNAL ROUTINE
        GETNUM,     ! Input a number from terminal
        PUTNUM;     ! Output a number to terminal
    LOCAL
        X,          ! Storage for input value
        Y;          ! Storage for output value
    GETNUM(X);
    Y = STEP(.X);
    PUTNUM(.Y)
    END;
ROUTINE STEP(A) =
!+
! This routine adds 1 to the given value.
!-
    (.A+1);
END
ELUDOM

Versions

Notes

  1. 1 2 3 4 5 6 7 Brender, Ronald F. (2002). "The BLISS programming language: a history" (PDF). Software: Practice and Experience. 32 (10): 955–981. doi:10.1002/spe.470.
  2. MacLaren, Don (August 27, 1987). "DECWest Compiler Project, Description, and Plan" (PDF).
  3. da Cruz, Frank (1987-09-16). "News about Kermit Programs for VAX/VMS". Info-Kermit Digest (Mailing list). Kermit Project, Columbia University. Retrieved 3 March 2016.
  4. 1 2 Bliss Language Manual, Digital Equipment Corporation (1987)

References

Downloads

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.