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

akimachoのはてなブログ

ICTとデザインのためのブログ

『プログラミングの基礎』読書日誌-2日目-

関数プログラミング プログラム 読書

はじめに

『プログラミングの基礎』読書日誌-1日目- - むすんでひらいて

 

どんどん進めていきたいとおもいます.

開発環境 

以下のような環境で進めていきます.

OCaml処理系のインストール

OSXをお使いの方は,homebrewやMacPortsを使えば大丈夫でしょう.

Ocaml処理系のインストール

他のOSの場合は,OCamlの公式ページにインストールする方法が書いてあります.

http://ocaml.org/docs/install.html

また,Web版もあります.手軽に試すにはこれが一番かと思います.

Try OCaml

まえがきメモ

本書の目的

  1. デザインレシピの習得
  2. データ構造とアルゴリズムの学習
  3. 大規模なプログラムの作成

なぜOCamlなのか

  • 簡単で使いやすい
  • プログラムを作りやすい
  • 抽象度の高い高度なプログラミングができる

第1章はじめにメモ

本書の目標

・・・トロネットワーク最短路問題を解くプログラムを作ること・・・

著者は目的と目標という言葉をしっかり分けているのだと思いわれます.目的(プログラミングの習得)のための,具体的なターゲットとして上の目標を掲げている.

メトロネットワーク最短路問題の数学的な位置づけとしては,,離散数学の一分野グラフ理論の「最短経路問題」だと思います.

デザインレシピ

「信頼性が高くて間違いの少ないプログラムを作るにはどうすればよいのか」という疑問の解決として,デザインレシピが紹介されます.聞き慣れない言葉ですね.

英語版Googleにて,"design recipe"と検索すると,カリフォルニア大学アーバイン校の講義資料ページみたいのが出てきました(Irvineアーバインと読めなかった…

OCaml

改めてOCamlの利点とは何でしょうか?

  • より人間の思考レベルに近い記述ができる
  • 複雑な制御構造を自然な形で記述できる
  • 低レベルの操作を気にすることなくアルゴリズムを記述できる(低レベルとは,メモリやCPUなどのハードウェアのことを指すと思われる)
  • 強力な型システムにより,プログラム実行前に誤りを見つけることができる

準備メモ

本書ではインタプリタを使ってプログラムを実行していきます.

1.3準備

- : string =  "あ"

と出力されませんでした.

そうならない場合は,サポートページを参照とのことです.

「プログラミングの基礎」MacOS X

すると,

ターミナルの漢字コードを EUC にしてください。

とあるので,ターミナル(iTerm2)の設定を変更しましょう.まず,commad + 「,」でiTerm2のPreferencesを開きます.そこから,Profiles → Terminalを選択すると下のような画面がでると重います.そこのTerminal EmulationのCharactor EncodingをJapanese(EUC)に変えます.

f:id:akimacho:20150301105337p:plain

次に,

環境変数 LANG を en_US.ISO8859-1(等)に設定して ocaml を起動してください。

とあるので,OCamlインタプリタ文字コードを明示してから起動させます.

具体的には次のようにしてインタプリタを起動させます.

gistd682f6edfc872621b27b

本書のサンプルコードのようになりました.これで一段落です.

しかし,タイプが手間なのでエイリアスを作ってラクをしましょう.

alias oc="LANG=en_US.ISO8859-1 ocaml"

また19章以降でmakeコマンドを使うようですが,OSXならデフォルトで入っています.

これで準備は終わりです.

参考となる資料

サポートページに同じものがありました.

http://pllab.is.ocha.ac.jp/~asai/book/Link.html

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

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

 

 

プログラミング言語StandardML入門

プログラミング言語StandardML入門

 

 

アルゴリズムとデータ構造 (岩波講座 ソフトウェア科学 3)

アルゴリズムとデータ構造 (岩波講座 ソフトウェア科学 3)