ホーム > テクノロジー > 高階プログラミングプロジェクト > 高階プログラミングとは

高階プログラミングとは

プログラムによってプログラムを合成しながらソフトウェアを組み立てるプログラミングスタイルを高階プログラミングといいます。

- 高いモジュラリティ:

プログラムの保守性、拡張性、再利用性を確保するキーワードはモジュラリティ(標準部品化力)です。しかし、部分的にモジュラリティを高めるという手法では、大規模かつ複雑なソフトウェアを正しく記述することは難しくなりつつあります。また、よく普及している手法は部品への分解については優れていても、分解した部品を合成する統一的な方法を提供していない場合が多いようです。高階プログラミングでは、プログラム自身を第一級の計算対象として扱うので、プログラムを構成する部品を統一的に扱うことで高いモジュラリティを獲得できます。

- 高階プログラミングをサポートする言語

高階プログラミングを自然に行うためにはプログラミングに用いる言語にプログラムを第一級の計算対象(First Class Object)とできる機能が備わっている必要があります。

Gauche - A Scheme Interpreter とは

GaucheはScheme Arts, LLCの川合史朗により開発保守されているSchemeインタプリタです。SchemeはS式という構文を基本とするLisp族の言語です。Lispは1958年に誕生し、今年で50歳を迎える言語ですが、プログラミング言語をプログラムする言語、すなわち、高階プログラミングというアイデアを最初にプログラマに知らしめた言語としての先進性はいまも他の言語の追従を許していません。SchemeはそのLispのなかからエッセンスだけを抽出した最も洗練されたLisp族の言語です。この洗練された言語に実用的なAPIとライブラリ、多言語処理などのを付け加えたのがGaucheです。

Kahuaとは

Kahuaは、Scheme言語処理系Gaucheを使って書かれた、継続ベースのアプリケーションサーバ/フレームワークです。Kahuaプロジェクトによって開発が行われ、修正BSDライセンス の下でオープンソースソフトウェアとして公開されています。

あるアプリケーションロジックを記述する場合、Webアプリケーションでは、状態をセッションオブジェクトという一種の大域変数に明示的に保存する手法が主流でした。これは、本質的にステートレスな(状態を持たない)プロトコルであるHTTPを使う上では単純で現実的な手法でしたが、同時にプログラマが常に状態の保持を意識する必要があり煩雑でした。

継続ベースの開発環境では、ロジックの中の任意の場所の状態を「継続」という形で抽象化していつでも取得することができます。開発者は状態の保持や整合性の確保に気をとられることなく、中心となるロジックに集中することができます。

継続ベースのフレームワークはKahua以外にもかなりの数が出現しています。しかし、言語コアに継続や静的スコープ、無限エクステントといった機能を備え、なにより高階プログラミングを十分にサポートできるプログラミング言語Schemeにおいてこそ、継続ベース開発の真価が発揮できます。

Haskellとは

Haskellは関数プログラミングというプログラミングスタイルを強力にサポートする汎用プログラミング言語です。

「Haskell は汎用の純粋関数型プログラミング言語で、プログラミング言語設計の分野での最近の革新の多くが取入れられている。Haskell が提供する のは、高階関数、非正格の意味論、静的多相型付け、利用者定義の代数的データ型、パターン照合、リストの内包表記、モジュールシステム、モナド I/Oシステムである。また、さらに次のような豊かなプリミティブデータ型が用意されている。リスト、配列、任意倍長整数、固定倍長整数、浮動小数点数。Haskell は遅延評価型関数型言語に関する長年の研究を凝縮したものであり、また、その頂点にたつものである。」-- Haskell 98 言語とライブラリ