Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.1 6/24/83 (MC830919); site mcvax.UUCP Path: utzoo!linus!decvax!mcvax!steven From: steven@mcvax.UUCP (Steven Pemberton) Newsgroups: net.lang Subject: The B Programming Language Message-ID: <5465@mcvax.UUCP> Date: Mon, 7-Nov-83 10:24:46 EST Article-I.D.: mcvax.5465 Posted: Mon Nov 7 10:24:46 1983 Date-Received: Tue, 8-Nov-83 20:54:39 EST Organization: Math.Centre, Amsterdam Lines: 42 There is a newsletter on the B programming language now published, and if you wish to be put on the mailing list, please mail your request to ...!{philabs, decvax}!mcvax!leo or B Group Computer Science Department CWI POB 4079 1009 AB Amsterdam, The Netherlands * B is a programming language for non-professional computer users, also of interest to experts. It is a fairly conventional language, but has high-level data-types, and is fully orientated to ease of learning and use. * B offers all the advantages of strong typing as in Pascal, but without the declarations, the types being inferred from context. * The 5 types of B, easily combined to implement other types, are: number, text (strings), compound (like Pascal records), list, and table (generalized arrays). Apart from sheer exhaustion of memory, B imposes no limits, so identifiers may have any length, numbers any magnitude, lists any size, etc. * To support top-down programming, B has refinements, which behave like parameterless light-weight procedures. * Nesting is indicated by indentation, so there is no need for begin...end, nor can contradiction between indentation and program structure arise. * Global variables are permanent in B, and since values like lists and tables may be extended at will, there is no need for files and file-handling. For further details, see "An Overview of the B Programming Language" by Leo Geurts, in SIGPLAN Notices December 1982. To give a taste of B, here is code that takes a table mapping countries to capitals (eg capital['Nederland'] = 'Amsterdam'), and produces the inverse table (so that afterwards country['Amsterdam'] = 'Nederland'): PUT {} IN country FOR land IN keys capital: PUT land IN country[capital[land]] B has been running on Vaxes since 1981, and a portable implementation, written in C, will be available shortly. Information from the above address. Finally: the name 'B' is a working title: B is unrelated to C's predecessor.