スタートページ> (主張・講演Web教材歴史ソフトウェアの歴史

プログラミング言語の歴史


参考URL


プログラミング言語の歴史

コンピュータ以前のプログラム

コンピュータ以前でも自動機械には、動作を機械に指示するプログラムが必要であった。コンピュータ以前のプログラムとしてよく引用されるものを掲げる。

プログラミング言語発展の世代

コンピュータが発明されて以来、プログラミングが重要な技術になった。ごく初期のコンピュータは配線を組み替えるものもあったが、すぐにプログラムをパンチカードにより入力する形式になった。
 プログラミング言語の発展は4つの世代に区分される。この発展にはプログラミング理論の発展があるが、ここでは省略する。いずれにせよ、コンピュータの立場で記述することから、人間の発想に近い表現へと発展している。


汎用コンピュータ用の第3世代言語

汎用コンピュータで広く用いられていた第3世代ブログラミング言語は、科学技術計算用のFORTRAN、事務処理用のCOBOL、それを統合したPL/Iである。これらは、すべてISOやJISの規格になっている。これ以外に有名な科学技術計算用のALGOLがある。実務的にはあまり普及しなかったが、プログラム技術面で高く評価され、その後のプログラミング言語に大きな影響を与えた。

FORTRAN

FORTRAN(FORmula TRANslator)。最初の第3世代言語。最も広く普及した科学技術計算用言語。

FORTRAN は、プログラマのニーズに応じて逐次発展してきたため、特に初期のバージョンでは、習得のしやすさは良かったが、論理的体系的な「美しさ」に欠けていた。例えば、次のような規則があった。

FORTRAN は、多くの関数が組み込み関数としてコンパイラに内蔵されただけでなく、それ以外に膨大な関数やサブルーチンが公開された。数値解析や統計分野では、通常の場合はプログラムを作成する必要がないような状況であった。FORTRANは、エンジニアにとって、プログラミング言語というより知識のライブラリのような存在だったのである(FORTRANの例)。
 しかし、ミニコンOSとしてUNIXが普及してくると、C言語を用いる技術者が増加し、FORTRAN独占状態が崩れてきた。さらに、パソコンでは当初は性能が不十分なためにFORTRANをサポートしなかったこともあり、FORTRANは次第に利用されなくなってきた。

COBOL

COBOL(COmmon Business Oriented Language)。事務処理用言語。自然言語(英文)に似た構文。汎用コンピュータでの販売システムや会計システムなどデータファイルを多様するシステムは、ほとんどがCOBOLが用いられていた。

事務処理用言語は科学技術計算用言語と比較して、次の事項が重要である。COBOLは、これに合致した機能や記述体系になっている。

ALGOL

ALGOL(ALGOrithmic Language)。科学技術計算用言語。実務的な処理言語というより、プログラミング言語研究用の言語として評価される。

このように、実務的にはALGOL 60で停滞してしまったのであるが、ALGOLはプログラミング言語の技術に大きな成果をあげた。PL/IやCなどの言語は、主にALGOLの影響を受けている。

PL/I

PL/I(Programming Language One)科学技術計算用と事務処理用を統合したプログラミング言語。

PL/Iは、FORTRAN、COBOL、ALGOLのいいとこどりをしており、当時として最も優れた言語だといえる。予約語がないし、デフォルト解釈もあるし明示的宣言も可能なので、初歩的な知識でもプログラミングできるし、理解が進むにつれて高度な機能を使いこなすことができる。それで、IBM以外のコンピュータもPL/Iをサポートするようになった。ところが、機能があまりにも複雑で大規模になり、大型コンピュータ以外では使えない欠点があった。
 日本では、IBM大規模ユーザでは広く普及した。これを標準言語にした企業も多い。ところが、本家の米国では、既にFORTRANやCOBOLの資産が多く、日本ほどにはシェアを獲得できなかった。オープン系ではPL/Iをサポートする環境がないので、現在ではPL/Iはほとんど使われていない。
 むしろPL/Iを簡素化する動きがあり、現在広く用いられているC言語もその一つだといわれている。


ミニコン・パソコン用の第3世代言語

1960年代後半から1970年代にかけて、大学や研究所ではミニコンが普及した。汎用コンピュータ用のプログラミング言語は、次第に巨大化・複雑化して、ミニコンで処理するのが困難になってきた。また、IBM独占への反発もあった。それでミニコンのためのプログラミング言語が多数開発された。その代表的なものに、BASICとCがある。
 その後、パソコンの普及に伴い、これらの言語はパソコンに移植され、さらに、GUI環境への適用が行われて、現在広く用いられている。
 これらは、自分のためにプログラムを作ることが多かったし、科学技術分野の利用者が大多数であったため、本質的には科学技術計算用の言語である。ところが、これら言語の普及に伴い、事務処理用の機能が追加されるようになり、現在では用途に限定せずに用いられている。

BASICは、コンパイラもあるが、一般的にはインタプリタである。そのため、プログラム作成の途中で確認しながら進めたり、部分的に変更するのは容易であるが、実行効率が悪く、繰返して用いる場合や大量データの加工など、基幹系の事務処理システムに用いるのは不適切である。基幹系事務処理では、データ入力など効率を問題にしない処理に限られる。

BASIC

BASIC(Beginner's All-purpose Symbolic Instruction Code)。教育用に開発された習得しやすいプログラミング言語。当初はTSS環境で稼働したが、その後パソコンに移植して急速に普及。多様な版があるが、マイクロソフトはGUI環境に適用したVisialBASIC(VA)に発展させ、パソコン環境での主要言語になっている。

C言語

C言語は、1973年にAT&Tベル研究所のケン・トンプソン(Ken Thompson) とデニス・リッチー (Dennis MacAlistair Ritchie) により開発された。1869年にミニコン用のOSであるUNIXが開発されていたが、それを高水準言語で記述しなおそうとして、A言語、B言語が試みられ、C言語で実用化した。

C言語は、OS開発用言語として出発したので、アセンブラレベルでの機能をもつ。そのため、OSや組み込みソフトウェアの分野にも利用できる。UNIXがそうであったように移植性がよいので、ミニコン、パソコン、汎用コンピュータまで多様なコンピュータで利用できる。
 反面、ALGOLやPL/Iなどを参考にしているが、それらの特徴である完全性や記述性に関しては、むしろ逆行している。事務処理で必要な文字型データの型がない。その意味では「優れた」言語とはいいにくい。

1980年代後半からTurbo Cなど、手軽なコンパイラとして普及した。その後、C言語から派生した、C++やJavaなどが出現し、C言語はそれらの基本的言語として位置付けられるようになった。


第4世代言語

「第4世代言語」とは「第3世代言語を超えた言語」という意味の用語で、明確な定義はない。そのため、以下に掲げる言語を第4世代だとはしない視点もある。また、ここでは4つのグループに区分したが、個々の言語が複数のグループに属することもある。

非手続き型言語:SQL

非手続き型言語の代表例としてSQLがあげられることが多い。SQLは、それ以外にデータベース、特にRDB (Relational Database) の操作言語でもある。

非手続き型言語の特徴は、「何をするのか」を指示するだけで、「どのように処理するのか」はコンピュータに任せていることである。また、データベースでは、第3世代言語のファイル定義に属する情報はDBMS(データベース管理システム)が管理しているのでプログラムでは記述しない(SQLの例)。
 このような理由により、プログラムの記述量が非常に少なくなる。これはプログラマの生産性向上に役立つ。

RDBの特徴は動的結合(実行時に2つのテーブルを結合)ができることである。これは任意の切り口で検索加工するのに便利な機能である。しかし、1980年代中頃までは、実行効率が悪かった。
 SQLには2つの利用法がある。一つは、エンドユーザがTSS環境で情報検索に用いるためののコマンド言語であり、もう一つは、COBOL、PL/I、CなどのソースプログラムにSQL文を記述できる埋込みSQLである。

なお、パソコンでのデータベース利用ソフトでは Access がポピュラーであるが、画面操作によりSQLを生成するツールであり、実際にはSQLが処理しているのである。

オブジェクト指向言語

オブジェクト指向言語とは

オブジェクト指向プログラミングとは、処理を小さな機能に分解し、それに必要なデータや処理手順をオブジェクトとして部品化することにより、それらの部品を組み合わせてプログラムを構築する方法である。開発が容易になるだけでなく、変更のときにはその部品だけを変更すればよくなる。このような方法に適した言語がオブジェクト指向言語(OOPL; Object-Oriented Programming Language) であり、現在よく利用されている言語にC++やJavaがある。

このような部品化・再利用が有用であることは、初期から認識されていた。サブルーチンや関数あるいはテンプレート(ひな型)プログラムもこれにあたる。しかし、オブジェクト指向言語では、単に部品を用意するだけでなく、再利用するのに便利な継承(インヘリタンス)や多相性 (ポリモーフィズム) の機能をもたせること、部品の管理をする機能を重視している。
 また、オブジェクト指向言語の特徴として、「入力があったら、在庫がなくなったら~をする」というように、何かが引き金になって処理を行うイベント駆動型であることがあげられる。

オブジェクト指向言語への発展

オブジェクト指向言語の考え方は、1960年代に存在していた。その有用性が認識され言語が実装されるようになったのは1970年代である。しかし、当時は一部の研究者や特定の用途に限定されていた。

Java

一般のプログラマにちって、最もポピュラーなオブジェクト指向言語はJavaである。逆に、Javaの出現により、オブジェクト指向が普及し、それにより多くの言語がオブジェクト指向に機能拡張したともいえる。
 Javaは次のような特徴をもつ。


Web環境でのプログラミング言語

スクリプト言語

JavaScript

WebページはHTMLで記述するが、HTMLの内部にプログラムを記述することができる。そのような言語をスクリプト言語という。その代表的なものに JavaScript がある。
 ・1996年に JavaScript の初版発表
  1997年にNetscape Navigator 4.0とIE 4.0に実装された。
  その後、普及はしたが、各ブラウザ間の違いが多いことなどが指摘された。
 ・2005年 Ajax、HTML5の発表
  これにより、JavaScript は急激に発展、現在に至る
参照:Javascriptの歴史

軽量プログラミング言語(Perl、Python、PHP、Rubyなど)

これらもスプリプト言語ではあるが、Webブラウザに標準搭載されているにではなく、独立した言語であることから、軽量プログラミング言語ともいう。
 1990年代前半に発表され、OSSになり、ユーザ会などにより運営されている。2000年頃になると、これだけで多様なアプリケーションが開発されるまでになった。
 ・1987年 Perl初版 ラリー・ウォール
 ・1990年 Python初版 グイド・ヴァンロッサム。現在ではAI利用の代表的言語になる
 ・1993年 Ruby初版 まつもとゆきひろ
 ・1995年 PHP初版 ラスマス・ラードフ
参照:軽量プログラミング言語の歴史

ノーコード・ローコード開発

これらは、プログラムを書かない(極度に少なくする)でシステムを開発する方法である。
 画面上で典型的なモデルを選択し、GUIメニューなどを操作して、目的に近いシステムに近づける。これだけで完成すれば、プログラム記述が不要なのでノーコード開発になり、詳細指定のために部分的にプログラム記述が必要なのでローコード開発になる。実際にはその境界はあいまいである。
 システム開発環境プラットフォームであり、プログラミング言語ではないが、プログラミングの歴史での大きな転換点などで、ここに含めることにした。

発展の歴史