B言語
[Wikipedia|▼Menu]

B言語パラダイム手続き型
設計者ケン・トンプソン
開発者ベル研究所
型付けなし
影響を受けた言語BCPL
影響を与えた言語C言語
テンプレートを表示

B言語(ビーげんご)は、AT&Tベル研究所ケン・トンプソン (Ken Thompson) によって開発されたプログラミング言語である。ケン・トンプソンがデニス・リッチー(Dennis Ritchie)監修の元で設計し、1969年頃に登場した[1]
特徴

B言語は再帰に対応し、非数値型に対応し、特定の機種に依存しない言語であり、OSや他の言語などを開発するための言語として設計された[2] 。データ型を持たない言語で、ハードのCPUレジスタに対応したワード型1種類に依存し、どのようなビット長のCPUにも対応できた。文脈によりワードは整数またはアドレスとして扱われた。ASCIIコードが一般的になり、当時ベル研究所にもDEC PDP-11が導入され、文字データ型のサポートが重要になった。B言語のような型がない言語の仕様は欠点とみなされるようになり、トンプソンとリッチーは言語を拡張して内部型とユーザー定義型をサポートし、その言語はC言語となった。

B言語で記述されたプログラムは、コンパイラによって中間コードに変換され、実行にはインタプリタを必要とした。実行時にインタプリタによって逐次処理されるため、実行速度は極めて遅かった。ただしPDP-7版は機械語を出力できるように改良された。
歴史

トンプソンは、DEC社製コンピュータPDP-7上でUNIXの開発を行っていたが、当時、UNIX上ではプログラムアセンブリ言語で記述することしかできなかった。そこでトンプソンはUNIX上で動作する高級言語の開発を始めた。トンプソンはUNIXの開発以前、Multicsの開発に携わっており、B言語は、Multics上で動作していたBCPLを元に開発された[note 1]

B言語は本質的には、トンプソンがその時代のミニコンメモリ容量に収めるために、不要と感じたコンポーネントを除去したBCPLシステムである。またトンプソンの好みに沿うような変更も行われた(たいていは、一般的なプログラムで空白以外の文字数を削減できるという方向であった[3])。BCPLにあったALGOL由来の記法は大幅に改められた。代入演算子は、ALGOL 58(英語版)で採用された:=から、ALGOL開発メンバーの1人であるハインツ・ルティスハウザーがかつてSuperplanで採用していた=に戻され、また比較演算子は=から==へ置き換えられた。

トンプソンは加減算代入演算子を発明し、x =+ yの形で実装した(C言語では順序が逆転して+=となった)。またB言語ではインクリメント、デクリメント演算子(++ and --)が導入された。演算子を前につけるか後ろにつけるかで、変更前と変更後のどちらの値が式の結果に適用されるのかを選択できた。これらの新機能は最初のバージョンのB言語には見られなかった。デニス・リッチーによれば、多くの人はDEC PDP-11で導入された自動インクリメント・自動デクリメント・アドレッシングモードのために開発されたと思う人が多いが、Bが開発されたときにはPDP-11は存在しておらず歴史的に見てありえないとしている[3]

BCPLForthと同じくB言語はマシンのワード長である1つのデータ型のみを持っていた。多くの演算子(例えば+、-、*、/)ではこれを整数として扱い、それ以外はポインタとして扱った。それ以外の部分についてはC言語の初期バージョンとよく似ていた。C言語の標準入出力ライブラリを彷彿とさせるライブラリがわずかながら存在していた[2]

初期の頃は、初期のUNIXを使用したDEC社PDP-7用とPDP-11用の実装があり、またGCOSというOSが動作するハネウェルの36ビットメインフレームの実装もあった。最初にPDP-7用のスレッデッドコードを出力する実装が開発され、次にリッチーがマシン語を出力するコンパイラをTMG(英語版)で実装した[4][5][6]。1970年にPDP-11が開発現場に導入され、スレッデッドコード版がPDP-11に移植された。アセンブラのdcとB言語自身はB言語で記述された。最初のyaccがこのPDP-11用に開発された。リッチーはこの時期にメンテナンスを引き受けていた[3][6]

B言語の型のない設計はハネウェルやPDP-7などの多くの古いコンピュータでは意味のあることであったが、PDP-11以降のほぼ全てのコンピュータがサポートしている8ビットのキャラクタデータ型にエレガントにアクセスすることが難しいことが問題になった。リッチーは1971年に言語の変更を開始し、コンパイラがマシン語を出力するように変換すると同時に、最も顕著な拡張としてデータ型を変数に追加した。1971年から1972年にかけてB言語はNew B言語へ進化し、そしてアラン・スナイダー(Alan Snyder)の強い要求によってプリプロセッサが加えられ、1972年から1973年の初期にC言語となった[3]

1973年の夏の間にPDP-11用のUNIXがC言語で書き直され、一連の努力が成し遂げられた。1972?73年の間にハネウェル635とIBM 360/370に移植する必要があり、マイク・レスク(Mike Lesk)は後にC言語の標準入出力ライブラリとなる「汎用的なI/Oパッケージ」を書いた。

B言語はC言語にほぼ置き換わった[7]


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:24 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef