2014-09-26

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

Categories: プログラミング
no_image.jpg

[ PR ]


プログラミング言語は種類がありすぎて、何が違うのか一目ではわかりません。

そこで、それぞれの言語の特徴を一言で表してみます。

低水準言語

── コンピュータが動作する基礎となる言語。

■ 機械語

機械をコントロールするための言語。人間に読めるように出来ておらず、複数の命令と引数から成る。

■ アセンブラ

機械語に最も近い、人が読める言語。機械語に変換されるため、マシンの特徴を最大限に生かせる。

■ 中間言語

ソースコードと機械語の中間に位置する中間的な表現。主に仮想マシンインタプリタなどで、機械語に変換する前に最適化を施すための工程で用いられる。

汎用言語

── 静的型付け言語が多く、コンパイルすることで高速に動作する。

■ Pascal

http://www.freepascal.org/

コンピュータの黎明期を代表するプログラミング言語。実用的で柔軟なALGOL言語とは対称的に、非常に厳格な文法を持つ。

非常に抽象度が高い実装で、移植性が高く、現在の全ての言語の基礎を成したとも言える。

■ ALGOL

http://algol68.sourceforge.net/

1950年代に開発され、Pascalとは全く逆の考え方を持つ。命令型プログラミングというパラダイムを持ち、C言語を始めとする命令型言語に大きな影響を及ぼした。

■ FORTRAN

https://gcc.gnu.org/fortran/

世界初の高水準言語。科学技術計算に特化しており、スーパーコンピュータでも使われている。

■ COBOL

http://jp.opencobol.org/

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

https://www.java.com/ja/

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

http://php.net/

Webサーバーに特化した言語。HTMLを基本に、<?php ... ?>で囲んだ部分に処理するコードを書く。

■ Perl

https://www.perl.org/

汎用言語を目指して作られた言語。文字列の処理を得意とし、主にWebサーバに用いられる。

■ Python

https://www.python.org/

教育用に作られた言語で、「誰が書いても同じコードになる」ことを美学とする。主にWebサーバに用いられる。

■ Ruby

https://www.ruby-lang.org/ja/

楽しくプログラムできることを目指し、「手段は複数ある」を美学とする。主にWebサーバに用いられる。

日本人のまつもとゆきひろが開発した。

■ JavaScript

http://www.ecmascript.org/

プロトタイプを基礎にしたオブジェクト指向言語。その汎用性から、ほとんどのブラウザに標準搭載されており、Webサーバでも用いることができる。

仕様はECMAScript (ECMA-262)に規定されている。

関数型言語

── ラムダ計算を基礎とした言語。手続き型とは全く異なった考え方を持つ。

■ OCaml

http://caml.inria.fr/ocaml/

MLを基礎に持つ言語。ML型推論によって「型が推論できたらそのプログラムは正しい」という特徴を持つ。最適化したコードの動作は非常に速く、C言語の次に高速に動作する。

■ F#

http://msdn.microsoft.com/en-us/vstudio/hh388569.aspx

OCamlと瓜二つの.NET向け言語。OCaml互換の標準ライブラリを備えており、OCamlにはない拡張が行われている。

■ Haskell

http://www.haskell.org/

関数型言語の研究用に開発された言語。すべての式や関数に副作用がなく、式の値は文脈によらず構成要素のみで決まるという性質がある(参照透過性)。

■ Scala

http://www.scala-lang.org/

Java仮想マシンで動く言語の一つ。手続き型言語と関数型言語の特徴を併せ持ち、型推論第一級関数を活用することにより、同じ内容のJavaのコードの半分以下の記述量で済む場合がある。

■ Lisp

http://common-lisp.net/

元はAIのために作られた、リストを処理するための言語。文法は「アトム(要素)」と「リスト」のみであるため、LispをLispで処理 (eval) できるという性質を持つ(同図像性)。その性質を利用し、メタプログラミングを行うことができる。

多数の方言が存在し、多くの言語に影響を与えた。

データ記述言語

── 文字通りデータを記述するための言語。ほとんどがチューリング完全ではない。

■ XML

http://www.w3.org/XML/

汎用的なデータを記述するために開発された言語。人間が読むことができるテキスト形式になっている。開始タグと終了タグ(<a>...</a>)が対になっており、入れ子にすることができる。

ファイルの保存形式やインターネットでのデータ通信に用いたり、プログラムのコードをシリアライズするために利用される。

■ HTML

http://www.w3.org/html/

XMLをベースに、ウェブページを記述する言語として拡張された。XMLとは全く異なり、柔軟な記述が可能で、CSSでスタイルシートを記述し、JavaScriptでブラウザ上での処理を記述する。

■ JSON

http://json.org/json-ja.html

JavaScriptのサブセットで、軽量データ記述言語として使われる。軽量と呼ばれる理由は、XMLが冗長でデータ量が多くなるため、通信に用いる際にXMLの代わりに使われるためである。

■ YAML

http://www.yaml.org/

多様な記述方法により可読性に富む。JSONをサブセットに持ち、インライン記述とブロック記述、または両方を使って記述することができる。

■ Markdown

http://daringfireball.net/projects/markdown/

HTMLに変換される言語。文書を簡単に書くことができ、軽量マークアップ言語と呼ばれる。HTML自体を含めることができる。

■ TeX

http://www.latex-project.org/

構造的な文書を記述するための言語で、美しい字体・体裁が特徴で、数式なども綺麗に出力されるため、論文や出版などに用いられる。

まとめ

いかがでしたでしょうか。これが何かの参考になれば幸いです。

コメントはTwitterアカウントにお願いします。

RECENT POSTS


[ PR ]

.