見出し画像

プログラミングで不可能なことはありますか?

(前略)
また、疑問でプログラミングで不可能なことはあるのかなと思いました。

中学2年生の方から、授業の後にいただいた疑問です。これは面白い疑問ですね :)

実は今から半年前、 Quora という質問投稿サービスにも、全く同じ質問が投稿されました。その質問に対して、プログラミングの世界で最も有名な日本人である Matz(マツモトユキヒロ)氏が回答したことで、千人以上の人がその回答を見に来ました。僕も Matz の回答を見に行きました

その回答とは、こうです↓

計算手順が明確でないものは、プログラミングでは直接的には解決できませんね。すでに「心の問題」をあげている回答がありますね。ただし、直接的には困難でも間接的にはできたりします。ビットやピクセルの操作で猫画像を判定するのは困難でも、機械学習を使えば可能になったりします。

もうひとつは、プログラミングは基本的には情報を操作するものなので、現実世界に影響を与えるためにはなんらかの「デバイス」を経由する必要があるということです。デバイスがなければ単に計算だけで終了です。この場合の「デバイス」とは抽象的な意味で、人間がデバイスになることもあります。

https://qr.ae/TWYN3G

むずかしい言葉も多いですが、重要なことが書かれています

ビットやピクセルの操作で猫画像を判定するのは困難でも、機械学習を使えば可能になったりします

これは先日の授業で体験した人工知能のことです。シャープペンの判別がどんな計算か知らないのに、シャープペンを判別するプログラムを作ることが出来ました。これも、プログラミングで出来ることの一部です

現実世界に影響を与えるためにはなんらかの「デバイス」を経由する必要がある

デバイスという言葉は、ふつうは機械のことを言いますが、ここではもっと広いもの、言うなればありとあらゆるもののことをデバイスと呼んでいます。デバイスを経由するとは、つまり “プログラミング+もの” が必要ということです

もしも、本当の意味で「プログラミングだけ」だったら、ほとんど何をすることも出来ません。例えば、授業ではゲームを作りましたが、それだって、キーボードという「もの」がないと操作も出来ませんし、モニターという「もの」がないと画面をみることすら出来ません。 “プログラミング+もの” があって、初めてゲームというものが成立するのです。ほとんどのものは、そうやって作られています

邑智中学校-1

プログラミングはこれまで、多くの「もの」に新たな役割を付け足してきました。逆に言えば、ありとあらゆるものは、プログラミングと現実世界を繋げるために新たな利用価値を持っているはずです。さらに Matz は、「ありとあらゆるもの」の中には、人間も含まれると言っています。映画のような話ですが、プログラミングは人間すらも拡張しているのです。多くの人は当たり前過ぎてその事実を見過ごしていますが、現代においても、人間はプログラミングによって変化しています

さて、長くなりましたが、僕なりの結論をまとめると、プログラミングで不可能なこととは、どのような「もの」をプログラミングして良いかという条件によって決まるのではないでしょうか。組み合わせる「もの」の種類を増やすほど、プログラミングで不可能なことは減っていきます。一方、物理的に不可能なこと(例:過去をプログラミングできるか?)や、倫理的に出来ないこと(例:人間のDNAをプログラミングできるか?)などは、おそらく今後も出来ないでしょう


この記事が気に入ったらサポートをしてみませんか?