IV機種依存性からの脱却。これがその後のFORTRANのベースになる。プログラマのニーズに応じて逐次発展してきたため、特に初期のバージョンでは、習得のしやすさは良かったが、論理的体系的な「美しさ」に欠けていた。次のような規則があった。文区切りの記号はなく、1行1ステートメント。変数の文字数は6文字以内であり、I~Nで始まる変数は整数型、それ以外は浮動小数点型であるというような規則があった。多くの関数が組み込み関数としてコンパイラに内蔵されただけでなく、それ以外に膨大な関数やサブルーチンが公開された。数値解析や統計分野では、通常の場合はプログラムを作成する必要がないような状況であった。FORTRANは、エンジニアにとって、プログラミング言語というより知識のライブラリのような存在だったのである(FORTRANの例)。ミニコンOSとしてUNIXが普及してくると、C言語を用いる技術者が増加し、FORTRAN独占状態が崩れてきた。パソコンでは当初は性能が不十分なためにFORTRANをサポートしなかったこともあり、FORTRANは次第に利用されなくなってきた。汎用コンピュータでの販売システムや会計システムなどデータファイルを多様するシステムは、ほとんどがCOBOLが用いられていた。FLOW-MATICCOBOLの前身となる言語。Languages)が開発。米国政府の全面採用に伴い急速に普及。COBOL-65報告書機能、ソート・検索機能、直接アクセス機能など、COBOLの主要拡張機能が出揃う。その後、データベース機能や画面制御機能など改訂が行われてきた。比較して、次の事項が重要である。COBOLは、これに合致した機能や記述体系になっている。ファイルの取り扱い売上ファイルや得意先マスタなどデータファイルの取り扱いが多い。売上ファイルなどはすべてのデータを順に処理することが多いし、得意先マスタなどは売上ファイルの得意先コードに対応したデータをダイレクトに探すことが多い。そのようにファイルアクセスの方法が多様であるし、逆に、そのアクセス方法をパターン化しやすい。そのため、適切なファイル編成方式が必要になるし、プログラミング言語では、それを適切に取り扱う機能が求められる。ファイル編成の発展とCOBOLの機能追加は相互連携している。データベース機能も早期に組み込まれていたし、SQLとの連携もしやすくなっている。個々の項目を変数とするだけでなく、レコード全体を一つの変数として取り扱うことも必要である。項目には、コードのような数字列、金額などの数値、名称などの文字列などがある。コードでは0で始まるものもある。数値では、1兆円を超す数値でも1円まで正確に計算できなければならない。処理、改行や改頁などの処理を簡単に指定する記述が必要である。体裁のために、数値の¥記号や位取り記号、フォントの指定などができる機能が求められる。事務処理プログラムは、利用者が自分のために作成するのではなく、利用者と作成者が別人であり、しかも多数のプログラマが参加する。そのプログラムは長期的に利用され、その間に修正が多く行われる。そのため、かなり以前に他人が作成したプログラムを解読して、間違いなく修正できることが重要になる。「人間が読みやすい」言語、記述方法でなければならない。COBOLでは、特に記述性を重視した。手続き型言語の限界はあるが、適切に記述されたCOBOLのソースプログラムは、そのまま処理記述書とすることができる仕様になっている。反面、「COBOLで記述すると冗長になり、生産性が低下する」という指摘もある(COBOLの例)。処理言語というより、プログラミング言語研究用の言語として評価される。ALGOLの提案ALGOLは、ヨーロッパの研究者が、世界共通のプログラミング言語として開発した。1958年にチューリッヒで行われた国際会議で提案された。60ALGOLが一般に普及した最初の版。文法がBNF記法で記述されている。68整然性・網羅性を追求したため、仕様が大規模になり、当時のコンピュータでは実装が困難であった。文法が複雑難解になり、実務的には普及しなかった。60で停滞してしまったのであるが、ALGOLはプログラミング言語の技術に大きな成果をあげた。PL/IやCなどの言語は、主にALGOLの影響を受けている。具体的なハードウェア特性にとらわれず、抽象的なアルゴリズムをプログラムとして記述する。文法構造をBNF記法で表示するなど、文法自体でも抽象化を重視した。再帰呼び出し機能、入れ子構造など、現在のプログラミング言語の基本的な機能を初めて取り入れた。文の区切り記号「;」を採用し、行の長さや桁位置などに左右される固定プログラム型から、それに無関係に記述する現在の自由プログラム型を採用した(ALGOLの例)。One)科学技術計算用と事務処理用を統合したプログラミング言語。FORTRANと事務処理用COBOLの機能を統合し、ALGOLでの論理性や形式を踏まえた新言語が求められると提案。PL/IIBMシステム/360が360度全分野をカバーするハードウェアであり、それにふさわしい画期的なプログラミング言語であるとの想いでPL/Iにしたという。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は、コンパイラもあるが、一般的にはインタプリタである。そのため、プログラム作成の途中で確認しながら進めたり、部分的に変更するのは容易であるが、実行効率が悪く、繰返して用いる場合や大量データの加工など、基幹系の事務処理システムに用いるのは不適切である。基幹系事務処理では、データ入力など効率を問題にしない処理に限られる。教育用に開発された習得しやすいプログラミング言語。当初はTSS環境で稼働したが、その後パソコンに移植して急速に普及。多様な版があるが、マイクロソフトはGUI環境に適用したVisialBASIC(VA)に発展させ、パソコン環境での主要言語になっている。米国ダートマス大学のジョン・ケメニーとトーマス・カーツにより教育用言語として開発。その後、PDP(ミニコン)のTSS環境での利用が普及。パソコンへの移植BASICのパソコンへの移植が行われた。その後、ソースコードが公開されたこともあり、多くのパソコンで利用された。ビル・ゲイツとポール・アレンは、パソコンメーカーMITSのためにBASICをパソコン環境に移植。この成功がマイクロソフトの創業になったという。当時のBASICは、簡単ではあるが制約の多いものだった。変数名は、数値型では英字1字と数字1字(A1など)で整数型、実数型の区別はない。文字列は英字1字と$(A$)に限定。代入文の=も、比較演算子の=も、どちらも=を用いる(プログラミング言語として異例)IF文はあるが、IF~THEN~ELSEはない。パソコンでの普及1980年代当初からパソコンがオフィスに浸透してきた。Automation)の概念が普及した。BASICの機能は向上し、ビジネスとして実務に使えるレベルに達した。当初はパソコンを使うことはBASICを作成して処理することと同様な状況であり、BASIC習得ブームが起こった。BASICを開発した。バージョンを重ねるうちに、構造化プログラミングやオブジェクト指向の概念も取り込み機能が拡大した。.NET版になると、Windowsでのアプリケーション開発の主要言語になった。1869年にミニコン用のOSであるUNIXが開発されていたが、それを高水準言語で記述しなおそうとして、A言語、B言語が試みられ、C言語で実用化した。C言語は、OS開発用言語として出発したので、アセンブラレベルでの機能をもつ。そのため、OSや組み込みソフトウェアの分野にも利用できる。UNIXがそうであったように移植性がよいので、ミニコン、パソコン、汎用コンピュータまで多様なコンピュータで利用できる。反面、ALGOLやPL/Iなどを参考にしているが、それらの特徴である完全性や記述性に関しては、むしろ逆行している。事務処理で必要な文字型データの型がない。その意味では「優れた」言語とはいいにくい。Cなど、手軽なコンパイラとして普及した。その後、C言語から派生した、C++やJavaなどが出現し、C言語はそれらの基本的言語として位置付けられるようになった。「第4世代言語」とは「第3世代言語を超えた言語」という意味の用語で、明確な定義はない。そのため、以下に掲げる言語を第4世代だとはしない視点もある。ここでは4つのグループに区分したが、個々の言語が複数のグループに属することもある。非手続き型言語:SQL非手続き型言語の代表例としてSQLがあげられることが多い。問い合わせ言語としてSEQUELを発表。これがSQLの母体となる。その後、1980年前半までに、ORACLEやOS/2など、RDB管理システムが続出した。SQL86SEQUELは、その後SQLと改称。ASCIがSQLを規格化。ISOやJISになる。これにより、RDB言語はSQLに統一されるようになった。SQL3SQLは逐次改善されてきた。このSQL3で、現在のSQLの基本的機能が出揃った。オブジェクト指向データベース的な機能も取り込まれた。非手続き型言語の特徴は、「何をするのか」を指示するだけで、「どのように処理するのか」はコンピュータに任せていることである。データベースでは、第3世代言語のファイル定義に属する情報はDBMS(データベース管理システム)が管理しているのでプログラムでは記述しない(SQLの例)。このような理由により、プログラムの記述量が非常に少なくなる。これはプログラマの生産性向上に役立つ。RDBの特徴は動的結合(実行時に2つのテーブルを結合)ができることである。これは任意の切り口で検索加工するのに便利な機能である。1980年代中頃までは、実行効率が悪かった。SQLには2つの利用法がある。一つは、エンドユーザがTSS環境で情報検索に用いるためののコマンド言語であり、もう一つは、COBOL、PL/I、CなどのソースプログラムにSQL文を記述できる埋込みSQLである。ポピュラーであるが、画面操作によりSQLを生成するツールであり、実際にはSQLが処理しているのである。オブジェクト指向言語オブジェクト指向言語とはオブジェクト指向プログラミングとは、処理を小さな機能に分解し、それに必要なデータや処理手順をオブジェクトとして部品化することにより、それらの部品を組み合わせてプログラムを構築する方法である。開発が容易になるだけでなく、変更のときにはその部品だけを変更すればよくなる。あり、現在よく利用されている言語にC++やJavaがある。このような部品化・再利用が有用であることは、初期から認識されていた。サブルーチンや関数あるいはテンプレート(ひな型)プログラムもこれにあたる。機能をもたせること、部品の管理をする機能を重視している。オブジェクト指向言語の特徴として、「入力があったら、在庫がなくなったら~をする」というように、何かが引き金になって処理を行うイベント駆動型であることがあげられる。オブジェクト指向言語への発展オブジェクト指向言語の考え方は、1960年代に存在していた。その有用性が認識され言語が実装されるようになったのは1970年代である。当時は一部の研究者や特定の用途に限定されていた。Dahl)が開発したオブジェクトとクラスを導入した最初の言語。ALGOLをベースにしている。当初はシミュレーション用言語として開発され、その後汎用化された。C++C言語をSimula言語を参考にしてオブジェクト指向に拡張した言語。Stroustrup)による。Smalltalkオブジェクト間をメッセージで呼びだすことにより処理を行うという概念を導入した最初の言語。AltoのOSとして開発。この言語の説明に「オブジェクト指向」という言葉を用いた。Objective-CC言語にSmalltalkを取り入れてオブジェクト指向に拡張した言語。3つの基本的な論理構造によって記述できるとする構造化定理を示した。「GOTO文は有害だと考えられる」が有名。プログラムを部品化する考え方の基礎になる。Wirth)は、その考え方に基づき、言語Pascalを開発した。Module-2Pascalにモジュール(部品)の概念を導入。Module-3Module-2をオブジェクト指向に拡張。Java一般のプログラマにちって、最もポピュラーなオブジェクト指向言語はJavaである。逆に、Javaの出現により、オブジェクト指向が普及し、それにより多くの言語がオブジェクト指向に機能拡張したともいえる。Javaは次のような特徴をもつ。手軽なオブジェクト指向言語である。Webブラウザに組み込まれるほどの容量で動作する。メモリの後始末をするガベッジ・コレクションの機能を自動化していること、クライアントにあるデータのアクセスを禁止していることなど、プログラマへの負担を軽減している。文法的にも型宣言などが不要で、初心者にも使いやすい。Java仮想マシンの環境を作りやすい。第3世代のアセンブラに対応する中間言語をバイトコードというが、機種から独立しており、機械語にするのが容易である。開発環境が整備されている。JavaBeansなどの部品が豊富であり、画面上の操作でプログラムが生成できるなど、開発をするのに便利である。ソースコードが公開されているので、無料で利用できるものが多く、多くのベンダがJavaを利用したソフトウェアやツールを提供している。Gosling)を中心とした技術者たちがOakというオブジェクト指向言語を開発した。Object-Cは、大容量になること、複雑すぎること、移植性が不十分なことなどから、新しいオブジェクト指向言語を開発したのである。HotJavaOakをJavaと改称。それをベースにしたWebブラウザで動的表示を可能にした。ソースコードを公開した。Java1.0(Javaの正式版)これまでのOakプロジェクトは、技術者たちの非公式なプロジェクトの要素もあったが、Hotjavaの成功を機会に、サン・マイクロシステムズの正式製品として、運営組織を設置。VirtualMachine)と、Javaの速度向上のためのJIT(Just-In-Time)コンパイラを開発。これがJavaの普及を促したが、その後、両者の間でライセンスをめぐるトラブルが起こり、マイクロソフトは手を引く。よる開発など)の面がある。Edition)にわけた。Pageなどが整備されており、Web環境での代表的なオブジェクト指向言語としての地位を確立した。従来からJavaは部分的にソースコードを公開していたが、一部の例外を除き、Java技術(言語および開発環境)をオープンソースソフトウェアとして公開した。スクリプト言語WebページはHTMLで記述するが、HTMLの内部にプログラムを記述することができる。そのような言語をスクリプト言語という。