xrea-banner xreaad

言語仕様の比較

namespace kilrey; / プログラミング全般 / 基礎概念 / 言語仕様の比較

前のページ(クロージャベース)へ

ここでは各種プログラミング言語の仕様を比較します。 あくまでも言語仕様としてその機能があるかという観点に則しており、 各個の機能についての是非はまた別の問題です。 例えば一般にgotoの濫用は害が大きいと思いますが、 goto類似の機能が欲しい状況もしばしばありますね。 間違っている場所があれば はてなのコメント欄 で教えてください。

凡例
記号 意味
o 言語の基本機能として備えている
@ 基本機能ではないが仕様に含まれる
! o,@の機能から容易に実現できる
不完全ながら備えている
x 備えていない
? 私もよく判っていない
() 機能に追加する計画がある

ただ、基本的にはoが多いほど大きな言語、 @,!が多いほど小さくても表現力の高い言語ということになります。 xとしてある項目でも原理的には実現可能なので、 達成するのが面倒かどうかという程度の問題と思ってください。

補足です。 @には基本機能の組み合わせで実現されていた機能だったり、 標準ライブラリで実現されていたりするものが含まれます。 !には標準ライブラリに見つからなかったものの、 簡単に実装できそうなものが含まれます。 処理系に依存する場合は数えません。

言語仕様の比較
大域変数局所変数変数宣言代入ユーザ型型推論関数ファンクタ無名関数クロージャ正格評価遅延評価GOTOループ大域脱出一級継続マクロOOPLeval
GNU Assembleroxx破壊xxxxxxxoxoxxxxx
Fortranooo破壊静的xoxxxoxooxxxx
COBOL(自信なし)oxo破壊静的oxoxxxoxooxxxxx
大域変数局所変数変数宣言代入ユーザ型型推論関数ファンクタ無名関数クロージャ正格評価遅延評価GOTOループ大域脱出一級継続マクロOOPLeval
C言語ooo破壊静的oxooxxoxoo@xxx
C++ooo破壊静的ox(∆)oox(∆)x(∆)oxoooxoox
D言語ooo破壊静的oooo∆(o)oooooxooo
Objective-Cooo破壊静的oxooxxoxoooxox
Delphiooo破壊静的oxooxxoxoooxox
Javaoo破壊静的ox(∆)∆(o)∆(o)∆(o)x(∆)oxxooxxox
C#oo破壊静的oooooooooxoox
Smalltalk(自信なし)ooo破壊動的oxooooxxooxoo
大域変数局所変数変数宣言代入ユーザ型型推論関数ファンクタ無名関数クロージャ正格評価遅延評価GOTOループ大域脱出一級継続マクロOOPLeval
Rubyox破壊動的oxoooxxoooxoo
Pythonooo破壊動的oxooooxxooxxoo
Groovyooo破壊動的oxoooooxxooxxoo
JavaScripto破壊動的xxoooooxxooxxoo
大域変数局所変数変数宣言代入ユーザ型型推論関数ファンクタ無名関数クロージャ正格評価遅延評価GOTOループ大域脱出一級継続マクロOOPLeval
Awkox破壊動的xxoxxxoxxoxx?x?
Tcloox破壊xxxoxxxooxoxxxoo
Visual Basicooo破壊静的oxooo?oxoooxxoo
大域変数局所変数変数宣言代入ユーザ型型推論関数ファンクタ無名関数クロージャ正格評価遅延評価GOTOループ大域脱出一級継続マクロOOPLeval
Schemeoox破壊動的!xooooo!@ooo!o
Common Lispoox破壊動的@xooooo!@@!o@o
emacs lispoox破壊動的!xoooxo!!!!o!o
大域変数局所変数変数宣言代入ユーザ型型推論関数ファンクタ無名関数クロージャ正格評価遅延評価GOTOループ大域脱出一級継続マクロOOPLeval
Haskellooo単一静的ooooooox!!!xxx
Prolog(自信なし)xox単一静的?xo???ox!??xxx
大域変数局所変数変数宣言代入ユーザ型型推論関数ファンクタ無名関数クロージャ正格評価遅延評価GOTOループ大域脱出一級継続マクロOOPLeval
Fortho!o破壊xxxoxxoxoo!!oxo
Brainf*ckxx破壊xxxxxxxoxxoxxxxx

前のページ(クロージャベース)へ