ヒューム(プログラミング言語) - 百科事典
Humeは、2000年以来スコットランドのストラスクライド大学とヒリオット・ワット大学で開発された機能型プログラミング言語です。言語名は、「Higher-order Unified Meta-Environment」の略語であり、18世紀の哲学者デイビッド・フームに敬意を表しています。リアルタイム計算に対応する埋め込みシステムをターゲットにし、高度に抽象化された設計でありながら、時間と空間の実行コストを正確に抽出できるように設計されています。これにより、プログラムの実行における制限時間と空間の要求を保証できます。
Humeは、有限状態自動機のアイデアと機能型プログラミングのアイデアを組み合わせています。自動機は、通信するプログラムを「ボックス」という一連の構造に配置し、各ボックスは高レベルのパターンマッチングを使用して入力を出力に変換します。それは、異なるマシンの性質を露出するレベルのシリーズとして構成されています。
デザインモデル
Hume言語のデザインは、埋め込みシステムの分野で必要な基本的な性質と機能(特に透明な時間と空間コスト)を維持しつつ、可能な限り高いレベルのプログラム抽象化を取り入れることを目指しています。それは、シンプルなマイクロコントローラからスマートフォンなどの複雑なリアルタイムシステムまでのアプリケーションをターゲットとしています。この野心的な目標は、割り込み処理などの低レベルの概念とデータ構造抽象などの高レベルの概念を取り入れる必要があります。このようなシステムはさまざまな方法でプログラムされていますが、言語デザインはこれらの多様な要件を対応させる必要があります。
Humeは3層の言語です:外層(静的)宣言/メタプログラミングレイヤー、中間の調整レイヤーは動的プロセスと関連するデバイスの静的レイアウトを説明し、内層は各プロセスをパターンから表現への(動的)マッピングとして説明します。内層は無状態で纯粹機能的です。
コストモデルと正確性証明技術を現在の言語フレームワークに直接適用したり、より一般的な言語を変更すること(例えばRTSJ)であったのではなく、Humeのデザイナーは、形式モデルと証明を確実に構築できるようにHumeを設計しています。Humeは、各レベルが表現セマンティクスに表現能力を追加するが、あるいは望ましい性質を失ったり、形式正確性/コストモデルを提供する技術的難度を増加させたりする一連の重複する言語レベルとして構成されています。
特徴
インタープリタとコンパイラのバージョンは少し異なります。
インタープリタ(概念証明者)はタイムアウトとカスタム例外を許可します。
コンパイラはヒープとスタックのコスト境界を許可しますが、例外は例外名のみを印刷します。
調整システムはデータフロープログラミングスタイルでボックスを接続します。
表現言語はHaskellに似ています。
メッセージパスの並行システムはJoCamlのjoinパターンやポリホニックC#の和音を思い出させますが、すべてのチャンネルは非同期です。
スケジューラが組み込まれており、すべてのボックスを順番にパターンマッチングをチェックし、出力をコピーできない忙しい入力先にボックスを一時停止させます。
例
= コインláーメン =
参考文献
Patai, Gergely; Hanak, Peter (2007). "Embedded Functional Programming in Hume" (PDF). Archived from the original (PDF) on 23 December 2016.
参考書
Patai, Gergely; Hanak, Peter (2007). "Embedded Functional Programming in Hume" (PDF). Archived from the original (PDF) on 23 December 2016.
外部リンク
Humeプログラミング言語ウェブサイト
ヒリオット・ワット大学のHumeプロジェクト
EmBoundedプロジェクト、Humeのリソース境界コードを認証
Humeとマルチコア