比較の翻訳ソフト

付録
プログラミング言語の分類
プログラミング言語は多数あり、分類の仕方もいろいろある。大きく分けると機械向きか問題向きかの違いによ
って「低級言語」か「高級言語」に分類できる。低級言語はさらに「機械語(マシン語)
」か「アセンブリ言語(ア
センブラ言語)
」に分けることができ、高級言語では「インタプリタ言語」か「コンパイラ言語」に分けることが
できる。以下に具体的な違いを述べていく。
・低級言語(機械向き言語)
機械が直接理解できる。あるいは理解しやすい言語。そのため、表現が人間にはわかりにくい。ハードウェア
(CPU)に依存したプログラムを作成しなくてはならないが、プログラムの実行速度は速い。
1)機械語(マシン語)
CPU が直接理解し実行できる言語。2 進数(0 と 1)で表現される。
2)アセンブリ言語(アセンブラ言語)
機械語について、英数字を用いて記号(ニーモニック)化したもの。機械語の命令に 1 対 1 で対応する。そのた
め、機械語に翻訳する作業が必要であり、この作業をアセンブルという。また、機械語に翻訳したものをオブジェ
クトコード(ネイティブコード)という。
・高級言語(問題向き言語)
問題を解くことに適している。日常の言語表現(英語)に近いため、人間にとって分かり易い。低級言語に比べ、
利用するコンピュータを変更する場合に、プログラムを変更する部分が少ない。このことを互換性、あるいは移植
性があるという。ソフトウェア開発の現場でよく利用されている。アセンブリ言語と同様に機械語に翻訳する必要
があり、変換方法によって以下に分類される。
1)コンパイラ言語
コンパイラ(翻訳プログラム)で機械語に一括変換される。FORTRAN、LISP、COBOL、C 言語、C++、Java、
C#といった言語などがこれにあたる。
2)インタプリタ言語(スクリプト言語)
コンピュータと対話しながらプログラミングできる。命令を 1 つずつ翻訳して実行していくことになるため、処
理速度が遅い。BASIC、Perl、PHP、Ruby といった言語などがこれにあたる。
注:Java はコンパイル作業が必要なため、コンパイラ言語に一応は分類したが、クラスファイルを読み込み、
JavaVM で命令を 1 つずつ解釈しながら実行することになるため、インタプリタ言語の特徴も併せ持つ。
プログラミング言語の例
プログラミング言語は 1950 年以前の機械語、アセンブリ言語の開発を始めとして、現在までに非常に多
くの言語が開発された。多くの人間に利用されたプログラムはその設計思想が受け継がれ、新たな言語とし
て誕生したりもする。主なプログラミング言語の歴史をテキストの最後に載せた。その中の一部について、
特徴を述べていく。
・FORTRAN 1954 年
-1-
高級言語として最初に開発された科学技術計算用コンパイラ言語。数式の記述に近いかたちでプログラム
が作成できる。文法が簡単で理解しやすく、複雑な数値計算処理などの処理を得意とするが、出力するデー
タ量の多い処理には適していない。
・LISP 1958 年
関数型言語。言語の評価や人工知能研究に利用されているコンパイラ言語。
・COBOL
1959 年
事務処理計算用プログラミング言語であり、英語に近い表現を持つ。コンパイラ言語。文書の管理が容易
であり、多量のデータ処理機能、数字データと文字データの双方の利用が得意。複雑な計算処理には適して
いない。
・BASIC 1964 年
会話型簡易言語用プログラミング言語。インタプリタ言語。初心者向きでわかりやい。プログラムの書き
方や入力順序の自由度が大きく、グラフィック処理などの優れた機能を有している。実行速度は遅く、他機
種との互換性に乏しい。
・C 言語 1972 年
AT&T ベル研究所において、オペレーティングシステムである UNIX を記述する目的で作成されたコンパ
イラ言語。現在使われている多数のプログラミング言語に大きな影響を与えている。古くから存在する言語
であるが、現在でも組み込み系プログラミングやプログラミングの学習用としても利用されている。実用
性・普及度・企業での利用度が高い。
・C++ 1983 年
C 言語を拡張し、オブジェクト指向をサポートした。オブジェクト指向とはソフトウェアを作成する上で
の考え方の一つである。大規模なソフトウェア開発に向く。コンパイラ言語。
・Perl 1987 年
オブジェクト指向スクリプト言語。2000 年前後までは Web プログラミングにも良く利用されていたが現
在は PHP が主流。強力な正規表現(記号の組合せで特定の文字列を指定する方法)を持ち合わせるため、
テキスト処理に強い。
・Ruby 1993 年
まつもとゆきひろ氏の開発による国産のオブジェクト指向スクリプト言語。小規模のアプリケーション開
発に向く。2004 年に発表された「Ruby on Rails」というソフトウェア部品群によって、プログラミングの効
率化が進んだため人気が出た。
・Java 1995 年
企業向けのプログラミングで良く利用されている。オブジェクト指向コンパイラ言語であり、プラットフ
ォームに依存しない。そのため、携帯電話、コンピュータ、ブルーレイディスクプレイヤ、自動車など、ど
こでも利用されている。ただし、作成したソフトウェアの動作が比較的遅い。
・PHP 1995 年
-2-
オブジェクト指向スクリプト言語。現在の Web プログラミングの主流。ヤフーや楽天といった大手ネッ
ト企業でも利用されている。C 言語や Perl の影響を受けている。変数の型宣言をはじめとした約束事が少な
いので初学者向きでもある。
・C# 2002 年
米 Microsoft によって、C++、Java、Visual Basic の利点を持ち寄せるかたちで設計されたオブジェクト
指向言語。大規模なソフトウェア開発に向く。
ハードウェア
コンピュータを構成する物理的な装置は大きく分けると以下の 3 つの装置で構成されている。
1)プロセッサ(中央処理装置、CPU)
基本的な演算および各装置の制御を行う。
2)記憶装置(メモリ)
目的の演算方法を記述したプログラムやデータを保存する。
メインメモリ:CPU と直接データをやり取りするため、データの読み書きを高速に行う。
補助記憶装置:メインメモリの容量不足を補う。低速、大容量、低価格である。
3)入出力装置(I/O 装置)
記憶装置との間でプログラムやデータのやり取りを行う。
入力装置:キーボード、マウス、スキャナ、タッチパネル
出力装置:ディスプレイ、プリンタ
ソフトウェア
ソフトウェアとはコンピュータに仕事をさせるためのプログラムのことをいう。以下に主要な用語の説明を述べ
る。
・アルゴリズム:コンピュータに仕事をさせるための処理手順
・プログラム:コンピュータに与える指示を書いたもの
・基本ソフトウェア:コンピュータ資源を有効に活用するための制御プログラムや処理プログラム
広義でのオペレーティングシステム(OS)
1)制御プログラム:ハードウェア管理、タスク管理、ファイル管理、ジョブ管理
2)処理プログラム:言語翻訳プログラム、サービスプログラム
・アプリケーションソフトウェア:特定の目的のために設計されたソフトウェア
ワープロソフト、表計算ソフト、Web ブラウザ、電子メール、ゲームなど
-3-
-4-
ALGOL(1958)
LISP(1958)
1960
PL/I(1964)
コンパイラ言語
インタプリタ言語
BASIC(1963)
1980
Scheme(1975)
ML(1973)
1990
C++(1983)
PHP(1995)
Python(1991)
Ruby(1993)
VB.NET(2002)
C#(2001)
JavaScript(1995)
Visual Basic(1991)
Perl(1987)
OCaml(1996)
2000
Java(1995)
Haskell(1990)
Common Lisp(1984)
プログラミング言語の歴史
C言語(1972)
Smalltalk(1969)
1970
Simula(1964)
COBOL(1959)
FORTRAN(1954)
マシン語
アセンブリ言語
1950
参考:日経ソフトウェア 2008 年 5 月号 プログラミング言語について参考にした。
-5-