目次
■なぜこの問いなのか?
さてさて、今回は「実際、プログラミングを書けるようになる必要はあるのか?」という問いを変えて、「人工知能やその他のプログラミングで現行のプログラミングは代替されるのか?」と考えを進めていこうと思います。
そもそもプログラミングを学ぶ必要があるのかについては、以前の記事で考察を書きましたので、参考にしてみてください。
narumi-yamauchi.hatenablog.com
長く書くと僕的にもあれなので、簡潔に言いますと、今後、視覚的なプログラミング(ビジュアルプログラミング)等のコードを書かなくてもプログラミングをすることができるようなツールが発達してくるのではないかとも考えられます。
このような中で、地道に細かくコードを打ち込んでプログラミングをすることと、視覚的に感覚的にプログラミングしていくことで、どのような違いがあるのでしょうか?
仮に、完全に、視覚的にプログラミングできるようになっていくのだとしたら、コードを打ち込むというプログラミングは必要なくなっていくのでしょうか?また、自動でプログラミングできる人工知能などが出てきたらどうなるのでしょうか?
このような問いに答えたり、答えなかったりしながら、「プログラミングを学習した方がいいのか?」についてさらに言い考えを生み出していこうと思います。
■コードを書くという入力方法以外にどのようなプログラミングがあるのか?
さて、PCでコードを書き書きする以外にどのような方法があるのでしょうか? つまり、以下では、視覚的とか音声とか言っていますが、従来であればパソコンで打ち込むというインプットの代わりにどのような形式でやるかということで分類されています。
ということで、調べた限りのものを以下に書き出してみたいと思います。
・視覚プログラミング
・音声プログラミング
・触覚プログラミング
というものが存在しているようです。これらが存在するなら、
・味覚
・嗅覚
があってもいいように思いますが、これらは能動的にインプットが可能なものではなく、先に匂いや味のあるモノがあって、認知するために使われます。なので、プログラミングには適していないインプットの形式だと考えられます。
あえて問いを出すなら、問題設定としてはどのように味覚や嗅覚をデータ化するか?もしくは、その味覚や嗅覚そのものをどのようにコントロールするか?という感じでしょうか。。。
対して、視覚、音声、触覚では能動的なインプットが可能です。つまり、自分の創造したものを現実のシステムとして作り上げることができます。このような意味では、この3種のインプットはプログラミングに適していると考えることができます。
まぁ、厳密に考えると「書きもPCで打ち込むという意味では触覚になるんじゃないの?」とめんどくさくなるので、上記の分類は言い換えた方が良さそうですね。
さぁ、言い換えてみましょう。
視覚→図やイメージを追加・削除・組み合わせてインプットする方式
音声→音声認識を利用してコードを書く(インプットする)方式
触覚→チップの入った積み木のようなものを組み立てたりしてインプットする方式
以上です。以下では上記の認識で述べていこうと思います。
他方で、上記とは別に、
・自動プログラミング
というものも存在しています。
これは、PCや機械等のシステムそのものがプログラミングをするということです。先ほどの視覚、音声、触覚以上の代替生の高さが想像できますね。いくとこまで行ったら、「人がコーディングする必要ないんじゃね?」という意見が出てくる気持ちもわかります。
さて、話がいろんなところに膨らみそうな前に、ただ単に〜プログラミングという単語だけを並べられてもよくわからないと思うので、それぞれについて少しだけ詳しく見ていきたいと思います。以下では、視覚、音声、触覚、自動について取り上げていきます。
■視覚プログラミング
▼視覚プログラミングとは?
視覚プログラミングはビュジュアルプログラミングやグラフィカルプログラミングとも言われているみたいです。
また、視覚プログラミングとはプログラムをテキストで記述する方式ではなく、視覚的なオブジェクトでプログラミングするプログラミング言語です。オブジェクトはここでは機能の付いた四角とか三角のイメージ図とかを想像するといいと思います。
(参考:ビジュアルプログラミング言語 - Wikipedia)
イメージはこんな感じです。
▼どのような種類があるか?
ここでは引用をそのまま使わせてもらいます。
プログラムの構造を図形によって表現するタイプ
・制御フロー--- MindStormsなど
・データフロー--- Prographなど
図形そのものがプログラムであり、同時に入出力データであるタイプ・セルオートマトン--- Visulanなど
・グラフ書き換え系--- Viscuitなどユーザの動作からプログラムを作るタイプ
・推論なし--- Toontalkなど
・推論あり--- Gamutなど
▼視覚プログラミングのメリットやデメリットは?
メリットとしては、文法を覚える必要がないこと、文字を構造として理解できるという点で、学習が容易であることがあげられるかと思います。
デメリットとしては、抽象的な概念を表現したい場合は、絵よりも文字の方が良い場合があるので、より細かい処理や高度な処理が必要なプログラムをプログラミングしたい場合は、文字の方が適していると考えられる。(今のところ。。。)
あとは、普通の業務の自動化とかはビジュアルで十分な予感がしますが、今後、教育とか流行のおかげでみんなビジュアルでのプログラミングができるようになってくるだろうから、差別化をしたいならテキストでプログラミングできる必要もあるのかなと思いました。
こちらにも参考記事があるので、気になる方は読んでみても良いかも。ただし、古い。
ビジュアルプログラミング言語の利点、欠点は何ですか? - Quora
■音声プログラミング
▼音声プログラミングとは?
これは単純に音声を使ってプログラミングをするというものです。
多分、見た方が早いと思うので、以下に動画とか参考リンクを貼っときます。
▼音声プログラミングのメリットやデメリットは?
怪我をしている人や障害を持っている人にとってもプログラミングを可能にするツールとしてかなり有用だと思います。さらに、場面や人によっては、キーボードやマウスで入力するよりも早く入力できることも可能でしょう。
この音声入力のメリットデメリットに関しては、文字入力とあまり変わらないように思います。実際、音声入力しながら、抽象的なアイディアを形にしていくことも可能でしょうし、それは文字でも可能です。境遇・シーン・好みによってメリットもデメリットもありえそうです。
■触覚プログラミング
▼触覚プログラミングとは?
キーボード入力が不要で2次元の視覚的な操作も必要なく、あらかじめプログラムされた積み木等の実際のモノを追加したり、組み合わせたりして感覚的に機械を動かすというもの。
具体的には以下のようなものです。
▼触覚プログラミングのメリットやデメリットは?
これに関しては、あんまり面白そうな記事やその他の情報がヒットしませんでした。あらかじめ、プログラムした部品を使ってその部品を組み合わせて使うということから、基本的には、そこまでの発展性や汎用性はないのではないかなと思います。また、導入としては、ハードルもそこまで高くなく、子供とかには最適かもしれないですね。あとは、VR等の仮想空間にこのような機能を表現したりするのは、非常に面白い効果を発揮するかもしれないですね。
■自動プログラミング
▼自動プログラミングとは?
人間がコードを書くのではなく、なんらかの機械によってプログラムを生成してプログラミングをする形式。
現時点では、技術的な問題もあり、実用的なものは出てきていないようです。(調査不足?)しかし、将来的には プログラマーの仕事を奪うものとして可能性は否定できません。ただし、プログラマー全体ではなく、企画からの仕様書など、つまり目的といったことは人が決めたり、書き続ける必要性がありそうです。
今回は、この存在を知ること、なんか凄そうってことだけを感じれるくらいでやめておきますが、今後はさらに深堀していくのが楽しそうば分野ですね。
この考え方で参考にしたものは、こちらです。
■まとめ
「人工知能やその他のプログラミングで現行のプログラミングは代替されるのか?」へのアンサーは、現状は代替されることはないだろうが、将来的には可能性は否定できない。と言える。
また、プログラミングを書くだけではなく、企画、仕様書、要件定義ができるようになることが将来もプログラマーの世界で生き続けていく一つの戦略になりそうだと考えられる。
他方で、音声や視覚でのプログラミングは目的にとって、効率的で作業効率が高まるのであれば、最適であれば、どんどん取り入れるべきだと思う。
そして、高レベルの処理、抽象度の高い処理が必要になる場合は、手書きでのコーディングをしていくという戦略も考えられる。
ただし、いずれにしよ、高レベルではなくても手書きでのコーディングと企画、仕様書、要件定義ができるようになることはとても有意義だと思います。
次なる問いとしては、「それぞれの作業過程でどの立場にとって、どこまでのレベルが必要と考えることができるのか?」「プログラムの作成にはどのような製作過程があるのか?」が思い浮かんだので、次回で深堀していこうと思います。