2050 年のプログラミング
千葉 滋・東京大学/プログラミング研究会 PRO
特集[創立60周年記念:2050年の情報処理]、情報処理 Vol.61 No.5 May 2020、pp.10-11.
プログラミングの進歩は、それを書く側の人間の進歩である。それを人間の進歩ではなく、人間の慣れ、と看破したのは竹内郁雄 [1] であるが、まさに、どこかの大学なり研究所で(あるいは著名な個人の手で)生まれた概念なり技法なりが、長い年月をかけて人々に浸透し、ときに全くの誤解を生みつつも、やがて当たり前のものとして定着する、というのがプログラミングの進歩の姿である。
人間はなかなか新しいことに慣れないので、進歩の速度はゆっくりとしたものである。30 年前と今とを比べると何が変わっているだろうか。’Most Popular Programming Languages 1965 - 2019’ (Data is Beautiful, 2019) なる YouTube 動画によると、1990 年に主流のプログラミング言語は上から C, Ada, Pascal, C++ であった らしい。一方、現在である 2019 年は Python, JavaScript, Java, C# なのだそうである。 なんだ、まったく違うではないか。とはいえ 30 年かけて、この程度の違いか、という感想を持たなくもない。
1. 先人の未来予測
進歩がゆっくりであれば未来予測も当たるということか。竹内の記事 [1] は「複数個書けば、どれかは運よく当たる」とうそぶきつつ、7 つの予測をしているが、今読んでみると、どれも驚くほど当たっている。(1) 蓄積型プログラムの終演、は昨今の FPGA によるプログラムの高速化を言い当てている。(2) キーボードの終焉、の「指話」はスマートフォンのフリック入力を彷彿とさせる。(3) プログラミング言語の自然言語化、はライブラリのインタフェース設計で話題の fluent API か。(4) コンピュータソフトウェアが社会制度になる、は企業が基幹システムとして導入する ERP パッケージに合わせて自社の業務フローを変える昨今の風潮を言い当てている。(5) 完全制御から遺伝子型制御へ、は量子コンピュータのことであろうが、こちらは未だ予測段階だろうか。(6) 自律的な計算機、もまだ出現していないと思われる。最後の (7) Fortran は不滅です、はその通りである。
竹内の予測のあまりの正確さに驚きを禁じえない。もう一編の萩谷昌己の記事 [2] はどうだろうか。萩谷は情報科学や情報工学の未来を案じつつも、数学と同様に「科学の女王か、それとも、科学の奴隷か」といわれる「サフィックス学問」として安泰と予想している。昨今の機械学習ブームと小学校へのプログラミング導入ブームで老いも若きも情報、という現在の風潮は概ね萩谷の予測通りである。プログラミング分野の基礎理論も、人工知能によって不要になるどころか、ますます隆盛を極めているのも予想通りである。萩谷は 30 年後にもっとも重視されている計算機は電子手帳で、博物館では 1990 年を代表する展示品として当時の電子手帳が飾られているはず、とも書く。電子手帳、もといスマートフォンが現在最も重視されている計算機という予測に間違いはないだろう。最後に予測されている、人間の脳と計算機を直結するインタフェースは未だ実現していないが、さりとて荒唐無稽な話というわけでもない。最後のいささか毒のある「AI ジャーナルなどに長々しい論文を書きまくって人々を煙に巻いてきた人工知能の研究者ではなく、計算機作り一筋、一昔前は電子手帳などを作っていた計算機屋が、30 年後、ついに、脳に至る。これは愉快である。」だけは残念ながら外れだろうか。計算機作り一筋の計算機屋も、今やこぞってAI 論文を書いている。
2. 2050 年
先人の彗眼にたじろいで、ここで筆を置きたくなるが、本稿の主題は今から 30 年後の予測であった。進歩の速度はゆっくりである、という先人の観察に励まされて、プログラミングの未来を予想してみる。
2.1 無数のプログラミング言語の乱立
機械学習ブームで誰もが Python を使っている現在だが、実際に誰もが使っているのは Python というよりは PyTorch や TensorFlow といったライブラリ(の一種であるフレームワーク)である。この手のライブラリは Python 上のミニ言語の様相を呈してきており、これを領域特化言語(DSL) と見なす向きもある。
今後、この傾向はますます強まり、PyTorch や TensorFlow のようなライブラリのことを人々はプログラミング言語と認識するようになるだろう。そのようなライブラリはそれ専用のより自然な構文・文法を備える。あなたが普段使っているプログラミング言語は何ですか、という質問をすると、どの領域特化言語を使っているかが返ってくるようになる。今なら、何言語を使っていますか、という質問に Python と答えず、PyTorch と答えるようなものである。その頃にも多くの人々が使う汎用プログラミング言語は存在するだろうが、人々はその存在にはあまり注意を払わなくなる。
2.2 自然言語でプログラミング
機械翻訳の精度向上により、だいたいの意図を自然言語で計算機に伝えると、計算機の方で正しいプログラムに翻訳するようになるだろう。しかしその結果プログラミングが簡単になったり、万人のものになったりする日は来ない。
その頃には、計算機に意図を誤解なく伝える技術を学ぶことが、プログラミングを学ぶこととなる。つまり論理的に筋道立てて仕様を説明できなければならない。この訓練は小学生から始められ、考えが古い親達は、学校でプログラミングを習い始めたら、子供達が理屈っぽく口答えするようになった、と嘆くようになる。結果、プログラミング教育反対運動がおこる。
プログラミングの際には、計算機が誤解しないように歯切れ良く発声することも大切になる。情報系の講義には、ボイストレーニングが必修科目として取り入れられる。情報系の学科を卒業して、アナウンサーになる、役者や歌手になるという学生が現れ、変わり種として話題を集める。
2.3 自動運転
さすがに 30 年後、自動運転は実用化され、当たり前の技術になっているだろう。しかし人々はそれに飽き足らず、自動運転中の車に細かい指示を与えて望みの運転をしたいと思うようになる。そのような指示は自然言語でなされるが、その頃には、そのような指示こそがプログラミングと認識されている。誤ったプログラミングで事故が起きると重大問題であるので、そのようなプログラミングをするには免許がいるようになる。自動車運転免許はなくならない。
以上、3つの予測をひねり出してみた。書いてみると当たりそうな気もするし、まったくの見当外れのようにも感じる。予測の根底にあるのは30年後もプログラミングは大事だろう、という思いである。これだけは当たると願っている。
参考文献
[1] 竹内郁雄、当たらぬも八卦、特集「30年後の情報処理」、情報処理 Vol.32, No.1, pp.9-12, 1991.
[2] 萩谷昌己、情報処理の30年後の夢をかけといわれても、特集「30年後の情報処理」、情報処理 Vol.32, No.1, pp.30-32, 1991.