当ブログは YAMDAS Project の更新履歴ページです。2019年よりはてなブログに移転しました。

Twitter はてなアンテナに追加 Feedlyに登録 RSS

次世代のプログラミングツール、未来のプログラミング言語の方向性について

Quara における「コンピュータプログラミングにおける最後のブレイクスルーってなんでしょう?」という質問に対するアラン・ケイの回答に触発された文章である(アラン・ケイって Quara で精力的に回答してんだね)。

アラン・ケイは上記の質問に対して、プログラミングツールの現状について嘆いている。他分野の工学分野、例えばコンピュータを使ったデザインやシミュレーションやテストであったり製造業であれば、それ用のモダンなツールがあるのに、プログラミングは1970年代から大きく進化していない。我々プログラマは他人のために素晴らしいツールを作ってきたが、自分たちのためのツールはそうでない。靴屋の子供の靴に穴が空いてるようなものだ、というわけだ。

この文章の著者であるマイク・ルキダス(O'Reilly Mediaのコンテンツ戦略担当副社長)は、ケイの回答に完全に同意はしてないようだが、我々は未だ「パンチカード」を使ってるようなものではないかと書く。確かにモニタは高解像になったが、未だ英数字の文字セットを使って一行一行書いてる時点で実質パンチカードじゃないかというわけ。使っているプログラミング言語も大方 C や LISP 由来で、プログラミングのコミュニティで一番議論になるのは、それらの古来からあるパラダイムのどれがより優れてるかということに終始しているし。

確かに IDE はこの「パンチカード」の作成をいくらか簡単にはしれくれるが、根本的な変化をもたらすものではない。ユニットテストにしても、バージョン管理にしても、継続的インテグレーションや継続的デプロイやコンテナオーケストレーションのツールにしても、どれも「パンチカード」を増やすことでプログラミングされるものに変わりはない。

SQL のような手続き型でない言語で視覚的なプログラミングを実現しているデータベース分野が参考になりそうである。つまり、真の次世代のプログラミング言語は、LISP や C や Smalltalk の構文の焼き直しじゃなくて、もはや文字自体使わないような視覚的なものになるとマイク・ルキダスは考えている。タイピングではなくて、欲しいものを描くわけだ。

マイク・ルキダスの見立てでは、それを実現している言語はまだなく、Alice や Scratch は面白い試みだけど、既にあるプログラミング言語パラダイムに視覚的メタファーを適用しているだけで、真の次世代からはまだずっと遠い。

そこでマイク・ルキダスは、プログラミングの未来を考える助けとなる二つのトレンドを挙げる。

まず一つ目として、プログラマには二種類のタイプがあるという話から始める。具体的には、いくつかのものを組み合わせてものを作る「ブルーカラー」タイプと、他の人が組み合わせに使うものそのものを作る「アカデミック」タイプの二種類というわけだが、どっちのほうが価値があるとか重要というのを言いたいわけではなくて、両方のタイプの存在とも必要なのだが、数でいえば前者のほうが、後者よりも多いはずだ。つまり、ウェブアプリケーションを作るプログラマのほうが、ウェブフレームワークを作ったり、新しいアルゴリズムを考案したり、基礎研究をやるプログラマより数が多いということ。

そこでマイク・ルキダスは、コンピュータ分野の配管工はアルゴリズムのデザイナーと同じツールを使うべきだろうか? と問う。そうじゃないと彼は考えており、この既存のものを組み合わせて目的を達する、コンピュータ分野の配管工向けのプログラミング言語は視覚的にできるのではないかというのが彼の主張である。

次にマイク・ルキダスは、人工知能におけるもっとも面白い研究分野の一つにコード作成機能があることを指摘する。将来、AI がコードを書けるようになれば、人間はどんな種類のコードで書いてほしいだろうか。それはループや条件節とか関数とかを手順を一行ずつ書くものじゃないだろう。

既存のプログラミング言語を使わず機械学習のアプリケーションを作るシステムとして、Jeremy Howard が platform.ai でやってるプロジェクトなどがあるし、マイクロソフトが既存のプログラミングを行わずに訓練データをドラッグ&ドロップで組み立てて機械学習のモデルを作るグラフィカルツールを提供しているのも参考になる。

つまりは、昔堅気のプログラマなら、そんなの「本物のプログラミング」じゃない、と言いたくなるような方向性だろうが、ここでマイク・ルキダスは「アカデミック」タイプを対象としていないし、ビルドツール、(Chef や Puppet から CFengine にいたる)設定の自動化、Nagios 以降のネットワーク監視、継続的インテグレーション、そしてコンテナオーケストレーションにおける Kubernetes にいたる歴史がある。

上でも指摘されている通り、残念なことにこれらのツールは実質的に未だ XMLJSON といったテキストの「パンチカード」で設定するわけだが、それは乗り越えなくてはならない問題だし、プログラミング用の視覚的な言語を作るよりは、こうしたツール向けの視覚的な言語を作るほうがずっと容易なはずだとマイク・ルキダスは主張する。

プログラマはひどいツールに慣れており、それを使うのが通過儀礼というか「俺たちはこのクソに耐えたんだから、本物のプログラマになりたいならお前もそうしろ」的な一種のしごきなのかもしれない。この状態に甘んじてはいけないという点でアラン・ケイは正しいとマイク・ルキダスは書くが、彼が示唆する視覚的な方向性にケイが同意するかは分かりませんね。

個人的には、「ブルーカラー」タイプのプログラマ向けの視覚的な言語が人間向けの大きな需要があると思うが、本格的に AI がコードを生産するようになれば、そんなの凌駕されてしまうのではないかという気もする。

プログラミング言語図鑑

プログラミング言語図鑑

[YAMDAS Projectトップページ]


クリエイティブ・コモンズ・ライセンス
YAMDAS現更新履歴のテキストは、クリエイティブ・コモンズ 表示 - 非営利 - 継承 4.0 国際 ライセンスの下に提供されています。

Copyright (c) 2003-2020 yomoyomo (E-mail: ymgrtq at yamdas dot org)