オンライン書籍『Gaucheプログラミング』の中の1コンテンツです(GaucheはSchemeの処理系)。「技術動向」にて挙げたFizz-Buzz問題を題材に、手続き的なプログラミングと、LispやSchemeが得意なプログラマが行うプログラミングの手順の違いについて解説しています。
手続き的な発想でFizz-Buzz問題を解くと、
- 1から100までの数を繰り返し処理で処理する
- 繰り返しごとにその回の数を判定して条件分岐する
- 15で割り切れるなら「FizzBuzz」を、5で割り切れるなら「Buzz」を、3で割り切れるなら「Fizz」を、さもなければ数のまま印字する
という手順になり、一方Lisp(Scheme)プログラマの発想で解くと、
- とりあえず1から100までのリストを作る
- mapを使ってリストを加工して、別のリストを返す
- 結果のリストをprintする
という手順になるとのことです。手続き的な発想では「毎回特殊な処理を行いそれを繰り返す」と考え、Lisp(Scheme)プログラマは「データからデータへの変換を考えればよく、出力は後からどうにでもなる」と考える、と述べています。
プログラミングをする際に行き詰まったとき、もっと違った考え方をすることはできないか、と考えるためのヒントになりそうです。
URL:http://karetta.jp/book-node/gauche-hacks/023107