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

タイトル: 命令型プログラミング
最初の命令型言語はコンピュータ本来の機械語であった。1949年に機械コードをニーモニックに置き換えた低水準言語のアセンブラが登場した。機械語とアセンブラの命令は非常に単純であり、ハードウェアの実装は容易になっていたが、複雑なプログラムの作成は困難だった。1954年からIBMのジョン・バッカスが、初の高水準言語「FORTRAN」を開発した。FORTRANは機械語やアセンブラでの複雑なプログラム作成の困難さを克服するための言語であった。FORTRANはコンパイル式の手続き型言語であり、名前付きの変数、ニーモニックよりずっと複雑な式、サブプログラムといった命令型言語に共通の各種機能が利用可能であった。1958年から1960年代にかけて数学的アルゴリズムをより表現し易くする目的で手続き型言語「ALGOL」が開発された。

タイトル: ハードウェア記述言語
最初のハードウェア記述言語は、カーネギーメロン大学の「ISP」、カイザースラウテルン大学の「KARL」である。この二つの言語は1977年にほぼ同時に開発された。ISP はよりプログラミング言語的で、設計上の入力と出力の関係を記述する方式であった。ISP は設計のシミュレーションには使えるが、回路を生成することはできなかった。KARL は大規模集積回路の回路配置が記述可能な機能も持っていた。回路配置の記述機能は関連する対話型グラフィカル言語 ABL にもあった。1980年代初期にABLを使ったVLSI設計エディタをトリノの通信研究センター CSELT で開発している。1980年代中ごろ、欧州連合の委員会が出資した国際コンソーシアムが KARL と ABL を中心としたVLSI設計フレームワークを実装した。1983年、Data-I/O が ABEL を発表した。

タイトル: ALGOL
1950年代後半、FORTRAN等の言語が米国で作られていたのに対抗して、ヨーロッパの学術研究者が世界共通のプログラミング言語として開発した。ALGOLは1958年にチューリッヒ工科大学で行われた国際会議で提案されたものが起源とされる。現代のプログラミング言語と比べて著しく異なる点のひとつに、reference syntax、publication syntax、implementation syntax という3種類の構文がある、ということが挙げられる。当時は文字コードの標準化以前であり、また数学の数式のように印刷したいという要望などもあったため、そのようなことになっている(違いは具象の違いであり、抽象構文は共通である)。これにより、キーワード名や小数点に使用する記号(カンマかピリオドか)を選ぶことなどもできた。ALGOL 58 は主に欧米の計算機科学者がアルゴリズムの研究開発に用いた。

タイトル: PL/I
1963年 IBMとそのユーザー団体(SHARE)が提案1965年 IBMが完成させた1979年 ISOで標準化科学技術計算向けのFORTRAN、ビジネス処理向けのCOBOLと言われていた時代に、ALGOL並のアルゴリズム記述能力も加え、ひとつの言語であらゆるニーズを満たすために開発されたプログラミング言語。言語仕様が複雑なため、大型計算機以外では余り使われなかったが、デジタルリサーチ社のゲイリー・キルドールが、インテルのi8080のために、サブセット版のPL/Mおよび、一部をPL/Mで記述し、オペレーティングシステムCP/Mを作った。また、CP/M上で動作するPL/I(PL/I-80)も作成している。UNIX開発のきっかけとなったMultics(のちにMulticsは「成功しなかったプロジェクト」と見なされることとなる)は、PL/Iで書かれていた。

タイトル: コンパイラ
1940年代まで、コンピュータのプログラミングは機械語で直接行なわれていた。プログラムを指して「コード」(英語では暗号を意味する)と呼ぶのは、知らない人間には機械語は全く意味のわからない数値の羅列だからである。しかし、(人間にとって比較的理解のしやすい)十進法の数字で書かれたアドレスを内部表現の二進法に変換する、といったプログラムならばEDSAC(1940年代末に登場した、イギリスのマシン)において既に存在していた。(つまり、この段階で、アセンブラのごく一部の機能に限れば、実現していたことになる)機械語でのプログラミングは言うに及ばず、アセンブリ言語を用いても、プログラミングというのは面倒な作業である。そういった低水準言語から、人間がより扱いやすい高水準言語が徐々に求められるようになった。

タイトル: 軽量プログラミング言語
日本では2004年に「Lightweight language magazine(ライトウェイト・ランゲージ・マガジン)」が発売された。2004年にマイコミジャーナル、2007年にソフトウェア開発者向けのウェブサイト「@IT(アットマーク・アイティ)」や同「CodeZine(コードジン)」に軽量プログラミング言語という表現が現われている。

タイトル: Dc (UNIX)
dc は現存する Unix 言語の中で最も古いものである。ベル研究所に PDP-11 が導入されたときには、アセンブラよりも先に、(B 言語で書かれた) dc がそのマシンで動く最初の言語なった。ケン・トンプソンは、dc がこのマシンで書かれた最初のプログラムだとも発言している。

タイトル: B言語
最初にPDP-7用のスレッデッドコードを出力する実装が開発され、次にリッチーがマシン語を出力するコンパイラをTMG(英語版)で実装した。1970年にPDP-11が開発現場に導入され、スレッデッドコード版がPDP-11に移植された。アセンブラのdcとB言語自身はB言語で記述された。最初のyaccがこのPDP-11用に開発された。リッチーはこの時期にメンテナンスを引き受けていた。B言語の型のない設計はハネウェルやPDP-7などの多くの古いコンピュータでは意味のあることであったが、PDP-11以降のほぼ全てのコンピュータがサポートしている8ビットのキャラクタデータ型にエレガントにアクセスすることが難しいことが問題になった。リッチーは1971年に言語の変更を開始し、コンパイラがマシン語を出力するように変換すると同時に、最も顕著な拡張としてデータ型を変数に追加した。

タイトル: システムプログラミング言語
コンピュータの黎明期のシステムソフトウェアは、他のプログラミング言語が存在しなかったため、アセンブリ言語で書かれていた。同時に、効率的なオブジェクトコードの存在、コンパイル時間の短縮、デバッグのしやすさなどの理由もあった。FORTRANなどのアプリケーション向け言語もシステムプログラミングのために使用されることがあったが、アセンブリ言語として書き出すために追加のルーチンが必要だった。中レベル言語は「高レベル言語のような多くの構文と機能を持つが、言語内で(アセンブリ言語と同様に)機械の機能への直接アクセスも提供するもの」である。最初期の中レベル言語は1960年頃にBurroughsメインフレームで使用されたESPOLである。次に現れたのがNiklaus WirthのPL360であった(もともとBurroughsシステム上でクロスコンパイラとして実装されたものである)。

タイトル: B言語
1971年から1972年にかけてB言語はNew B言語へ進化し、そしてアラン・スナイダー(Alan Snyder)の強い要求によってプリプロセッサが加えられ、1972年から1973年の初期にC言語となった。1973年の夏の間にPDP-11用のUNIXがC言語で書き直され、一連の努力が成し遂げられた。1972~73年の間にハネウェル635とIBM 360/370に移植する必要があり、マイク・レスク(Mike Lesk)は後にC言語の標準入出力ライブラリとなる「汎用的なI/Oパッケージ」を書いた。B言語はC言語にほぼ置き換わった。B言語はハネウェルのメインフレームGCOSで1990年代頃まで利用され続けていた。

タイトル: デニス・リッチー
このUNIX上で動作するアプリケーションを作るために、トンプソンによってB言語が開発され、リッチーがこれにデータ型と新しい文法等を追加しC言語が出来上がった。当初はアプリケーションを作成するために作られたC言語であったが、 1973年に、それまでアセンブリ言語で書かれていたUNIXをC言語で書き換えることに応用され、実際に移植は成功した。この頃のUNIXは文書マシンとして使われており、主にベル研究所の特許事務に用いられていた。当初はPDP-11のアーキテクチャーに依存する側面が大きかったUNIXとC言語であったが、徐々にPDP-11への依存性を減少させていき、1978年にDEC製以外のコンピュータへのUNIXの移植に成功した。 C言語の開発は、リッチーのUNIXへの最大の貢献のうちの一つである。1983年、UNIX開発の功績により、ケン・トンプソンと共にチューリング賞を受賞している。

タイトル: CPL (プログラミング言語)
同様の努力はPL/Iでも見られた。CPLは当時のコンピュータが非力でコンパイラ技術も未熟であったことを明白にした。実用的なCPLコンパイラは恐らく1970年頃に作られたが、全く普及することなく、1970年代に自然消滅した。CPLをベースにしたBCPL(Basic CPL、元々はBootstrap CPL)という後発の言語は特にコンパイラを記述することを目的とした比較的シンプルなシステム記述用言語であった。後にBCPLはB言語となり、今日最も重要なプログラミング言語の1つであるC言語の元になった。

タイトル: プログラミング
コンピュータープログラミング(英語: Computer Programming)とは、ある特定のコンピューティングの結果を得ることを目的として、実行可能なコンピュータープログラムを設計・構築するプロセスのことである。プログラミングが関係するタスクの例としては、アルゴリズムの生成、アルゴリズムの正確さとリソースの消費量のプロファイリング、選択したプログラミング言語でのアルゴリズムの実装(これは一般にコーディングと呼ばれる)などがある。プログラムのソースコードは、コンピューターのCPUで直接実行される機械語ではなく、プログラマーが理解できる1つ以上のプログラミング言語で書かれる。プログラミングの目的は、あるタスク(オペレーティングシステムのように複雑な場合もある)をコンピューター上で自動化する1連の命令を見つけることで、与えられた問題を解決することである。

タイトル: Autocode
マーキュリー・オートコードの別バージョンがフェランティ・アトラス(後のアトラス・オートコードとは別物)や、ICT 1300~1900で実装された。1961年にケンブリッジ大学数学研究所のデビッド・ハートリーがEDSAC 2バージョンを開発した。EDSAC 2オートコードはマーキュリー・オートコードをベースにしてマシンに合わせた改造をしたもので、オブジェクトコードを最適化する機能があり、ソースコードのエラーチェック機能がある、当時としては先進的なコンパイラとして有名だった。ALGOL風の構文で科学技術計算向けに最適化されていた。高水準言語のCPLが完成するまでの一時的なつなぎとして、後継機種のタイタン(アトラス2のプロトタイプ)にもオートコードが実装された。CPLは結局完成しなかったが、マーティン・リチャーズがBCPLを開発し、B言語からC言語に発展した。

タイトル: X10 (プログラミング言語)
X10 は、アメリカ合衆国・DARPAのHigh Productivity Computing Systemsにより設立された PERCS スーパーコンピュータ・プロジェクトの一部として、IBMがトーマス・J・ワトソン研究所で開発中の並列処理用のプログラミング言語である。

タイトル: IBM 701
701は、アーサー・サミュエルのチェッカー・プレイング・プログラムで人工知能の可能性を示した最初のコンピュータであると主張される。カリフォルニア大学リバモア放射線研究所では、701のためにKOMPILER(英語版)と呼ばれる言語コンパイルとランタイムシステムを開発した。FortranコンパイラはIBM 704までIBMからリリースされなかった。1954年、IBM 701は世界初の自動翻訳(ロシア語から英語)を行った。

タイトル: アデル・ゴールドバーグ
アデル・ゴールドバーグ (Adele Goldberg, 1945年7月22日 - ) は、1970年代にゼロックスパロアルト研究所(PARC)の研究者としてプログラミング言語Smalltalk-80やオブジェクト指向プログラミングに関するさまざまな概念の開発に参加したコンピューター科学者 (英語版) である。

タイトル: APT (プログラミング言語)
APTは、空間を移動する切削工具を使用して複雑な部品を作成する数値制御工作機械の制御、目的の形状を生成するために切削工具が移動する経路を計算するためのデータを作成するために使用される。APTは専用言語であり、最新のコンピューター支援製造(CAM) システムの前身である。1950年代後半から1960年代前半にかけて、航空宇宙産業で必要とされる複雑な部品を製造するために切削工具を三次元空間内を移動させるジオメトリポイントを計算するタスクを簡素化するために作成および改良された。これは、当時利用可能になった新しい数値制御技術の直接的な成果であり、機械工やエンジニアが複雑な計算をしなければならないという困難な作業に直面したために開発が始まった。その開発は、数値制御・フライス盤プロジェクトを主催したのと同じMITラボを中心に行われた。

タイトル: B言語
トンプソンは、DEC社製コンピュータPDP-7上でUNIXの開発を行っていたが、当時、UNIX上ではプログラムをアセンブリ言語で記述することしかできなかった。そこでトンプソンはUNIX上で動作する高級言語の開発を始めた。トンプソンはUNIXの開発以前、Multicsの開発に携わっており、B言語は、Multics上で動作していたBCPLを元に開発された。B言語は本質的には、トンプソンがその時代のミニコンのメモリ容量に収めるために、不要と感じたコンポーネントを除去したBCPLシステムである。またトンプソンの好みに沿うような変更も行われた(たいていは、一般的なプログラムで空白以外の文字数を削減できるという方向であった)。BCPLにあったALGOL由来の記法は大幅に改められた。

タイトル: プログラミング言語
あらゆる用途に使える万能言語を設計しようという試みはいくつかあったが、そういう意味で成功した言語は存在しない 。プログラミング言語の開発の大きな流れに共通する傾向として、より高いレベルの抽象化によってより高い問題解決能力を得ようとしてきた、ということが指摘されることがある。初期のプログラミング言語はコンピュータのハードウェアのレベルと極めて近かった。新たなプログラミング言語が開発される度に機能が追加され、プログラマはハードウェアの命令からより遠い形でアイデアを表現できるようになっていった。プログラミングをハードウェアから分離することで、プログラマの生産性は向上する。毎年のように新たなプログラミング言語が作り出されている。2008年2月時点で、「コンピュータ言語辞典」には8,152種のプログラミング言語が記載されていた。

タイトル: 人工知能
1982年から1992年まで日本は国家プロジェクトとして570億円を費やして第五世代コンピュータの研究を進めるも、採用した知識工学的手法では膨大なルールの手入力が必要で、専門家間で専門知識の解釈が異なる場合には統一したルール化が行えない等の問題もあり、実用的なエキスパートシステムの実現には至らなかった。実現した成果物はPrologの命令を直接CPUのハードウェアの機構で解釈して高速に実行する、並列型のProlog専用機であるが、商業的な意味で応用先が全く見つからなかった。

タイトル: プログラミング言語
過去のプログラミング言語のなかの欠点と見なされた部分を解消するために、新たなプログラミング言語が構想され、作られてきた歴史がある。また多様なプログラミング言語が生み出される背景には、さまざまな事情があり、ハードウェアが時代とともに変化してきたことや、プログラミング言語というテクノロジーやコンピュータサイエンスの発展も影響しており、下のような諸事情もある。ウィキペディアに記事が掲載されているプログラミング言語を知りたい場合はプログラミング言語一覧を参照のこと。

タイトル: プログラミング言語一覧
以下はプログラミング言語の一覧である。

タイトル: バロース B5000
B5000は、ソフトウェアのニーズを考慮してアーキテクチャと命令セットが設計されたという点で、当時としては革新的であった。当時、プロセッサとその命令セットは設計が完了してからソフトウェア開発者に渡されるのが通例であった。B5000は高級言語をサポートするよう設計された。当時、FORTRANとCOBOLが登場したばかりである。FORTRANもCOBOLもソフトウェア技術から見れば不足である。したがってもっと新しい、まだ試されていないALGOL-60が採用された。正確にはALGOLから派生した言語 Elliott ALGOL が採用された。これはアントニー・ホーアが Elliott 503 というマシン用に開発したものである。ALGOLに現実的な入出力命令を追加したもので、強力な文字列操作機能を持っている。ホーアのチューリング賞受賞講演では、これについて論じている。

タイトル: BCPL
TRIPOSや、起動 (Kickstart)処理、AmigaDOS初期バージョンを含むAmigaOSのコア部分など、いくつかのオペレーティングシステムではその一部または全体がBCPLで記述された。またBCPLは影響力の強いパロアルト研究所のAlto(最初の近代的なパーソナルコンピューターのプロジェクト)で最初に使われた言語であり、また初期のBravoワードプロセッサなど、その他の数多くの有名なプログラムがBCPLで開発された。1969年にはICT 1900シリーズ用に書かれた初期のコンパイラが、マーティン・リチャーズが自分のアルテア2で出力したOコードの紙テープから起動した。両者のマシンはワード長が異なっており(48ビットと24ビット)、文字コードが異なり、文字列データの構造も異なっていたが、上手く動作しておりこの方法の信用が高まった。