B
読み:ビー
外語:B: First letter of BCPL

 Cの1世代前の先祖にあたる手続き型言語。ケン・トンプソン博士により開発された。
目次

情報

概要
 Bの名は先祖言語BCPLの頭文字Bをとったところから来たとされている。ただ、これには異説も存在するようだ。
 Bは、UNIXを高級言語で記述するために作られたプログラミング言語の最初のステップであり、UNIXの反面教師となった失敗作Multicsで動作したBCPLを元に開発された。
 このBはPDP-7上で動作した。やがて研究所にPDP-11が導入され、この機能に対応するべく拡張が行なわれ、これがCとなった。

特徴

由来
 Bは、UNIXを記述するため、高級アセンブリ言語として開発された。
 BはALGOL系の言語で、ALGOLの影響を受けつつ、同系列のBCPLを参考に開発されたとされる。しかし、実際にはBCPLとは殆ど共通点はない。更に先代のCPLとはもちろん、現実にBCPLとの類似点は殆どない。文の構造の表現、文の区切り、注釈文の書き方すら共通性がない。
 FORTRANの頃から存在する、どんな言語にも共通的にありそうな表現の他には、ビット演算の演算子程度しか共通点が見られない。

独自のもの
 文の構造はBの独自の発想に基づくもので、{}で範囲を括る。現在のCでも使われている記述法は、Bで生まれたものである。ALGOL系言語でも、他の系統には見られない。
 従来であれば、begin…endといった書き方で範囲を明示することになり、現役の言語であればPascal(Delphi)に影響が残るが、この方法ではbeginやendという単語が変数やステートメントと見分けが付きにくく視認性が悪いという問題があった。Bは、その問題を{}で解決させたのである。

ALGOLからの改良
 BはALGOL系とされている。ALGOLは、文は区切り記号で1行に複数書けるが、最後は改行で区切られるという特徴があった。つまり改行の直前に区切りの記号は必要ない。これは、現在でもBASICなどに名残を見ることができる。
 しかしBは、より記述の自由度を高める選択をした。行という単位を重視せず、段下げなどにより読みやすい記述を可能とするため、文末を表わす記号を常に必要とする仕様に変更した。これが、セミコロン";"を終端記号とした始まりで、Bの後継であるCにも仕様は引き継がれている。
 これはALGOLに対する大幅な仕様変更であり、そして改良となる。B自体、さまざまな箇所でPL/Iからの影響が垣間見られるが、この終端記号の仕様についてもPL/Iからの影響であると考えることができる。

BCPLからの影響
 BがBCPLから引き継いだものは、言語仕様ではなく、哲学のみであった。それは、CPL→BCPLで仕様化された「アセンブリ言語的ななにか」である。
 CPL→BCPLのうちのBの部分ということもでき、Bの言語名がBであるのは、おそらく偶然であろうが、ある意味必然であったのかも知れない。
 言語仕様という一面だけで見ると、BCPLからの影響は少なく、BCPLの先代CPLとの間に至っては完全な断絶が存在すると言える。

再検索