2017-05-19

構文糖衣

Google I/O 2017でAndroidの主要開発言語にKotlinが加わった。クラス定義が劇的に短くなったり、Java→Kotlinを自動変換したりというデモを見ていると、KotlinもまたJavaの構文糖衣になっているということがわかる。

プログラムをつかって問題を解くことを主題にした講義はもちろん、プログラミングそのものの教育においても、何をどこまで教えるかというのはとても難しい。トランジスタの仕組みやNANDの完備性を知らなくてもCPUやフラッシュメモリは使える。命令セットの詳細を知らなくてもプログラムは書けるし、プログラムが書けなくてもアプリは使える。一人の人間がすべてを知らなくても何かが実現できる状態をつくるためのカーテンが構文糖衣であり、それは隠蔽よりも分離として捉えた方がよい。

何かに構文糖衣を着せることは、目的によってよいことにもなるし、悪いことにもなる。それは構文糖衣を脱がせることも同じだ。プログラミング教育を始めるのはよいが、目的がないことにはアプリケーションの構文糖衣をどこまで脱がすかが決められない。
文科省の言う「プログラミング的思考」とは、こういった特性をもつ、人間とは異なるシステムとのコミュニケーション能力に近い。目的を明確にすることで、あらゆることを精度よく高速に行えるが、明確化の精度をかなり高いものにしないと思ったようには動かない。ある種のカルチャーギャップである。
An At a NOA 2016-06-17 “プログラミング教育2
というカルチャーギャップを埋めるためのコミュニケーション能力を身に付けることが目的であれば、プログラミング言語の文法の詳細は構文糖衣に包まれている方がよい。文法が簡単になったとしても、慣れない内はバグにたくさん遭遇するだろうが、プログラムは書いたとおりにしか動かず、こう動くように書いたという想定と、こう書いてあるように動いたという結果のズレであるバグのすり合わせは、一種のコミュニケーションであり、それがプログラミング教育の目的になり得る。
プログラムには様々なモデル化が関係するが、そのモデル間の齟齬がバグと呼ばれるものである。
An At a NOA 2017-02-16 “バグのないプログラム
アプリケーションがよしなに動いているように感じたとしたら、その挙動が予測され、よしなに動くようにプログラムがコードされているからである。個々のアプリケーションを使う限り、そのモデルが張る解空間の中でしか動けないこともまた、認識されるべきだろう。

No comments:

Post a Comment