| Plus | |
|---|---|
| Paradigm | imperative,structured |
| Developer | Alan Ballard and Paul Whaley atUBC |
| First appeared | 1976 |
| Typing discipline | static,strong,safe |
| OS | Michigan Terminal System (MTS),OS/VS1 |
| Majorimplementations | |
| IBM System/370,DECPDP-11, andMotorola 68000 | |
| Influenced by | |
| SUE, Pascal | |
Plus is a "Pascal-like" system implementation language from theUniversity of British Columbia (UBC), Canada, based on the SUE[1] system language developed at theUniversity of Toronto, c. 1971.[2][a]
Plus was developed at theUniversity of British Columbia (UBC) Computing Centre by Alan Ballard and Paul Whaley for use with and for the development of theMichigan Terminal System (MTS), but the code generated by the compiler is not operating system dependent and so is not limited to use with or the development of MTS.
The UBC Plus compiler is written largely in Plus, runs under theMichigan Terminal System (MTS) onIBM S/370 or compatible hardware or under IBM'sOS/VS1,[4] and generates code for theIBM S/370, theDECPDP-11, or theMotorola 68000 architectures.
Plus is based to a large extent on the SUE System Language[1] developed at the University of Toronto,c. 1971, which in turn had been derived, particularly in its data structure facilities, fromPascal.[citation needed]
Plus is superficially quite different from SUE or Pascal; however the underlying language semantics are really quite similar. Users familiar with theC programming language will also recognize much of its structure and semantics in PLUS.
Goals for the compiler and the Plus language include:[5]
The compiler generates extensive source listings, including cross-references. In addition, it automatically formats the source using strict rules and has a simple mark-up language for comments.
The manual,UBC PLUS: The Plus Programming Language,[5] is available. A description of the source and object libraries available for use with Plus,PLUS Source Library Definitions, is also available.[6]
The "hello, world" example program prints the string "Hello, world!" to a terminal or screen display.
%Title := "Hello world";%Include(Pluslist);%Subtitle := "Definitions";%Lower_Case := True;/* Definitions that everyone needs */%Include(Boolean, Numeric_Types, More_Numeric_Types, String_Types, More_String_Types);/* A tasteful subset of procedure definitions */%Include(Main);/* Message routine definitions */%Include(Message_Initialize, Message, Message_Terminate);%Subtitle := "Local Procedure Definitions";%Eject();definition Main variable Mcb is pointer to Stream_Type; Mcb := Message_Initialize(); Message(Mcb, "Hello, world!"); Message_Terminate(Mcb); Mcb := Null; end Main;