はじめに

この文書について

この文書はプログラミング言語「パステルステッチ」の言語仕様を規定するものである。

この文書は解説書ではない。この文書では、用語を定義する前に使用することがある。その用語がパステルステッチ独自の概念または用法である場合は、この文書のいずれかの場所 (用語が使用された場所よりも前であることも後であることもある) で定義を示す。そうでない用語、すなわち、既存のプログラミング言語または計算機科学の用語を援用したものは、この文書では定義されない。

パステルステッチ

パステルステッチの最大の特長は、既存のプログラムをほとんど変更することなしに、既存のプログラムの末尾に新たなコードを付け加えるだけで、プログラムの機能を変更することができることである。これを追記プログラミング (appendable programming) という。追記プログラミングはパステルステッチの主要なスローガンである。

追記プログラミングはプログラムの柔軟な運用を可能にする。例えば、プログラムを共通部分と拡張部分に分けて配布することができ、拡張部分は自由に選択して組み合わせることができる。また、ユーザー自身がプログラムの末尾にコードを追加して、機能を独自に追加または変更することができる。このようなスタイルは、既存のプログラミング言語と分散型バージョン管理システムを組み合わせて運用することでも実現できるが、バージョン管理システムによる自動的なマージがしばしば失敗することなどを考えると、プログラミング言語のレベルで対応する方が確実である。

第 2 の特長は「コンティニュエーション」と呼ばれる強力な制御構造である。コンティニュエーションを持つプログラミング言語は少なくないが、パステルステッチのコンティニュエーションは、単純な文法で多様な応用が可能である。特に、パステルステッチを組み込み言語 (後述) として用いるとき効果を発揮する。コンティニュエーションを使うと、ホスト言語とゲスト言語の間を自由に行き来することができる。すなわち、ゲスト言語の実行を中断してホスト言語に戻り、その後、ホスト言語でコンティニュエーションを実行することによりゲスト言語の実行を再開することができる。

パステルステッチの想定される用途は「組み込み言語」である。すなわち、他のプログラミング言語 で作られたプログラムにパステルステッチのインタープリターを内蔵することで、パステルステッチを利用する。あるプログラミング言語で書かれたプログラムの上で、別のプログラミング言語のインタープリターが動作しているとき、前者のプログラミング言語をホスト言語 (host language)、後者をゲスト言語 (guest language) という。この文書では、ゲスト言語はパステルステッチである。

組み込み言語として代表的なものに Lua がある。また、JavaScript はウェブブラウザの組み込み言語として知られている。独自の組み込み言語を内蔵しているソフトウェアには Emacs、TeX などがある。

これまで説明した特長の他に、パステルステッチには、明確に利点であるとは言えない変わった点がある。パステルステッチは既存のプログラミング言語が暗黙のうちに共有している慣習のうちのいくつかを無視している。例えば、ブロックの初めと終わりはブレースではなく、文字列の初めと終わりはダブルクォーテーションではない。パステルステッチの文の終わりは改行であるが (これは多数のプログラミング言語で採用されている)、行をまたいで文を継続するには、改行のに行継続の記号を置く。比較演算子は左向きの < と ≤ はあるが右向きの > と ≥ はない。見た目の問題ではなく、プログラミング言語の機能として奇妙なのは、変数への代入を持たず、かわりに記憶装置への書き込みを利用することである。

パステルステッチは既存のプログラミング言語の慣習にとらわれない方針である。だからと言って、奇妙なだけで実用性のない特徴を導入することはない。

名称について

パステルステッチの英語での正式な名称は “Pastel Stitch” であり、日本語での正式な名称は「パステルステッチ」である。他の言語でパステルステッチに言及する際には、英語または日本語の名称と、スペル、発音、意味の少なくともいずれかが一致していなければならない。

「パステルステッチ」という名称に特に意味または由来はない。また、パステルステッチの機能または特長を反映しているわけではない。

言語仕様 2016 について

2015 年 1 月 18 日、パステルステッチのリファレンス実装の安定版 (バージョン 2.1.0) がリリースされるとともに、言語仕様 2014 が固定された。続いて 2015 年 12 月 19 日、リファレンス実装 3.1.1 がリリースされるとともに、言語仕様 2015 が固定された。この「言語仕様 2016」は言語仕様 2015 を改訂するものである。2016 年 7 月 26 日、リファレンス実装 4.1 がリリースされるとともに、この言語仕様 2016 が固定された。

献辞

言語仕様 2014 とリファレンス実装 2 はイブン・アル=ハイサムを、言語仕様 2015 とリファレンス実装 3 は福岡正信を、言語仕様 2016 と リファレンス実装 4 はフレデリック・ブリュリィ・ブアブレを記念する。