Jump to content

BCPL: Difference between revisions

From EDM2
No edit summary
Line 1: Line 1:
==Description==
==Description==
BCPL or "Basic Combined Programming Language" is a typeless programming language in the [[Algol]] family, a direct descendant of [[CPL]] and a precursor to [[C]] and [[C++]] although its syntax is more in line with other Algol languages than the "keyboard oriented" C.
BCPL or "Basic Combined Programming Language" is a [[typeless]] programming language in the [[Algol]] family, a direct descendant of [[CPL]] and a precursor to [[C]] and [[C++]] although its syntax is more in line with other Algol languages than the "keyboard oriented" C.


BCPL's main claim to fame is that it was used to write the main portions of the [[Amiga]] operating system in the 80's (Actually based on the earlier BCPL OS, TripOS), the highly influential but by now largely forgotten CDOS networked operating system a decade earlier, but the latter heavily influenced the development of [[TCP/IP]] and the Internet, and the Xerox Alto OS, the first operating system with a windowing system and mouse control.
====BCPL as an OS tool====
Although when it was introduced it was presented more as a tool to write compilers for other languages with, BCPL's main claim to fame is that it was used to write the main portions of the [[Amiga]] operating system in the 80's (Actually based on the earlier BCPL OS, TripOS), the highly influential but by now largely forgotten CDOS networked operating system a decade earlier, but the latter heavily influenced the development of [[TCP/IP]] and the Internet, and the Xerox Alto OS, the first operating system with a windowing system and mouse control.


Although many people saw BCPL as outdated and quaint after the introduction of C there were quite valid reasons for using it in preference to C when writing operating systems. Early versions of C were somewhat propriety and although AT&T shared source code with American universities and gave them permission to use their toolchains, competing businesses and foreign institutions did in general not get such permissions, early versions of C also lacked some of the system programming concepts that existed in BCPL. People were less than happy with the C syntax not only the inconsistencies and anachronisms, but the fact it is designed to be faster to code on the [[DEC]] [[VAX]] minicomputers that the original authors used, the problem was that the DEC keyboard layout differed quite a bit from the IBM standard and foreign keyboards more still, so much like [[PERL]] the features that were intended to make it faster actually made it slower for everyone except a small subset of the user base. And perhaps most surprisingly when people started porting programs from BCPL to C they found that rather than being faster the C code was actually slower, but the compilers simply could more easily take advantage of structures in BCPL source code than in C code and it was not until the 90's when highly optimising C compilers started to arrive on the market that it caught up.
Although many people saw BCPL as outdated and quaint after the introduction of C there were quite valid reasons for using it in preference to C when writing operating systems. Early versions of C were somewhat propriety and although AT&T shared source code with American universities and gave them permission to use their toolchains, competing businesses and foreign institutions did in general not get such permissions, early versions of C also lacked some of the system programming concepts that existed in BCPL. People were less than happy with the C syntax not only the inconsistencies and anachronisms, but the fact it is designed to be faster to code on the [[DEC]] [[VAX]] minicomputers that the original authors used, the problem was that the DEC keyboard layout differed quite a bit from the IBM standard and foreign keyboards more still, so much like [[PERL]] the features that were intended to make it faster actually made it slower for everyone except a small subset of the user base.
 
BCPL is also tiny, there were implementations that ran in 16k and it was for that reason simpler to [[bootstrap]] on a new system. And perhaps most surprisingly when people started porting programs from BCPL to C they found that rather than being faster the C code was actually slower, but the compilers simply could more easily take advantage of structures in BCPL source code than in C code and it was not until the 90's when highly optimising C compilers started to arrive on the market that it caught up.


==A list of OS/2 implementations of BCPL==
==A list of OS/2 implementations of BCPL==

Revision as of 18:58, 30 December 2014

Description

BCPL or "Basic Combined Programming Language" is a typeless programming language in the Algol family, a direct descendant of CPL and a precursor to C and C++ although its syntax is more in line with other Algol languages than the "keyboard oriented" C.

BCPL as an OS tool

Although when it was introduced it was presented more as a tool to write compilers for other languages with, BCPL's main claim to fame is that it was used to write the main portions of the Amiga operating system in the 80's (Actually based on the earlier BCPL OS, TripOS), the highly influential but by now largely forgotten CDOS networked operating system a decade earlier, but the latter heavily influenced the development of TCP/IP and the Internet, and the Xerox Alto OS, the first operating system with a windowing system and mouse control.

Although many people saw BCPL as outdated and quaint after the introduction of C there were quite valid reasons for using it in preference to C when writing operating systems. Early versions of C were somewhat propriety and although AT&T shared source code with American universities and gave them permission to use their toolchains, competing businesses and foreign institutions did in general not get such permissions, early versions of C also lacked some of the system programming concepts that existed in BCPL. People were less than happy with the C syntax not only the inconsistencies and anachronisms, but the fact it is designed to be faster to code on the DEC VAX minicomputers that the original authors used, the problem was that the DEC keyboard layout differed quite a bit from the IBM standard and foreign keyboards more still, so much like PERL the features that were intended to make it faster actually made it slower for everyone except a small subset of the user base.

BCPL is also tiny, there were implementations that ran in 16k and it was for that reason simpler to bootstrap on a new system. And perhaps most surprisingly when people started porting programs from BCPL to C they found that rather than being faster the C code was actually slower, but the compilers simply could more easily take advantage of structures in BCPL source code than in C code and it was not until the 90's when highly optimising C compilers started to arrive on the market that it caught up.

A list of OS/2 implementations of BCPL

Libraries

Editors with BCPL support

A list of DOS implementations of BCPL

A list of BCPL implementations that run under WinOS/2

A list of BCPL implementations that run under Java

A list of BCPL implementations in JavaScript

Publications

Local articles

Tutorials and other learning material

Standards

BCPL history