Scheme:将来のプログラミング

Scheme:将来のプログラミング

以下は、すぐにどうこうという話ではなくて、将来的なアイデアの話です。
hamayama(2016/04/24 07:11:22 UTC)(2016/04/26 03:14:10 UTC)
(2016/04/28 13:24:14 UTC)(2016/05/27 18:40:58 UTC)
(2017/01/12 16:17:59 UTC)


Lisp/Scheme のプログラムを勉強していくと、自分の書いていたプログラムが、すごく短くなることがある。
これを、AI 等で実現できないだろうか。
例えば、Google 翻訳のようなページに自分の書いたソースを貼り付けると、数十行が数行になるとしたら、
自分の実力以上のプログラマになることができる。
このとき、コンピュータ向けの コンパイラのような最適化ではなくて、人間向けの 可読性を含めた最適化がされてほしい。
そして、あたかも自分が作成したプログラムであるかのように、その後も改造や改善が自分で続けられるようなものであってほしい。

すなわち、人間の指示(入力)に対して、単に出力を求めるのではなく、入力自体を最適化する問題ということになる。
以前であれば、目標の設定が難しくて計算できない、ということになっただろうが、
最近の AI であれば、学習によって、対応できるのではないだろうか。

必要なものとしては、
(1) どのような形のソースに高得点を与えるかというような評価関数
(2) 計算結果が変わらないような、プログラムの変形を列挙する処理
(3) 一般ユーザが書いた普通のプログラムと、それをプロがリファクタリングした結果のセットのデータ
あたりだろうか。

単純に考えると、以下のような方法が思いつく。
(1) については、手続きの並びに点数を与えるようにして、学習によって、どの並びが高得点になるかを計算する。
(2) については、プログラムをランダムに変形して、実際に処理系に計算させ、結果が等しくなるものを抽出する。
(3) については、難しそうだが、例えば、競技プログラミングなどと連携して、データを継続的に収集していくようにすれば、集められるかもしれない。

上記(1)-(3)を元に、評価関数の値が最大となるように、プログラムの変形を繰り返せば、何らかの結果が得られると思う。
実際には、計算量とのバランスで、もっと効率の良い方法を考える必要がありそうだが。。。

<検討メモ>


Last modified : 2018/03/05 13:53:31 UTC