B言語は、1969年頃にAT&T
ベル研究所の
ケン・トンプソンによって開発された
プログラミング言語です。デニス・リッチーの監修のもと、
UNIXオペレーティングシステムの開発における課題を解決するために設計されました。当時、
UNIXにおけるプログラミングはアセンブリ言語に頼っていましたが、より効率的で高水準な言語の必要性からB言語の開発が始まりました。
B言語の特徴:簡潔さとハードウェアへの密着性
B言語は、BCPLという
プログラミング言語をベースに、ミニコンピュータの限られたメモリ容量を考慮して開発されました。そのため、BCPLにあった複雑な機能を排除し、簡潔で効率的な設計を目指しました。その結果、B言語はデータ型を持たず、ハードウェアのCPUレジスタに対応したワード型のみを使用するという独特の特徴を持つようになりました。ワード型は、文脈に応じて
整数またはアドレスとして扱われ、様々な
ビット長のCPUに対応できる柔軟性を備えていました。
この簡潔さは、プログラムサイズを小さく抑えることに繋がり、当時の限られたメモリ容量を持つコンピュータ上での実行を可能にしました。しかし、データ型を持たないという設計は、プログラムの可読性や保守性の低下という欠点も併せ持ちました。この点が、後に
C言語へと発展する大きな要因の一つとなります。
B言語は再帰呼び出しをサポートし、非数値型のデータも扱うことができました。OSやコンパイラなどのシステム
ソフトウェア開発を主な用途として設計されており、特定の機種に依存しない設計がなされていました。初期の
UNIXの多くは、B言語で記述されていました。
B言語の実装と進化:PDP-7からPDP-11、そしてC言語へ
初期のB言語は、DEC社のPDP-7というコンピュータ上で動作するよう設計されました。PDP-7向けの実装では、最初にスレッデッドコードを出力するコンパイラが開発され、その後、デニス・リッチーによってマシン語を出力するコンパイラが開発されました。
1970年には、より高性能なPDP-11が
ベル研究所に導入され、B言語もPDP-11に移植されました。アセンブラやB言語コンパイラ自体もB言語で記述され、再帰的な開発が行われました。このPDP-11版のB言語は、
ケン・トンプソンによって記述された『Users' Reference to B』で詳細に解説されています。
しかし、B言語の型のない設計は、PDP-11のような、8
ビットの文字データ型をサポートするコンピュータにおいては、効率的な文字処理を困難にするという問題点がありました。この問題点を解決するため、また、より強力で柔軟な言語の必要性から、B言語は改良と拡張が続けられました。
1971年から1972年にかけて、B言語は「New B」へと進化し、その後、アラン・スナイダーの強い要望によりプリプロセッサが追加されました。そして、1972年から1973年の初期にかけて、B言語はデータ型などの機能強化を経て、
C言語へと発展しました。
C言語は、B言語の欠点を克服し、より安全で、効率的なプログラミングを可能にしました。
1973年の夏には、PDP-11用の
UNIXが
C言語で書き直され、
C言語の有用性が実証されました。その後も、
ハネウェル635やIBM 360/370などの異なるアーキテクチャへの移植が行われ、
C言語は広く普及していきました。
B言語の遺産:C言語への貢献とその後
B言語は
C言語に取って代わられましたが、その歴史的意義は非常に大きいです。
C言語の設計思想や多くの機能はB言語から受け継がれており、
C言語の誕生にはB言語が大きな役割を果たしました。特に、加減算代入演算子やインクリメント・デクリメント演算子の導入は、B言語から
C言語へと受け継がれ、現在でも広く使われています。
B言語は、
C言語への進化という重要な役割を終えた後も、一部の
組み込みシステムや、
ハネウェルの
メインフレームGCOSなど、特定の環境で1990年代頃まで利用され続けました。AberMUDという有名なマルチユーザーダンジョンゲームも、B言語で記述されていたことで知られています。B言語は、
C言語という後継言語の成功によってその存在感は薄れてしまいましたが、コンピュータの歴史における重要なマイルストーンの一つとして、その功績は決して忘れられることはありません。