「命令」よりも「道案内」 プログラミングにまつわる用語を考える。
どんな分野にも関係する用語があるものの、なかなか分かりづらいものばかり。
プログラミングに関しても用語がさまざまありますが、それぞれの用語をそのまま出しても理解を得るにはちと難しいところがあります。
具体的に例を挙げるとこんな感じ。Swift Playgroundsのサイトに掲載されている基本用語は下記のとおりです。
* コマンド:命令
* ファンクション:関数
* ループ:繰り返し
* パラメータ:引数
* イフ文:条件分岐
* バリアブル:変数
* オペレータ:演算子
* データ型
* バグフィクス:バグ修正
では、それぞれがどのように難しいのか一つ一つ考えていきましょう。
1.コマンド:命令
プログラミングを学び始める時、最初に出てくるのがこの「命令」という用語です。英語では「コマンド」。
プログラムのことを「コード」といったり「スクリプト」といったり、表現方法は様々ですが、「コマンド」とは指揮するという意味で、「コンピュータを操る」という意味合いが強くなります。
しかし、この「命令」という言葉をだすとリアクションは「え〜」というものばかり。
なぜかよく考えてみると、iPadなどの機器や、プログラミングを学ぶためのアプリケーションではキャラクターを動かすことから、「それらへ命令」するというよりも、「友達にしてもらう」という感覚の方が強いようです。
なので、「道案内しよう」といったり、「どんなふうに動くか説明してみて」といったり、どちらかというと「命令」ではなく「お願い」のほうが、コンピュータとの健全な付き合い方としてあっているのかもしれませんね。
2.ファンクション:関数
次に出てくる第二の砦は「ファンクション:関数」複数の作業を一つにまとめて使うことができる。そんな便利な機能が関数です。
しかし、「関数」とだけきくと何やら難しそう(漢字の画数も多い)なため、引き気味になってしまいます。
「関数」に関しては、
「朝家を出る前の準備」はいくつかの作業(例えば、歯を磨く、顔を洗う、朝食をとる、着替える、など)を一つにまとめて使ったものだよね?
といったように、身近な例から考えると、「複数の作業のひとかたまり」という認識に変わっていきます。
まずは至近の例を思い出してみることで、つながりが生まれるのです。
3.ループ:繰り返し
ループ・繰り返しは受け入れられやすい用語です。特に、「繰り返し」は一般名詞で、子どもたちにもよく知られている言葉です。
しかし、少々用語の話とはそれますが、繰り返しを実際に書くときには、「どこを繰り返すか」という点が難しくなります。
「複数の作業をひとかたまりにしてそれを何度か繰り返す」
ということで、関数を先に学び、そして繰り返しを学ぶ順序になっています。つまり、繰り返しは「関数の繰り返し」ということもできるのです。
4.パラメータ:引数
パラメータ:引数(ひきすう)ということばはまったくわけのわからないものかもしれません。何を引いて何を押すのか?と思ってしまいます。
パラメータときくと、なにか調整できるのかな、と思います。実際にはそのとおりで、パラメータを変えることによってアウトプットも大きく変わります。
具体的には、関数に与えるデータのことをパラメータ(引数)といいます。
つまり、パラメータ(引数)をいろいろ変えることによって出てくる「アウトプット」もいろいろ変わります。
ようやくこのパラメータを学ぶことによって、決まった内容だけを返す関数だけでなく、入力を変えていろいろな内容を返す関数をつくることができるようになります。
引数の「引」は、関数に入れるデータを引き寄せる。そこに入力せよという意味でつけられたのではないかと思っています。
5.イフ文:条件分岐
そして次に出てくるのがプログラミング学習の最難関「イフ文:条件分岐」なぜ難しいって?それは、「真と偽(True / False)」という新しいものさしが必要だからです。
裏を返せば「さまざまなものの真と偽」を組み合わせれば、設定された範囲内でなんでもできます。
では、用語の意味を考えてみましょう。そのまま読めば、条件が分岐する、枝分かれするという意味です。それぞれの枝分かれのポイントは、それぞれの条件で設計された「真 と 偽」の組み合わせです。
どんなときに真になり、どんなときに偽になるか。その想像力と枝分かれのイメージが私たちの理解を助けてくれます。
6.バリアブル:変数
そしてようやく出てきた「バリアブル:変数」です。よく変数は「入れ物」としてたとえられることがあります。
変数が入れ物であるとするならば、なぜ「変」わる数なのか。
どちらかというと「一時的に保存しておく場所」といったほうが適切かもしれません。
変数を使うことで、なんどもデータを再利用することができます。一度使ってもまた別のところで使えるので大変便利!
中身を入れ替えることができ、何度も使える箱といえるでしょう。
7.オペレータ:演算子
「オペレータ」の方はあんまり見ないかもしれませんが、「演算子」の方は見ることはあるのではないでしょうか。
簡単なものは下のもの
+ - * / (四則演算子)
> < =(比較演算子)
「演算」だけ聞けばなんとなく中身はわかりますよね。つまり、「何かを計算したり、比べたりするための記号」ですね。
これがないと様々な条件分岐をつくることはできません。計算したり比べたりには演算子が必要不可欠です。
8.データ型
データ型はプログラミング言語によって異なりますが、これもわかりにくい用語の一つ。
まさに、データの型なんですが「型って何?」という疑問で頭が一杯になります。
データの型はデータの種類ともいえるでしょう。例えばどんな物があるか、
整数(integer)
浮動小数点数(float)
文字列(string)
日時(datetime)
などなど、いろいろな種類がありますが、これらの種類を変数に対して対応させておくことは、少し難しい話になりますがコンピュータの計算を節約します。
近年ではほぼそういったコンピュータの機能の節約を行わなくてもよいコンピュータばかりで、自動的にこの「データ型」を決めてくれるプログラミング言語が流行っています。(例えばPythonとか)
9.バグフィクス:バグ修正
「バグだ!」とユーザー側からよく耳にするこの言葉。
意図したようにプログラムを書いても一発では動かないことがほとんどです。(むしろ、一発で動くほうが難しい)しかし、このバグをなんとかして修正して使えるものへとするにはバグ修正(バグフィクス)を行う必要があります。
バグ、とはプログラムの中に潜む「おじゃま虫」のこと。
その「おじゃま虫をつぶしていく」のが「バグフィクス」です。
おじゃま虫のいないきれいな状態を目指し、我々はプログラムを書いていくのです。
さて、以上で見てきたプログラミングの用語。一般的なものもあれば、やってみないと理解が難しいものもあります。
そんな中で、プログラミングを学ぶならば、やはり学習者の文脈にそった喩え話を使いながら用語の理解を手助けできたらと思っています。