全10952文字
PR

最も重要な5つの高水準言語とは?

 ここからは同じ内容のプログラムを、Fortran、C、C++、Java、およびJavaScriptという、最も重要な5つの高水準言語で紹介します。これによって言語間の類似点と相違点を感覚的に知ることができるでしょう。

 それぞれのプログラムは、整数の列を加算していって、0が入力されたら合計を出力して停止するというものです。プログラムはすべて同じ構造を持っています。

 プログラムが使用する数を格納する場所に名前を付け、合計値を表すsumを0に初期化し、0が入力されるまでは数値を読み取ってはそれを合計に加算することを続けて、最後に合計を出力します。

 構文の詳細については心配しないでください。ここでの主目的は、「言語がどのように見えるか」を理解することです。

 最初の高水準言語は、特定のアプリケーション分野を対象としたものでした。最も初期の言語の1つはFORTRANと呼ばれるものです。この名前は「Formula Translation」(訳注:数式の変換という意味です)に由来するものですが、現在は「Fortran」と表記されます。

 Fortranはジョン・バッカスが率いるIBMのチームによって開発され、科学と工学のための計算を表現することに大成功しました。私を含む多くの科学者やエンジニアたちが、最初のプログラミング言語としてFortranを学びました。

 Fortranは今も活発に使われています。1958年以降何段階かの進化を遂げてきましたが、その中心に据えられているものは同じです。バッカスは1977年に、Fortranに対する仕事に対してチューリング賞を受賞しました。

 以下は、一連の数値を合計するFortranプログラムです。

数値を合計するためのFortranプログラム
数値を合計するためのFortranプログラム
[画像のクリックで拡大表示]

 これはFortran77で書かれています。それ以前の版や、ずっと新しいFortran2015版ではやや違うように書かれます。算術式と操作の順序の両者を、どのようにトイ・アセンブリー言語に変換すればよいかはおそらく想像できることでしょう。もちろんread操作とwrite操作は、GETとPRINTに対応しています。

 1950年代後半に登場したその次に主要な高水準言語はCOBOL(Common Business Oriented Language:共通事務処理用言語)でした。

 これはグレース・ホッパーによる、アセンブリー言語を置き換える仕事に強く影響を受けています。ホッパーは、ハワード・エイケンとともに、初期の機械式コンピューターであるHarvard MarkⅠとⅡ、そしてその後はUNIVACⅠ上で仕事をしました。彼女は高水準言語とコンパイラーの可能性を最初に認識した1人です。

 COBOLは特にビジネスでのデータ処理を目的としていました。在庫の管理、請求書の作成、給与計算などに使用される種類の計算を簡単に表現できるようにする言語機能を備えた、業務用データ処理を特に目的としていたのです。COBOLもまだ使われています。大きく変化はしましたが、それでも中を見れば同じものだということがわかります。

 ジョン・ケメニーとトム・カーツによって1964年にダートマス大学で開発されたBASIC(Beginner's All-purpose Symbolic Instruction Code:初心者向け汎用シンボリック命令コード)は、当時現れた、また別の言語です。

 BASICはプログラミングを教えるための簡単な言語となることを意図していました。BASICは特にシンプルな上に、とても少ないコンピューティングリソースしか必要としなかったので、最初のパーソナルコンピューター上で利用可能な、最初の高水準言語となりました。

 実際、Microsoftの創業者であるビル・ゲイツとポール・アレンは、1975年にAltairマイクロコンピューター(訳注:Altair8800です)用のBASICコンパイラーを作成することから始めましたが、それは彼らの会社の最初の製品でした。

 今日でもMicrosoft Visual Basicが、BASICの1つの主要な系統として積極的にサポートされています。

 コンピューターが高価で、それにもかかわらず速度が遅く能力も制限されていた初期の頃は、高水準言語で書かれたプログラムが非効率的過ぎるのではないかという懸念がありました。

 なぜなら当時のコンパイラーは、熟練のアセンブリー言語プログラマーが書くような、洗練されたアセンブリーコードを生成できなかったからです。コンパイラーを書く人たちは、手書きと同じくらい良いコードを生成できるように一所懸命働きました。そのおかげで高水準言語が定着していくことになったのです。

 今日では、何百万倍も高速なコンピューターと豊富なメモリーを手にしたプログラマーたちは、個々の命令レベルでの効率性について心配することはめったにありません。それでも、コンパイラーとコンパイラーの作者たちは、今でも変わらずがんばっているのです。

 特定のアプリケーション分野に重点を置いたことが、Fortran、COBOL、そしてBASICの成功を部分的に支えています。これらの言語はそれぞれ意図的に、すべての可能なプログラミングタスクを扱うことは避けていたのです。