【プログラミング】言語の特徴を、一言で表してみる

[ PR ]
プログラミング言語は種類がありすぎて、何が違うのか一目ではわかりません。
そこで、それぞれの言語の特徴を一言で表してみます。
低水準言語
── コンピュータが動作する基礎となる言語。
■ 機械語
機械をコントロールするための言語。人間に読めるように出来ておらず、複数の命令と引数から成る。
■ アセンブラ
機械語に最も近い、人が読める言語。機械語に変換されるため、マシンの特徴を最大限に生かせる。
■ 中間言語
ソースコードと機械語の中間に位置する中間的な表現。主に仮想マシンやインタプリタなどで、機械語に変換する前に最適化を施すための工程で用いられる。
汎用言語
── 静的型付け言語が多く、コンパイルすることで高速に動作する。
■ Pascal
コンピュータの黎明期を代表するプログラミング言語。実用的で柔軟なALGOL言語とは対称的に、非常に厳格な文法を持つ。
非常に抽象度が高い実装で、移植性が高く、現在の全ての言語の基礎を成したとも言える。
■ ALGOL
http://algol68.sourceforge.net/
1950年代に開発され、Pascalとは全く逆の考え方を持つ。命令型プログラミングというパラダイムを持ち、C言語を始めとする命令型言語に大きな影響を及ぼした。
■ FORTRAN
世界初の高水準言語。科学技術計算に特化しており、スーパーコンピュータでも使われている。
■ COBOL
1959年頃に登場した事務処理に特化した言語。専門家でなくても使えることを意図しているため、英語に近い文法を持つ。
事務処理に関する機能は非常に充実し、一部の会社では現在も使われているが、初期のCOBOLとは異なり、Javaとの連携やモダンな機能の充実が図られている。
■ Ada
http://ja.wikipedia.org/wiki/Ada
米国防総省が開発した組み込み用途向けの言語。大規模開発・長期保守性のために効率より可読性を重視し、マクロが存在しない。
■ C
http://www.open-std.org/jtc1/sc22/wg14/
高水準言語の中で最も省メモリで高速。メモリに直接アクセスすることが可能で、様々な用途に用いられるが、特に組み込み用途に用いられる。
ANSIとISOで標準化されている。
■ C++
http://www.open-std.org/jtc1/sc22/wg21/
C言語を拡張したオブジェクト指向言語。拡張性に富み、主にアプリケーション開発に用いられる。
■ Java
Java仮想マシン上で動くオブジェクト指向言語。コードを書き換えなくても他のマシンで動作するという特徴を活かし、様々な用途に用いられるが、例えばAndroidの記述言語に使用されている。
現在はOracleが開発を進めている。
■ C#
http://msdn.microsoft.com/en-us/vstudio/hh341490.aspx
.NET仮想マシンで動くオブジェクト指向言語。Javaとの類似点が多いが、幅広い表現力を持ち、主にWindowsで使われる。Monoというオープンソースプロジェクトもある。
■ Visual Basic .NET
http://msdn.microsoft.com/en-us/vstudio/hh388573.aspx
言語仕様が英語の文法に近く、入門用に適した言語。C#と同じく.NET仮想マシンで動作する。主に事務アプリケーションの作成に特化している。
スクリプト言語
── コンパイルを必要とせず、ソフトウェアの制御やWebサーバに用いられる言語。
■ PHP
Webサーバーに特化した言語。HTMLを基本に、<?php ... ?>
で囲んだ部分に処理するコードを書く。
■ Perl
汎用言語を目指して作られた言語。文字列の処理を得意とし、主にWebサーバに用いられる。
■ Python
教育用に作られた言語で、「誰が書いても同じコードになる」ことを美学とする。主にWebサーバに用いられる。
■ Ruby
楽しくプログラムできることを目指し、「手段は複数ある」を美学とする。主にWebサーバに用いられる。
日本人のまつもとゆきひろが開発した。
■ JavaScript
プロトタイプを基礎にしたオブジェクト指向言語。その汎用性から、ほとんどのブラウザに標準搭載されており、Webサーバでも用いることができる。
仕様はECMAScript (ECMA-262)に規定されている。
関数型言語
── ラムダ計算を基礎とした言語。手続き型とは全く異なった考え方を持つ。
■ OCaml
MLを基礎に持つ言語。ML型推論によって「型が推論できたらそのプログラムは正しい」という特徴を持つ。最適化したコードの動作は非常に速く、C言語の次に高速に動作する。
■ F#
http://msdn.microsoft.com/en-us/vstudio/hh388569.aspx
OCamlと瓜二つの.NET向け言語。OCaml互換の標準ライブラリを備えており、OCamlにはない拡張が行われている。
■ Haskell
関数型言語の研究用に開発された言語。すべての式や関数に副作用がなく、式の値は文脈によらず構成要素のみで決まるという性質がある(参照透過性)。
■ Scala
Java仮想マシンで動く言語の一つ。手続き型言語と関数型言語の特徴を併せ持ち、型推論や第一級関数を活用することにより、同じ内容のJavaのコードの半分以下の記述量で済む場合がある。
■ Lisp
元はAIのために作られた、リストを処理するための言語。文法は「アトム(要素)」と「リスト」のみであるため、LispをLispで処理 (eval) できるという性質を持つ(同図像性)。その性質を利用し、メタプログラミングを行うことができる。
多数の方言が存在し、多くの言語に影響を与えた。
データ記述言語
── 文字通りデータを記述するための言語。ほとんどがチューリング完全ではない。
■ XML
汎用的なデータを記述するために開発された言語。人間が読むことができるテキスト形式になっている。開始タグと終了タグ(<a>...</a>
)が対になっており、入れ子にすることができる。
ファイルの保存形式やインターネットでのデータ通信に用いたり、プログラムのコードをシリアライズするために利用される。
■ HTML
XMLをベースに、ウェブページを記述する言語として拡張された。XMLとは全く異なり、柔軟な記述が可能で、CSSでスタイルシートを記述し、JavaScriptでブラウザ上での処理を記述する。
■ JSON
JavaScriptのサブセットで、軽量データ記述言語として使われる。軽量と呼ばれる理由は、XMLが冗長でデータ量が多くなるため、通信に用いる際にXMLの代わりに使われるためである。
■ YAML
多様な記述方法により可読性に富む。JSONをサブセットに持ち、インライン記述とブロック記述、または両方を使って記述することができる。
■ Markdown
http://daringfireball.net/projects/markdown/
HTMLに変換される言語。文書を簡単に書くことができ、軽量マークアップ言語と呼ばれる。HTML自体を含めることができる。
■ TeX
構造的な文書を記述するための言語で、美しい字体・体裁が特徴で、数式なども綺麗に出力されるため、論文や出版などに用いられる。
まとめ
いかがでしたでしょうか。これが何かの参考になれば幸いです。