Live Programmingとは,通常のedit-compile-runという流れを一つに押し込めてしまえというものである. Live Programmingでは,編集に対する,実行結果,実行の変化が即座にフィードバックされてくる.
イメージとしては,多くの環境,エディタは型エラー,文法エラー等の静的に解析できるエラーを即座に表示してくれるが, Live Programmingでは静的な情報だけでなく,実行しなければわからない動的な情報も表示してくれる感じである.
基本的に厳密な定義はない. 実行情報のフィードバックが即座に来るような環境であればLive Programmingである. 伝統的なread-eval-print-loop(後述)もLive Programmingに含まれると思われる.
以下ではREPLと呼ぶ. REPLは日本語では「対話環境」と呼ばれている.下のようなものである.
Python 3.4.1 (default, May 19 2014, 17:23:49)
[GCC 4.9.0 20140507 (prerelease)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 1
>>> b = a * a
>>> print(b)
1
REPLもまた,実行のフィードバックが即座に表われる環境の一つである.
いくつか知られている.
いくつか知られている問題がある.
当然ながら,解決法が模索されている. 例えば
等々.ただ,根本的には解決できていない.
ここからが本題. Shiranuiは,私が開発しているライブプログラミング環境である.
今までのライブプログラミング環境は,まぁおもしろいけど役には立ちそうにはなかった. 理由としては,上に挙げた問題点も抱えているし,既存の手法とのマージがうまくいっていなかった. せっかく動的な情報が扱えるのならば,それを使った既存の手法と相性が良いはずである. 具体的には
Shiranuiでは現在単体テスト部分の実装がほぼ完了している.
型や,コメントと同じように単体テストを直接ソースコードに埋め込むことでドキュメントとして使えることが期待できる. フィードバックは即座にあり,どこかの関数呼び出しをテストにexportする等の拡張を予定している.
当然,Live Programmingに関する問題点をShiranuiも抱えている. これを回避する一つの作戦がある. それは,Shiranuiを競技プログラミングに特化した言語として扱うことである.
競技プログラミングには以下の特殊性がある
これにより,Live Programmingが抱える問題点を回避し,かつLive Programmingの利点を競技プログラミングの世界に持ち込むことが可能と考えている.