What is Live Programming?

2014/08/12

なに?

Live Programmingとは,通常のedit-compile-runという流れを一つに押し込めてしまえというものである. Live Programmingでは,編集に対する,実行結果,実行の変化が即座にフィードバックされてくる.

イメージとしては,多くの環境,エディタは型エラー,文法エラー等の静的に解析できるエラーを即座に表示してくれるが, Live Programmingでは静的な情報だけでなく,実行しなければわからない動的な情報も表示してくれる感じである.

定義

基本的に厳密な定義はない. 実行情報のフィードバックが即座に来るような環境であればLive Programmingである. 伝統的なread-eval-print-loop(後述)もLive Programmingに含まれると思われる.

read-eval-print-loop

以下では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もまた,実行のフィードバックが即座に表われる環境の一つである.

実装

いくつか知られている.

Apple Swift
PlayGroundと呼ばれている機能がある. (https://developer.apple.com/swift/) LightTable
私には使い方が良くわからなかった. (http://www.lighttable.com/) Shiranui
後述 YinYang
公開されていないので試せないが,マジメにがんばろうとしているみたい.(http://research.microsoft.com/en-us/people/smcdirm/liveprogramming.aspx) Python,Ruby...
REPLをもつ

利点

問題点

いくつか知られている問題がある.

解決法

当然ながら,解決法が模索されている. 例えば

等々.ただ,根本的には解決できていない.

Shiranui

ここからが本題. Shiranuiは,私が開発しているライブプログラミング環境である.

What's New

今までのライブプログラミング環境は,まぁおもしろいけど役には立ちそうにはなかった. 理由としては,上に挙げた問題点も抱えているし,既存の手法とのマージがうまくいっていなかった. せっかく動的な情報が扱えるのならば,それを使った既存の手法と相性が良いはずである. 具体的には

Shiranuiでは現在単体テスト部分の実装がほぼ完了している.

Shiranuiによる単体テスト

Shiranuiによる単体テスト
Shiranuiによる単体テスト
黄の行(IdleFlyline)
左辺,あるいはコードの変更により右辺が変化する. 緑の行(TestFlyline)
これは正しい 赤の行(TestFlyline)
これは間違っている

型や,コメントと同じように単体テストを直接ソースコードに埋め込むことでドキュメントとして使えることが期待できる. フィードバックは即座にあり,どこかの関数呼び出しをテストにexportする等の拡張を予定している.

Shiranuiの未来

当然,Live Programmingに関する問題点をShiranuiも抱えている. これを回避する一つの作戦がある. それは,Shiranuiを競技プログラミングに特化した言語として扱うことである.

競技プログラミングの特殊性

競技プログラミングには以下の特殊性がある

これにより,Live Programmingが抱える問題点を回避し,かつLive Programmingの利点を競技プログラミングの世界に持ち込むことが可能と考えている.

参考