変数が主役 [プログラム]
プログラミング言語の文法を覚えることと、実際に何かの問題を解決するためのプログラムを作ることの間には、大きなギャップがある。何も難しい、複雑な問題を解決しようというのではなく、プログラミングの初心者が最初に越えなければならない壁について、である。
この点について、プログラムをバーチャルなロボットと考え、ロボットにどのような動きを命令するか、という観点からプログラミングについて、いくつかの記事をこのブログでも書いてきた。
これは教育的には非常におもしろい問題で、学生を教えながら、その躓き方、それの乗り越え方をよく観察すると、その「難しい」というメカニズムが分かるような気がする。
それなりにできる学生でも、何のサンプルもなく直接何か問題を解かせようとすると、かなりの試行錯誤をする。特に変数というものの重要性や使い道、使い方がピンとこないようだ。
これまで、僕は変数という概念を使わないでプログラムを出来るのではないか、というようなことを書いてきた。確かにそれは可能だろうと思う。プログラム世界が現実の世界のあるモデルであるとすると、現実の世界に「変数」に当たるものは存在しない。具体的な物、つまりオブジェクトが存在し、それに対して名前が付いている。あるいはそのオブジェクトが、何らかの種に属している、その種はまた、より上位の類に属している、といった関係があるだけだ。
とすれば、プログラム世界でも、そこには具体的なオブジェクトが存在し、それが何らかの種、プログラムミングの用語では「型」あるいは「クラス」に属している。そして、それぞれの型やオブジェクトには「名前」が付いている。「型」や「クラス」は既に名前が決められているが、個々のオブジェクトについては、プログラムを作る人が、創造主になって「名前」をつけ、世界にあらしめないといけない。
プログラムを構成する主要な要素は、二つ、オブジェクトと関数(メソッド)である。そして、それらを組み合わせるための文法が、様々な構文である。プログラムは、一つの仕事を実現するために、必要なオブジェクトを作り出し、それらを利用して関数で動かし、そういうステップを、文法規則に副って連ねていくことで、出来上がっている。
だから、まず、問題を解くときに、どういうオブジェクトを必要とするかを考え、関数と構文でもって、そのオブジェクトを操作していく、と考えると、分かりやすいのではないかと思う。
コメント 0