「歌詞(特にJ-POP)」と「プログラミング」。
全く畑違いの2つですが、
その構造に目を向けてみると意外な共通点があったりします。
それが、
「順序」「繰り返し」「分岐」という
プログラミングの『核』となる3つの要素。
プログラミングのコードって、
パッと見ると英語だらけの暗号みたいで難しそうですが・・
構造的には、実はこの3パターンだけで構成されているんです。
【目次】
- 1)料理とプログラミング
- 2)作曲とプログラミング
- 3)漫画とプログラミング
順序:基本的に、上から下へ読んでいく。
プログラミングは「コード」と呼ばれる文章を入力して
目的の機能を実現します。
僕らプログラマーが書いたこのコード(命令文)を
コンピュータは上から順に読んでいきます。
途中で「あ、こっちの行も気になるなー」なんて事はしません。
速読も、しません。
愚直に、上から下にしか読めない奴なんです。コンピュータは。
だから僕たちがコードを書く時も
コンピュータに処理してほしい順番に合わせて
上から順に、書いていく事になります。
これは、楽譜でも同じですよね。
基本的に最初の小節から、音符を順番に弾いていく。
歌詞も、最初から順に唄っていく。
繰り返し:同じ事を繰り返す
ただ、「順序」だけだと問題が発生します。
書く効率が、悪い!
特に自動化を目的とするプログラムの場合、
同じ処理を何回も繰り返す事が多々あります。
これは、楽譜も同じです。
楽譜で、同じ小節が繰り返される時は
リピート記号(:|こんなやつ・・)で表記されると思います。
この記号を使うメリットは2つあって、
1)楽譜がながーくなるのを防ぐ
2)修正をしやすくする
この2つ。
例えば20小節を弾き終わって、サビが終わって、
もう一度20小節を繰り返すような場合・・
繰り返しでまた全く同じ音符を書いていかなくちゃいけません。
書くのも、読むのも、長くなって面倒くさい。
ミスってどこか間違える可能性だってあります。
さらにさらに、繰り返す小節でどこか直したい時に
別々の所にいくつもあると、それぞれの箇所を直さなくちゃいけません。
・・こういう面倒さを排除するためにも、
リピート記号を使って書き方を工夫しているわけです。
プログラミングの世界では
WhileやForといった命令文が使われる事が多いです。
Whileは主に、「~という条件の間繰り返せ」という命令。
Forは主に、「○回繰り返せ」という命令です。
仮に「やる気のある限り、行動し続けろ!!」というメッセージ(?)を
プログラミング風に記述するとなれば・・
While ( やる気のある限り ) {
行動する!
}
・・こんな風に、書けるでしょうか(笑)
分岐:条件に応じて順序が変わる
さらに、「順序のみ」にはもう1つの問題が。
条件に応じて処理を変えたい時。
例えば、ほとんど繰り返しのメロディだけど
微妙に音が変わる時ってありますよね。
1回目のサビと2回目のサビで、
微妙にメロディが違うような時。
これ、「順序」と「繰り返し」だけでは書けません。
そこで・・新たな要素が必要になってきます。
それが、「分岐」。
楽譜だと、繰り返しの際に
1回目と2回目で通る小節を変化できる記号があります。
小節の上が「1」とか「2」とかで括られてる奴です。
これがあるおかげで、
条件によって内容を変える事ができます。
プログラミングの世界では、
IfやElseといった命令が使われます。
Ifは「もし○○の時」という意味で、
Elseは「If以外の時」といった意味です。
例えば今が朝か夜かによって
あいさつのメッセージを変えたいような場合は・・
If ( 朝 ) {
MsgBox ( "おはよう" );
} Else {
MsgBox ( "おやすみ" );
}
と、いった具合になります。
プログラムというものは
こうした「繰り返し」や「分岐」を簡単に記述できる構造があるおかげで、
手作業でやると複雑で単調になってしまうような事も
一連の文章(コード)で記述できるようになっているわけです。
【告知】
メルマガ始めました。
VB.NET、Java、PHPなどの体験型プログラミング講座や、
自作Webサービスの開発進捗などを随時報告していきます。
=> メルマガ『武器としてのプログラミング』に登録