(不定期コラム) やって欲しいことを噛み砕いて伝える / プログラミング1

Share on:

m_20130511113021518dad3d6e905 m_20130511114630518db1064a7d9 m_20130511115723518db393d84e9

ちょっと長めのコラム記事に対する印象を和らげる(?)ためのお食事写真は、久しぶりの tida cafe でパスタランチ。平日だとご飯ものしかないですが、週末は前菜が固定になる分メニューの幅が広がってて嬉しいです。平日でもランチタイムを外せばいろいろあるんだろうけど。

ということで、閑話休題。


プログラミング1で既に課題が出ているレベルに入ってきているようなので、不定期コラム4回目は趣向を変えてプログラミングを取り上げてみます。

何か仕事を頼む際、頼む相手が人間であれば言語や身振り手振り等を交えて指示を与える(お願いする)ことで目標を達成しようとします。例えば頼みたい仕事が「お茶を買ってきて欲しい」だとして、それを頼んだ相手に「ついでにお茶買ってきて」と伝えた状況を想定してみましょう。このぐらいの「アバウトな指示」でも、友人なり頼まれた人は外出ついでに何かしらお茶をどこかで手に入れて帰ってくることができます。そのお茶をどのように手に入れたら良いのか、販売しているならどこで購入したら良いのか、そこにどうやって辿り着けば良いのか、辿り着いたとして商品をどう探せば良いのか、探せたとしてどう商品を購入したら良いのか、etc., といった細々とした指示を与えることなく、目標を達成してくれるはずです。これは人間が普段の体験から構築蓄積した常識に頼っているからと言えますが、相手がコンピュータだとそのような常識がないため、コンピュータが理解できる言語で一つ一つ噛み砕いて指示する必要があります。

この「コンピュータが理解できる言語」が「プログラミング言語」です。普段使用している「日本語」と勝手が違うため様々な約束事を学ぶ所から出発しているはずですが、仕事を頼む手段は以下の3つが基本になります。

  • 逐次処理
  • 条件分岐
  • 反復処理

どのようなプログラミング言語であっても頼み方は上記3つのみで、これらを組み合わせることで指示を組み上げていきます。そのため、「仕事(やって欲しいこと)」を「3タイプの指示の組み合わせとして考え直す作業=設計(デザイン)」が必要になってきます。

上記を踏まえて、クイズです。

  • プログラミング以外にも「何かを作る」場面では設計が関わってくる。どのような設計手法があるだろうか?
  • 実装(プログラミングでいうならコーディング)の手間を省くため、設計段階でその良し悪しが分かると嬉しい。設計物(設計段階)においてその良し悪しをどのように評価することができるだろうか?
  • 同様にコストダウンという観点からは可能な限り再利用性を高めたい。すなわち、一連のコードを部品とみなして再利用したり、テンプレート化したい。再利用しやすい形で設計、またはコーディングするためにはどのような方法があるだろうか?

参考: プログラミングとはどのような作業か