読者です 読者をやめる 読者になる 読者になる

yy_taroのとりとめのない落書き

メインフレームの導入・設計・構築ができるぐらいの知識があったりする。

「プログラミングの基礎」も読んでみる 1

「プログラミングの基礎」一回目

 

ポストSICP?ということで、ちょっと気になっていました。

軽く読んだ感想は、SICPのように小難しくなくすんなり読めそう?です。

SICPと戦うために必要な基礎力が足りていないというのは前々から感じていたのでその部分を補強していければと思っています。

 

本書で使用する言語は「ocaml」という関数型の言語です。

あまり聞き馴染みのある言語ではありませんが、本書を進めていけば言語仕様などはわかるようになっているみたいなのでそれほど戸惑いはありません。

 

ここでは、デザインレシピという考え方を積極的に用いています。

デザインレシピとは、「関数を作る際に考えなくてはならない重要なポイントをまとめ、プログラム作成時に従うべき指針」

つまりは、問題に対して行き当たりばったりにプログラミングしていくのではなく、きちんと進むべき道筋を立ててからプログラミングしましょう。ということでしょうか。

 

デザインレシピを考える上では以下の点が重要です。

 ①目的 :作成する関数がどのような処理をするものか?

 ②例  :関数の動きを具体化させる

 ③本体 :関数本体を作成

 ④テスト:望む動作をしているかのテストデータを準備する

テスト駆動開発みたいなものでしょうか。

 

「プログラムを作る→テストをする→間違いを修正する」ではなく、「テストケースを作る→プログラムを作る→間違いを修正する」という流れになります。

 

今のところ演習問題をやりながら四章まで読み終えました。

このあたりはまだ言語の説明なのでそれほど難しくはないです。

 

実際デザインレシピに従って解いてみた問題4.8はこんな感じです。

 

(*目的:鶴と亀の合計と足の合計値を受け、鶴の数を計算する*

(* tsurukame : int -> int -> int -> int *)

let tsurukame goukei ashi = ( 4 * goukei - ashi ) / 2

 

(* test *)

let test1 = tsurukame 0 0 = 0

let test2 = tsurukame 1 2 = 1

let test3 = tsurukame 1 4 = 0

let test4 = tsurukame 2 6 = 1

let test5 = tsurukame 2 4 = 2

let test6 = tsurukame 2 8 = 0

let test7 = tsurukame 3 8 = 2

 

プログラミングの基礎 (Computer Science Library)

プログラミングの基礎 (Computer Science Library)