インターネットのあちこちを探しまくって目的のコード片を見つけてくれるDeepCoder、プログラマーの生産性は上がるか?

markus-spiske-207946

ぼくはプロのプログラマーではないけど、でも彼らを真似て、多くのコードをStackOverflowのQ&Aからもらっている。Flaskに認証を加えるやり方は? そんなの簡単。sendmailのシャットダウンの仕方は? ほら、これさ。そして、今やインターネット上のすべてのコードのおかげで、ロボットが年俸18万ドルのプログラマー並に優秀だ。

そのシステムはDeepCoderと呼ばれ、コードのコーパスを検索して仕様どおりに動くコードを構築する。すでにプログラミングのコンペに‘参戦’したこともあり、またコードではなく、複雑なプロダクトを作るための大きなデータセットを見つけることもできる。

彼らのペーパーより:

たとえばIPSシステムを作るためには二つの問題を解決しなければならない。最初に、その問題の解になりそうな適切なプログラムの集合を見つける。そして次は、手元の要件に照らしてそれらのプログラム集合をランク付けする。どれが、今抱えている問題の解として使えそうか? この二つの問題はどちらも、問題の具体的な内容に依存している。したがって、プログラムを組み立てていくための最初の重要な決定は、ドメインスペシフィックな言語を選ぶことだ。

 

このシステムは使ってるうちに次第に賢くなり、どんな場合にどんなコード片が良いのかを、自分で見分けるようになる。そして、そうやって‘学習’を重ねるたびに、ユーザーはプログラムをより早く書けるようになる。

ケンブリッジ大学のMatej BalogとMicrosoft ResearchのAlexander L. Gaunt, Marc Brockschmidt, Sebastian Nowozin, Daniel Tarlowがこのプロダクトを作り、その使い方に関するペーパーを共著した。ただし、このようなシステムを使って、小さなコード片から大きなプロジェクトを構築することはできない。そういうのを、‘ないものねだり’と言う。

こういった、既存のコードの切り貼り再利用は、多くのプログラマーが実際にやっていることだから、ディープラーニングの優れた応用と言えるだろう。データベースの更新のようなシンプルなCRUDアプリケーションには、十分に使えると思う。入社したばかりの初心者プログラマーにやらせる仕事がなくなる、と言えるかもしれない。でもAIロボットが地球と人類を支配して、人間の仕事が完全になくなってしまうのも、悪くないね。

[原文へ]
(翻訳:iwatani(a.k.a. hiwa))