Martin Richards's BCPL Reference Manual, 1967

I dug up a copy of an old BCPL manual. Designated Memorandum M-352 of MIT Project MAC, it is dated July 21, 1967. Thanks to the kind permission of its author, it is available for study.
私は1部の古いBCPLマニュアルを掘り出しました。MITプロジェクトMACのメモM-352と呼ばれて、日付は1967年7月21日にそれにつけられます。その著者の親切な許可のおかげで、それは研究に利用可能です。

Contents

Presented here is a (186KB) Postscript or PDF (smaller at 41K) version of the edited result of OCR of the document. A gzip-compressed version of the Postscript at 31K is available as well. The OCR was done by the Textbridge package; editing and Postscript output was done by me with Word 7.0. For the scholar, there is also a big (2.7MB) TIFF representation of the scanned image, so you can check the transcription.
ここに示された、1つの(186KB)追伸またはPDF(41Kでより小さい)ドキュメントのOCRの編集された結果のバージョン。31Kに追伸のgzipを圧縮したバージョンは同様に利用可能です。OCRはTextbridgeパッケージによって行われました;編集および追伸出力は私によって単語7.0をやめました。学者にとって、さらに走査されたイメージの大きな(2.7MB)TIFF表現があります。したがって、転写をチェックすることができます。

Recently, Karl Kleine at Fachhochschule Jena, Germany, made available another scan of a version of this same document, with the same contents, including the date and memo number on its title page. The interesting thing is that his document was produced on a different typewriter! His version was done on a typewriter with a larger type pitch, and there are fewer characters on each line, so the pagination is different. Apparently the contents are identical (including the hand-drawn characters). His version, however, includes the example programs at the end that are missing from my copy. Neither of us quite understands yet why this needed to be done. His rendition is available at his history page, which also has early manuals for several other languages, including Fortran, Algol 60, Pascal, and Modula-2.
最近、Fachhochschuleイェーナのカール・クライン(ドイツ)は、この同じドキュメントのバージョンの別の走査を利用可能にしました、日付およびメモ番号を含む同じ内容で?Aその表題紙上で。面白いことは、彼のドキュメントが異なるタイプライター上で作成されたということです!彼のバージョンは、より大きなタイプ・ピッチを備えたタイプライター上で終わりました。また、各ライン上に、より少数の特徴があります。したがって、ページ付けは異なります。明らかに、内容は同一です(手に引かれた文字を含んで)。しかしながら、彼のバージョンは、私のコピーから見当たらない終わりで例プログラムを含んでいます。私たちのどちらも、なぜこれが終わる必要があったかまだ全く理解しません。彼の演出は、彼の歴史ページ(さらに、それはフォートラン、アルゴル60、パスカルおよびモジュラ2を含む他のいくつかの言語用の初期のマニュアルを持っている)に利用可能です。

The paper is a xerographic copy of a typewritten memo. In (copied) handwriting at the top of the front page are the initials PGN, for Peter G. Neumann (he of the Risks Digest: at the time he was the technical leader of the Multics project at Bell Labs). At the lower right is the notation "Copies to [Ken] Thompson, [Doug] McIlroy, [Bob] Morris," evidently Neumann's distribution list.
論文はタイプされたメモのゼログラフィーのコピーです。の中で(コピーされた)一面の一番上の筆跡、ピーターG.ノイマン(彼、危険の、次のものを要約する:その時に、彼はベル研究所のMulticsプロジェクトの技術的なリーダーでした)のために、頭文字PGNです。より低いものでは、右が記法です「[ケン]トムプソンへのコピー、[ダグ]McIlroy、[ボブ]モーリス。」明白にノイマンの分配リスト。

It was a bit resistent to OCR because some of the characters were evidently inserted by hand, particularly a section symbol (those funny stacked S's that might print as § in your browser) used in its "publication" syntax to indicate the start of a block. The corresponding symbol that closes a block is a section symbol with a vertical overstriking line. In the Postscript redaction, I represent it by an understruck section symbol. Likewise, certain operators like not-equivalent are not present in the available font; they're italicized in square brackets. And I used those same brackets to describe a couple of diagrams whose rendition is omitted.
文字のうちのいくつかが、手(特にブロックのスタートを示すためにその「出版」シンタックスの中で使用されるセクション・シンボル(あなたのブラウザー中の§として印刷する、奇妙な積み重ねられたS))によって明白に挿入されたので、それはOCRへのビットresistentでした。ブロックを閉じる対応するシンボルは垂直の重ね打ちするラインを備えたセクション・シンボルです。追伸改訂では、私がunderstruckセクション・シンボルによってそれを表わします。同様に、ない等価物のようなあるオペレーターは利用可能なフォントにおいて出席していません;それらは角括弧の中でイタリック体にされます。また、私は、その演出が省略される2、3の図形について記述するためにそれらの同じブラケ?bトを使用しました。

The document was also marked up somewhat in colored pencil. Some of the notations are apparently notes, probably by Rudd Canaday. Some seem to be "check off" marks on bits of the syntax, as if he (or someone) was comparing code to the language definition.
ドキュメントも色鉛筆中の若干を上へマークされました。見たところでは、記法のうちのいくつかは、ラッドCanadayによって恐らくノートです。いくらかは、そうであるように見えます「チェックする、から」シンタックスのビットについた跡、あたかも彼(あるいは誰か)が言語定義とコードを比較していたかのように。

The Postscript version adheres fairly closely to the layout of the original except that I did not try too hard to fiddle the indentation to correct the mysterious beliefs and conventions of Textbridge and Word. Word division in running text is not preserved, and line-spacing is only approximated. Page divisions are preserved.
私があまりにも一生懸命努力しなかったので、Textbridgeと言葉の不可解な確信および協定を修正する刻み付けをバイオリンで弾くことができなかったという点を除いて、追伸バージョンは、オリジナルのレイアウトにかなり緊密に付着します。テキストの実行中の単語部門は保存されません。また、ライン間隔は単に接近されます。ページ部門が保存されています。

Besides errors that I introduced in the editing, there are also a few errors in the original, some doubtless introduced by the original typist. For example, on p. 4, a comment introduced by // spills across two lines. I generally resisted amending the original, except that in a few places an obviously-meant "0" has been substituted for a lower-case "o".
私が編集に導入したエラーに加えて、さらにオリジナル(オリジナルのタイピストで確かに開始されたいくらか)における少数のエラーがあります。例えばpの上で。4、2行のラインを横切って//流出で開始されたコメント.私は明白に意味された「0」がそうだった少数の場所のそれが、小文字「o」の代わりになったという点を除いて、オリジナルのものを修正することに一般に抵抗しました。

Context

BCPL has had a productive life of its own, but my interest in it is more in the basis it provided for the development of the B language and then in the history of C. This influence is traced, with gratitude, in the latter paper. As it tells, the BCPL language definition when B was developed was just the manual recorded here, together with the compiler that Richards contemporaneously wrote for the CTSS system.
BCPLは、それ自身の生産的な生活を行っていました。しかし、それへの私の関心は、B言語の開発にそれが供給した基礎において、その後Cの歴史においてより多くです。この影響は後の論文の中で謝意と共にトレースされます。それが伝えるとともに、Bが開発されていた時、BCPL言語定義は単にマニュアルでした、リチャーズがCTSSシステムのために同時に書いたコンパイラーと一緒に、ここに記録しました。

BCPL changed somewhat from that time; its definition became clearer and the language more useful. But in observing the divergences, it's useful to record the precise point on the stem from which the B and then the C branch sprouted. Martin Richards's home page has links for obtaining a current version of a compiler and examples of the language.
多少その時間から変更されたBCPL;その定義はより明らかになりました、そして言語、さらに、有用。しかし、分岐を観察する際に、それは軸に正確なポイントを記録するのに有用です、どれ、B、また、その後、C枝は発芽しました。マーチン・リチャーズのホームページは、コンパイラーの現行版および言語の例を得るためにリンクを持っています。

The modern version of BCPL is described in the book by Richards and Colin Whitby-Strevens, "BCPL--the language and its compiler," ISBN 0521286816, Cambridge University Press, 1981. This now seems to be out of print, although until recently some of the online book stores listed it. Thanks to the continuing generosity of Martin Richards, and with the assistance of Guy Haworth, I received in April 2001 my own copy of the book from the last of Richards's personal stock.
BCPLの現代版、リチャーズとコリンのWhitby-Strevensによる本に記述される、「BCPL--言語およびそのコンパイラー--。」ISBN、ケンブリッジ大学出版社(1981年)0521286816。これは、今印刷が欠乏するように見えます、であるが、最近、オンライン本店のうちのいくつかがそれをリストするまで。マーチン・リチャーズの持続的な寛大のおかげで、およびガイ・ホーワースの援助で、私は、2001年4月にリチャーズの個人のストックの最後から本の自分のコピ?[を受け取りました。

This early manual describes (or perhaps one might say, "alludes to") the lexical representation of real programs in three ways. There is a canonical representation using uppercase words like NUMBER, NAME, COND, SECTBRA for terminal symbols of the grammar. The syntax as given, however, uses a sort of "publication style," rich with symbols and underlined keywords; it recalls Algol 60 with its publication language intended for journals, but in practice punched on cards, paper tape, or available terminals with a less-rich symbol set. This third style, the one actually used in the compiler on CTSS, is only hinted at and but briefly illustrated in the examples in the document.
あるいは、恐らく、人は、3つの方法にこの初期のマニュアルが実際のプログラムの語いの表現について記述すると言うかもしれません、「言及する、に」正統の表現が、NUMBER、NAME、COND(文法のターミナルのシンボル用のSECTBRA)のような大文字言葉を使用しています。しかしながら、与えられるようなシンタックスは一種の「出版スタイル」(シンボルおよび強調されたキーワードで豊富)を使用します;それは、それほど豊富でないシンボル・セットを備えた、カード、紙テープあるいは利用可能なターミナルにパンチされて、ジャーナル用に、だが実際上意図したその出版言語でアルゴル60をリコールしま?キ。この第3のスタイル(CTSSの上でコンパイラーの中で現実に使用されるもの)は、単に暗示されます、しかし簡潔にドキュメント中の例において例証されました。

These lexical details changed at various times both in Richards's own usage and in our rendition of his compiler at Bell Labs. Richards's first BCPL compiler was written using the 6-bit BCD character set on CTSS, and adapted shortly thereafter to use the characters available on the IBM "golf-ball" 1050 and 2741 terminals. At about the same time, CTSS was beginning to adapt to the ASCII character set for Multics development.
これらの語いの詳細はベル研究所で、リチャーズの自己の使用法の、および彼のコンパイラーの私たちの演出の様々な時に変わりました。リチャーズの最初のBCPLコンパイラーはCTSSの上で6ビットのBCD文字セットを使用して、書かれ、IBM「ゴルフボール」1050と2741ターミナルで利用可能な特徴を使用するためにすぐ後に適応されました。ほぼ同じ時に、CTSSは、Multics開発のためのASCII文字セットに適合し始めて?「ました。

Some of the lexical conventions actually used in early BCPL were directly adopted into B; some more recent ones may owe to back-influence from C. For example, the SECTBRA and SECTKET symbols, written as the section-sign and overstruck section-sign in the manual's syntax, were already represented as $( and $) even in the compiler that Richards wrote on CTSS. In some, but not all, of the example programs that Richards provides today, the canonical symbols are written {} as in B and C.
初期のBCPLの中で現実に使用される語いの協定のうちのいくつかは、Bへ直接採用されました;あるより最近の人はCからの後ろに影響に借りのあるかもしれません。例えば、マニュアルのシンタックスの中で、セクションサインおよび重ね打ちされたセクションサインとして書かれたSECTBRAとSECTKETのシンボルは、リチャーズがCTSSに書いたコンパイラーでさえ$(また$)として既に表わされました。すべてではなくいくらかで、リチャーズが今日提供する例プログラムのうち、正統のシンボルはBとCでのような書かれた{}です。

Similarly the operators with formal name LOGAND and LOGOR were represented in this manual as the propositional calculus characters resembling /\ and \/, but were actually typed (in the compiler of 11 Sept. 1967) usually as keywords logand and logor. However in some parts & was already used for LOGAND. In B they definitively were & and |. They are now visible too in modern BCPL, and almost certainly were adopted very soon into barely-past-1967 BCPL along with other obvious representations like > < for the gt lt used by and accepted by the compiler in 1967. But the particular notebook I have, and the manual and compiler listing I have, date between July and November 1967 and do not record them yet.
同様に、形式上の名前LOGANDおよびLOGORを持ったオペレーターは、/¥と¥/に似ている命題算文字としてこのマニュアルにおいて代表されたが、キーワードlogandおよびlogorとして現実に通常タイプされた(1967年9月11日のコンパイラーの中で)。いくつかの部分で(しかしながら)&既にLOGANDのために使用されました。Bでは、それらが決定的にそうでした&そして|。それらは今また現代のBCPLにおいて目に見えて、他の明白な抗議と共にかろうじて過去の-1967 BCPLへほとんど確かに非常にすぐに採用されました、のように><コンパイラーによって使用され、1967年にコンパイラーによって容認されたgt ltのために。しかし、私が持っている特別のノート、およびIをリストするマニュアルおよびコンパイラーは持っており、1967年7月および11月の間に日付を持ち、それらをまだ記録しません。

Important semantic issues remained unresolved in the 1967 manual, for example the actual meaning of the LOGAND and LOGOR operators. The compiler in 1967 distinguished between & | used in `truth-value' contexts and ordinary value contexts; in the first context they were handled as sequential tests, in the second as bit operations. The manual doesn't talk about this. The difficulty of explaining the situation led, several years later, to the separation of the C && || operators from & |.
重要な意味的な問題は、1967年のマニュアル(例えばLOGANDとLOGORのオペレーターの実際の意味)において未決着のままでした。&の間で識別された1967年のコンパイラー|「真理値」情況の中で使用された、そして通常。値情況;第1の情況では、それらがビット演算としての第2に連続するテストとして扱われました。マニュアルはこれについて話しません。状況について説明する困難は、年(数)後に&からのC&&||オペレーターの分離に、結びつきました|。

Some of the other lexical or similarly low level changes that happened over the years include
その数年にわたって起こった語い、同様にロー・レベルの変更が含んでいる他方のうちのいくらか


Fiddled April, 2001, to boast about getting the book from Richards; last modified July 2002 to refer to the Kleine material.