式鬼言語 参考文献
2007/02/24_135051色々な言語
Forth系
計算結果を積んでおくスタックと、プログラム中の命令(ワード)の処理方法を記述したディクショナリを活用してプログラミングを行う手続き型言語。スタック操作を直接記述する逆ポーランド記法が特徴的な言語です。
何といっても、簡素で高速な言語でありながら高度に抽象化したプログラムが可能/柔軟すぎるあまり理解しにくい・バグを作り込みやすいという特徴より、組込み系で使われることが多い言語です。
トイプログラミング用としては最高に近いものですね。今でも、ワードをもっと分かり易く整理しなおせば十分使えると思います。
ただ、CやFORTRAN、BASICなど主流の手続き型言語とあまりにも異なったため、現在では絶滅しかけているという不遇の言語でもあります。
Forthは簡単な原理で動作するということもあり、色々な派生言語を生み出しています。
また、Forthの中心を“Concatenative”にあると捉えなおし、その特徴を推し進めた言語も生まれています。
- The Log of the No22
- Joy
- The Cat Programming Language
- Concatenative programming language Wikipedia
Lisp系
最近改めて注目を受けている関数型プログラミング言語の古参にして先端の言語ですね。「関数型」、「動的型付け」、「ファーストクラスオブジェクトとして扱える関数」など、近年のスクリプト言語の特徴の多くがLispで実装されています。
また、Lispの方言の一つのSchemeでは、さらに「ファーストクラスオブジェクトとして扱える継続」、「再帰の自動最適化」、「レキシカルスコープ」など、更なる強化を行っています。
また、Lispは拡張性の高い言語であり、オブジェクト指向も言語そのものには手を付けずにライブラリとして対応可能です。
多くのLisp系で採用されているオブジェクト指向システムはCLOSです。CLOSはLispとの相性を良くするため、「多重ディスパッチによる多態の実現」「多重継承」という特徴を持ちます。
また、例外処理も特殊(より汎用的)な『コンディション』と呼ばれる仕組みを使用しています。
io Language
io Languageは、クラスとオブジェクトの同一化を図った“プロトタイプ指向”“インスタンス指向”な言語です。コンパクトで軽い言語仕様ながらも高度な機能が特徴です。
オブジェクトを作成するときは“すでに存在するオブジェクトに委譲”または“すでに存在するオブジェクトをコピー”します。そうすることにより、元のオブジェクトの特徴を継承したオブジェクトを作ります。
プロトタイプ指向言語は、io以外だとNewtonScript、Self、JavaScript(ECMAScript)などがあります。JavaScriptはAjaxなんかで有名ですね。