B
読み:ビー
外語:B: First letter of BCPL
C
の1世代前の先祖にあたる
手続き型
言語。ケン・トンプソン博士により開発された。
目次
情報
概要
特徴
由来
独自のもの
ALGOLからの改良
BCPLからの影響
情報
枠組み ‐
手続き型
、命令型
初出年 ‐ 1970(昭和45)年
設計者 ‐
ケン・トンプソン
開発者 ‐
AT&T
ベル研究所
最新版 ‐ (不明)
言語影響関係
被影響 ‐
ALGOL
、
PL/I
、
BCPL
加影響 ‐
C
主要動作環境 ‐
UNIX
(
PDP-7
、PDP-11)
概要
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との間に至っては完全な断絶が存在すると言える。
再検索