公式に標準化されました。最近では、その使用は非常に多岐に広がりました。一般に使用される言語であります。騒然とした時代でした。撤退しつつありました。高価すぎるものだけであることを信じるに至っていました。率いる非公式のグループは代案を調査し始めました。自分の設計によって構築された快適な計算する環境を築きたかったようです。革新的な特徴を盛り込んでました。他のものを除外しました。その他のエレメントを保留しました。高水準言語を書くことに集中したのです。含むその他の言語も使用していました。失うことを残念に思っていました。その後これへの関心は起こりました。彼にとって有用なソフトウェアはない機械でした。システムを書きました。アセンブラ用の一組ののマクロを使用しました。判読可能な紙テープを生成しました。プログラムを書き、テストすることが出来るようになりました。それは式を評価し、対応するビットを立てものでした。その生成物は直接実行できました。それはアセンブラの出力です。コンパイラーを書くための言語です。システム・プログラミング言語が必要であることを決心しました。呼ぶ彼自身の言語を作成しました。短縮を表わすのでしょう。ちなんで名付けられました。いくつかの興味深いプロジェクトで使われました。私たちはそれに精通しました。熱中するようになる人々の集団が共に選択した言語でした。小さく、簡潔に記述されます。単純なコンパイラーで素直にコード変換する事ができます。入出力や他の相互作用はライブラリールーチンに依存します。ライブラリーのプロシージャを使用します。高水準であると言えます。files.BCPL、BおよびCは、多くの詳細において構文上異なります。広く、それらは類似しています。プログラムは、世界的な宣言および関数(手続き)宣言のシーケンスから成ります。手続きはBCPLの中で入れ子にすることができるが、手続きを含んでいることの中で定義された静止でないオブジェクトに言及してはなりません。BとCはより多くの厳しいものを課することによりこの制限を回避します:すべての入れ子の手続きはありません。言語(Bの最も初期のバージョンを除いて)の各々は認識します。個別の編集、またテキストを含んでいるための手段を提供する、から、ファイルと命名されました。C.BCPLのいくつかの構文的と語いのメカニズムは、BとCのものより上品でより規則的です。BCPLの手続きおよびデータ宣言はより一定の構造を持っています、また、それは、ループするより多くの完全なセットを供給します、構築します。BCPLプログラムは文字の限界を定められていない流れから概念的に供給されますが、利口な規則はライン境界で終わるステートメントの後にほとんどのセミコロンの発音が省かれることを可能にします。BとCはこの便宜を省略し、セミコロンを備えたほとんどのステートメントを終了します。違いにもかかわらず、BCPLのほとんどのステートメントおよびオペレーターは、対応するBおよびCへ直接写像します。formBCPLとBの間の構造の差のうちのいくつかは中間のメモリに対する制限から生じました。BCPL宣言は形式をとるかもしれません。exampleここでコマンドによって表わされるプログラム・テキストは全体の手続きを含んでいます。P3既知の内部の手続きP1です。同様に、BCPLは、値を産出する表現へ1グループの宣言およびステートメントをパッケージにすることができます。C.BCPLコンパイラーは容易にそのようなものを扱いました、構築する、出力を生産する前にメモリ中の全プログラムの解析された表現を格納し分析することによって。Bコンパイラーに対する記憶制限は、出力ができるだけ早く生成された、1-パス技術を要求しました。これを可能にした構文的なデザイン変更はCへ前に運ばれました。programmer.BCPLのあるそれほど楽しくない様相はそれ自身の技術的な問題に借りがあり、Bのデザインの中で意識的に回避されました。BCPLは別々にコンパイルされたプログラム間に通信するために「グローバルベクトル」メカニズムを使用します。このスキームでは、プログラマが、明示的にグローバルベクトルの中で数値のオフセットに個々の外部的に目に見える手続きおよびデータ・オブジェクトの名前を関連させます;リンケージはこれらの数値オフセットの使用によりコンパイルされたコードの中で遂行されます。Bは、全プログラムがコンパイラーに突然提示されるべきであると主張することにより、この不便を最初に回避しました。Bの後のインプリメン?eーションおよびCのすべてのもの、ファイルに生じる外部名前がコンパイルしたと決心するためにプログラマのオフセットを割り当てる負担を置く代わりに、従来の結合物を別々に使用します。=割り当てのために、の代わりに:。同様に、Bは使用します。/**/BCPLが使用するところで、コメントを囲むこと//、ラインの終了までのテキストの無視。PL/私の遺産はここで明白です。(C++はBCPLコメント協定を生き返らせました。)フォートランは、宣言のシンタックスに影響を及ぼしました:B宣言は類似の明細書作成者から始まります。自動車あるいは静止、名前のリストおよびCによって続いた、このスタイルに続いただけでなく宣言の最初にそのタイプ・キーワードを置くことにより、それを装飾しました。change.リチャーズの本の中でドキュメント化されたBCPL言語間の一部の違いを除く[リチャーズ79]また、Bは慎重でした;私たちは、BCPL[リチャーズ67]の初期のバージョンから出発しました。switchonから漏れます。私たちが1960年代にそれを学習した時、ステートメントは言語の中にありませんでした、それで破損を過負荷をかけることキーワードBおよびCスイッチから漏れることステートメント分岐することに借りがあります。意識的な変更ではなく発展。remainedした核心、完全。両方の言語は型がないか、あるいは単一のデータ・タイプ、「単語」あるいは「セル」(固定長ビット・パタン)がややあります。これらの言語のメモリはそのようなセルのリニア・アレイから成ります。セルの内容の意味は、応用のオペレーションに依存します。その+オペレーターは、例えば、機械の整数を使用するそのオペランドが指示を加えると単に付け加えます。他の演算オペレーションは、それらのオペランドの実際の意味に等しく気づいていません。メモリがリニア・アレイであるので、この配列中のインデックスとしてセルの値を解釈することは可能です。BCPLはこの目的にオペレーターを供給します。オリジナルの言語では、それが綴られたrvでした、そしてその後!Bが単項のものを使用している一方*。指示されたセルの内容を表現での値あるいは割り当ての目標のいずれかと呼んでください。writesBCPLとBの中のポインターが単にメモリ配列中の整数索引であるので、それらの上の算術は意味があります:場合pセル、その後p+1のアドレスです。次のセルのアドレスです。この協定は両方の言語の配列の意味論の根拠です。expression結果は同じです:指定されたセルVその後割り付けられる、10個の接触するセルの別のグループはわきに置かれます、また、これらの1番めのメモリ・インデックスはVに入れられます。Vそしてi、またVの後にi—th位置を参照します。両方BCPLおよびBは各々、そのような配列アクセスを甘くするために特別の記法を加えます;Bでは、等価な表現がそうです。way.配列へのこのアプローチはその時にさえ異常でした;Cは、その後さらに従来でない方法でそれを同化するでしょう。terminator.BCPL、BあるいはCのどれも、言語で文字データを強く支援しません;各々は非常に整数のベクトルのようにストリングを扱い、少数の協定による総則を補足します。BCPLおよびBの両方では、ストリングのリテラルが、セルに詰められて、ストリングの特徴で初期化された静止のエリアのアドレスを表示します。BCPLでは、第1のパックされたバイトが、ストリングに文字の数を含んでいます;Bでは、計算とストリングはありません、特別の特徴によって終了する、どのB、綴られた「*e「。string.BCPLストリング中の個々の特徴は、別の配列、1個のセル当たり1文字および、次に、それをその後詰め直すことへストリングを広げることにより通常操作されました;Bは対応するルーチンを提供しました。人々は、ストリングの中でアクセスした他のライブラリー機能あるいは交換された個人文字をよりしばしば使用しました。それ自身で書き直しました。そのサイズを縮小しました。一般化された代入操作を導入しました。