質問: 1972年にアメリカのAT&Tベル研究所で開発された、コンピューターのプログラミング言語は何?
回答: C言語

タイトル: オペレーティングシステムの歴史
1960年代末ごろAT&Tのベル研究所でUnixの開発が始まった。初期の版は無料で容易に入手でき、修正も容易だったため、広く流布することになった。それはまたAT&Tの子会社群での調達要件となった。C言語で書かれていたため、新たなアーキテクチャでもC言語さえサポートすれば、移植は容易だった。この移植性の良さから、第二世代のミニコンピュータや第一世代のワークステーションで広く採用されていった。広く採用されたため、各種ハードウェアプラットフォームをまたがって概念的に同一なオペレーティングシステムを使用するという考え方を例証することになった。現在のUNIXはプロプライエタリソフトウェアであり、ライセンス料を払える企業や組織だけがそれを使っているが、Unixはオープンソース運動の起源のひとつとなった。また、DECは16ビットのPDP-11向けにいくつかのオペレーティングシステムを開発した。

タイトル: FLOW-MATIC
FLOW-MATIC(フローマティック)は、世界初の英語に近い表記のデータ処理用プログラミング言語である。元の名称はB-0(Business Language version 0)であった。1955年から1959年にかけて、レミントンランドに所属していたグレース・ホッパーによってUNIVAC I用に開発された。この言語は、COBOLの開発に大きな影響を与えた。

タイトル: プログラミング言語年表
ミニコンピュータの世界では、1970年代に登場したC言語がUnixとともに広く普及した。C言語の最初の標準化は1989年である。一方、1970年代末頃からパーソナルコンピュータが普及しはじめ、8ビットパソコン時代には、その内蔵ROMに書かれた言語としてBASICが爆発的に普及した。

タイトル: コンピュータ言語
プログラミング言語は、コンピュータ・プログラムを記述するための言語である。プログラミング言語には、最近使われている頻度が高いものでは、Python、Java、C言語、C++などがある。また最近は使われる頻度がそれなりに減ったが、BASIC、COBOL、FORTRANやアセンブリ言語などもある。プログラミング言語の分類方法は多数ある(詳細はプログラミング言語の記事で解説)。プログラムを書くことをプログラミングといい、プログラムを書く人をプログラマという。スクリプト言語は容易に使えるプログラミング言語を指す大雑把な分類である。スクリプト言語には下記ような特徴(の一部または全て)を備えているものが多い。どのような言語をスクリプト言語と呼ぶかは感覚的なものであり、正確に定義できるものではない。

タイトル: BCPL
またイギリスのソフトハウスであるArnor社がAmstrad CPC用とAmstrad PCW(英語版)用のコンパイラを1985年に発売した。イギリスのケンジントンにあるTopexpress社はアップル・マッキントッシュ用のMacBCPLを1985年に発売した。BCPLの設計と哲学は後にC言語に影響を与えるB言語に多大な影響を与えた。C言語は現在システムプログラミング用言語の1つである。当時のプログラマーは、C言語の次はアルファベット順にD言語となるのか、それとも元の言語を尊重してP言語なるのかとよく言われた。なおC言語の後継言語として最も成功したのはC++であり(++はC言語のインクリメント演算子)、D言語は実在している。1979年には少なくとも25のアーキテクチャで実装された。Unix以外でもC言語の人気が高まるにつれて使われなくなっていった。

タイトル: Linuxの歴史
AT&TがMulticsプロジェクトを放棄したのち、Unixオペレーティングシステムが1969年にケン・トンプソンとデニス・リッチー(両者ともAT&Tベル研究所の職員)によって構想、開発され、1970年に初めてリリースされた。続いて彼らはUnixの移植性を高めるためにC言語で書き直した。入手性と移植性の高さが功を奏し、Unixは教育機関や企業に広く採用され、複製され、改変された。1977年、カリフォルニア大学バークレー校のComputer Systems Research Group (CSRG) によって、Unix 6th editionを基盤とするBerkeley Software Distribution (BSD) が開発された。

タイトル: BCPL
BCPLは最初にケンブリッジ大学のマーティン・リチャーズが1967年に開発した。1960年代初頭に開発された複雑なCPLを簡略化しようとする試みだった。リチャーズは「コンパイルを難しくする特徴を仕様から削る」ことによりBCPLを開発した。CTSSで動作するIBM 7094用の最初のコンパイラの実装は、1967年の春にリチャーズがMITのProject MACを訪問している間に書かれた。1969 Spring Joint Computer Conferenceの論文で初公開された。BCPLは「ブートストラップ・ケンブリッジ・プログラミング・ランゲージ」の略だと長い間言われていたが、オリジナルのCPLはBCPLの開発が終わった後もまだ実装されていなかった。BCPLは最初のHello worldが記述された言語であるといわれている。最初のMUDもまたBCPLによって記述された。

タイトル: プログラマ
1990年代末以降、パソコン分野での競争が一段落し、パソコン業界でのOSはWindowsが主流に、プログラミング言語はC言語の派生言語(主なものはC、Java、C++、C#、Objective-C)が主流となった。反面、サーバ、リッチクライアント、組み込みシステムなどデスクトップコンピュータ以外の市場が著しく拡大し、開発環境は多様化している面もある。ネットワーキング・コンピューティング、クラウドコンピューティング分野の新たな需要にこたえる形で、オープンソース系UNIXやサーバサイドプログラミングが広がり、JavaScript、Rubyなどの簡易なスクリプト言語が普及した。高機能な組み込みオペレーティングシステムを搭載した携帯電話などの組み込みシステムの出現により、組み込み分野でもオブジェクト指向など大規模な汎用システムで培われた開発手法が広く使われるようになった。

タイトル: コンピュータ言語
スクリプト言語には ActionScript、AppleScript、awk、bash、Emacs Lisp、Groovy、JavaScript、Lua、Perl、PHP、Python、REXX、Ruby、PowerShell、SKILL、Tcl、VBScript などがある。多くのプログラミング言語はテキストのソースコードでプログラムが記述されるが、ビジュアルプログラミング言語はプログラム要素を視覚的に表現し操作することでプログラムを構築する。コンピュータが実際に実行する命令は機械語で現されている。これは一般に人間が読めない(読まない)バイナリ形式のコンピュータ言語であり、CPUの命令セットに対応している。高級言語のソースコードはコンパイラによって機械語に変換される。

タイトル: オープンソースソフトウェアの歴史
1979年、AT&Tは企業がUNIXシステムを利用してビジネスをする場合はUNIXの利用に有償ライセンスを課すことを決定し、システムパッチを有償ライセンスで販売するようになった。広い普及によりアーキテクチャを切り替えることは難しく、多くの学術機関の利用者はUNIX有償ライセンスを購入して利用を続けた。1970年代以前のソフトウェアはパブリックドメインで共有されていたが、この頃よりクローズドソース、プロプライエタリソフトウェアが登場した。1974年にCONTU(英語版)は「コンピュータプログラムは、著作者の制作を具体化する範囲で、著作権の適切な主題である」と言及した。

タイトル: C++
C++(シープラスプラス)は、汎用プログラミング言語のひとつである。派生元であるC言語の機能や特徴を継承しつつ、表現力と効率性の向上のために、手続き型プログラミング・データ抽象・オブジェクト指向プログラミング・ジェネリックプログラミングといった複数のプログラミングパラダイムが組み合わされている。C言語のようにハードウェアを直接扱うような下位層向けの低水準言語としても、複雑なアプリケーションソフトウェアを開発するための上位層向け高水準言語としても使用可能である。アセンブリ言語以外の低水準言語を必要としないこと、使わない機能に時間的・空間的コストを必要としないことが、言語設計の重要な原則となっている。C++は、1983年にAT&Tベル研究所の計算機科学者ビャーネ・ストロヴストルップによって公開された。また様々なプラットフォームでその開発環境が導入された。

タイトル: プログラミング
初期のプログラミングは機械語のコードを直接並べる(「コーディング」の本来の意)ことで行われた。入力方法としては穿孔カードや鑽孔テープが利用された他、スイッチなどで直接入力したり、まだ半導体技術などのない時代のため、ROMに相当する電気的配線を直接変更したりすることもあった。しかし、機械語の命令は人間にとって扱いにくく、代わりにニーモニックと呼ばれる略語を割り当てたアセンブリ言語により、プログラマは命令をテキスト形式で記述できるようになった。しかし、アセンブリ言語は機械語と同様にプロセッサの種類ごとに異なるため、(意図的に互換性があるように設計された機械以外では)他機種にはそのまま流用できなかった。また(人間から見れば)単純な処理でも、機械が操作できる基本的な処理命令は細粒度であり、大量に記述する必要があった。

タイトル: プログラミング
そこで、特定のコンピュータに依存しない記述方法で、処理の内容をより抽象的に記述するためのプログラミング言語が開発された。そして、プログラミング言語によって記述されたプログラムを、コンパイラを利用して機械語に翻訳することで、実行プログラムを作成することが一般的になった。1954年、最初のプログラミング言語の1つであるFORTRANが開発された。これにより、演算を直接数式のように記述できるようになった(例えば、Y = X*2 + 5*X + 9)。このプログラムの記述(あるいは「ソース」)はコンパイラと呼ばれる特別なプログラムで機械の命令に変換される。他にも様々な言語が開発された(ビジネス用途のCOBOLなど)。プログラムの入力は依然としてパンチカードやさん孔テープで行われていた。

タイトル: CASL
第二種情報処理技術者試験(現・基本情報技術者試験)にはプログラミング能力試験という試験がある。この試験は幾つかのプログラミング言語別に分かれており、受験者はそれぞれが最も得意とする言語による試験を選択することで、特定の言語のプログラマが有利になることを防いでいる。この試験で使用するアセンブリ言語としてCASLが開発された。アセンブリ言語はハードウェアのアーキテクチャとの関連性が強い。特定の実在するアーキテクチャを試験に採用した場合、それを利用する受験者に有利に働いてしまうという問題がある。このため、実在するどのアーキテクチャとも関連性がない単純化した仮想の計算機COMP-Xと、そのアセンブリ言語の仕様CAP-Xを策定することで、この問題を解消した。その後継の仮想計算機をCOMETと呼び、アセンブリ言語の仕様をCASLと名付けた。

タイトル: 計算機の歴史
また、世界初の高級プログラミング言語プランカルキュールを1945年に設計した(発表は1948年)とされているが、この言語が実装されたのはツーゼの死後5年経った2000年になってからで、ベルリン自由大学のラウル・ロハスのチームが開発した。第二次世界大戦中にツーゼの計算機は連合国の爆撃で破壊された。彼の業績がイギリスやアメリカの技術者に知られるようになるのはずっと後のことだが、IBMだけは1946年にツーゼの研究再開に資金援助して特許使用権を得ており、かなり早くからツーゼの業績を知っていたと見られる。第二次世界大戦中、ロンドンから北に40マイルほどの位置にあるブレッチリー・パークで、ドイツ軍が通信に使っていた暗号の解読が行われていた。ドイツの暗号機エニグマの解読には、電気機械式の bombe という機械を補助的に使用した。

タイトル: アラン・パリス
アラン・ジェイ・パリス(Alan Jay Perlis、1922年4月1日 - 1990年2月7日)は、アメリカ合衆国の計算機科学者。プログラミング言語についての先駆的業績で知られる。1966年、第1回のチューリング賞を受賞した。

タイトル: Cray-1
アメリカ国家安全保障局も独自のOSとプログラミング言語を開発したが、詳しいことは不明である。クレイ・リサーチが提供したライブラリは、後のNetlibの一部となった。他にもOSが開発されているが、プログラミング言語の多くはFORTRAN系である。ベル研究所では試験的にC言語コンパイラを開発した(ベクトル非対応)。このおかげで、クレイ・リサーチはETAシステムズより6カ月先行して Cray-2 向けUNIXを完成させることができ、ルーカスフィルムは初のCGI試験フィルム The Adventures of André and Wally B. の制作に Cray-1 用C言語を利用した。アプリケーションの多くは機密(核開発用、暗号解読用など)あるいはプロプライエタリ(石油貯蔵施設のモデリングなど)である。

タイトル: ジョン・バッカス
1953年、プログラミング言語 Speedcoding を開発。IBMのコンピュータで動作する初の高水準言語だった。プログラミングが難しいことから、1954年になるとバッカスはチームを結成して IBM 704 コンピュータのためのFORTRANの設計と開発を行った。これは世界初の高水準プログラミング言語ではないものの、広く使われた世界初の高水準言語となった。1950年代後半、バッカスは ALGOL 58 を開発した国際委員会の一員としても働いた。ALGOLはアルゴリズムを記述する際の世界的なデファクトスタンダードとなった。また1959年、UNESCOレポートにおける ALGOL 58 の言語仕様記述のためバッカス・ナウア記法 (BNF) を考案。BNFは任意の文脈自由な形式言語の文法(形式文法)を記述でき、その後のプログラミング言語の開発に重要な役割を果たした。

タイトル: Turing
Turing(英語発音: [tjúǝrɪŋ](テュァリング))はプログラミング言語のひとつであり、Pascalよりも汎用的で簡潔に記述でき学習しやすい言語を目指して設計された。言語名称は計算機科学者として著名なアラン・チューリング (Alan M. Turing) からきている。資金難により開発は解散したため2008年にフリーソフトウェア化された。

タイトル: プログラミング言語
1950年代末、ALGOLが登場し、その後の言語に様々な影響を与えている。初期のプログラミング言語の仕様と使い方は、当時のプログラミング環境の制約(パンチカードによるプログラム入力など)にも大きく影響されている。1960年代から1970年代末ごろまでに、現在使われている主な言語パラダイムが開発されたが、その多くはごく初期の第三世代プログラミング言語のアイデアの改良である。これらの言語のアイデアは様々な言語に引き継がれており、現在の言語の多くは、これらのいずれかの系統に属する。1960年代と1970年代は、構造化プログラミングに関する論争が盛んに行われた時期でもある。この論争で特に有名なものは、1968年にCommunications of the ACMに掲載されたエドガー・ダイクストラのレターGo To Statement Considered Harmfulであろう。

タイトル: 論理プログラミング
1980年代の日本の情報工学分野ではProlog研究が盛んに行われており、人工知能コンピュータ開発を目的にした第五世代コンピュータ計画の中心になっていた。

タイトル: BLISS
BLISS は1970年ごろ、カーネギーメロン大学の W. A. Wolf、D. B. Russel、A. N. Habermann が開発したシステム用プログラミング言語である。数年後にC言語が登場するまでは、システム記述に最も適した言語とされていたが、C言語に取って代わられた。C言語が登場した当初、ベル研究所では BLISS と C のどちらがよいかという議論が行われた。BLISS はデータ型のないブロック構造方式の言語であり、文ではなく式を基本構成要素とし、例外処理構文、コルーチン構文、マクロなどを備えている。goto文は持たない。

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

タイトル: オープンソースソフトウェアの歴史
1980年代以降、AT&TのUNIXはクローズドソース、プロプライエタリソフトウェアとなったが、それまでに大学等で広く使われていたため、そのインタフェースをベースとしたOSがUnix系OSとして派生、誕生、成長していった。また、OSに加えて、Unix系OS上で動作するGUIアプリケーション、コンパイラやプログラミング言語も自由に利用できるソフトウェアとして開発、公開された。UNIX、DOS、Macintoshなどのプロプライエタリな環境を望まないユーザーにとって好ましいもので、ソフトウェアの利用者、開発者を拡大していった。1970年代末からカリフォルニア大学バークレー校でAT&TのUNIXのソースコードをベースとしたBerkeley Software Distribution (BSD) が開発された。