Haskell勉強会

関数型プログラミングの学習日記

計算モデルとプログラミング

ラムダ計算を分かりやすく説明した本がありました。

「計算モデルとプログラミング」という本です。

 

計算モデルとプログラミング

計算モデルとプログラミング

 

 

本書を参考にして、ラムダ計算の説明方法を学んでみたいと思います。

 

 

目次

第1章 計算の世界と計算モデル

 1.1 計算の世界

 1.2 計算モデル

 1.3 計算モデルとプログラミング言語

 1.4 アルゴリズムの記法

 1.5 数の体系

 1.6 自然数上の計算と計算モデル

 演習問題

 

第2章 抽象機械型計算モデル

 2.1 機械による計算のモデル化

 2.2 順序機械

 2.3 有限オートマトン

 2.4 チューリング機械

 2.5 チューリング機械の計算可能性

 2.6 まとめ

 演習問題

 

第3章 命令型計算モデル

 3.1 命令による計算のモデル化

 3.2 レジスタ機械

 3.3 レジスタ機械の計算可能性

 3.4 流れ図による計算の記述

 3.5 流れ図の計算可能性

 3.6 流れ図の標準形定理

 3.7 Scratchによる流れ図の実行

 3.8 まとめ

 演習問題

 

第4章 関数型計算モデル ―帰納的関数

 4.1 関数による計算のモデル化

 4.2 Haskellによるプログラミング

 4.3 関数の計算可能性と原始帰納的関数

 4.4 帰納的関数

 4.5 帰納的関数の計算可能性

 4.6 関数型プログラミング

 4.7 まとめ

 演習問題

 

第5章 関数型計算モデル ―ラムダ計算―

 5.1 ラムダ記法による計算のモデル化

 5.2 Schemeによるプログラミング

 5.3 ラムダ式による計算対象の表現

 5.4 β変換による計算

 5.5 β変換の特性と戦略

 5.6 ラムダ計算と計算可能性

 5.7 ラムダ計算の特徴

 5.8 Scheme関数型プログラミング

 5.9 まとめ

 演習問題

 

第6章 論理型計算モデル

 6.1 論理による計算のモデル化

 6.2 Prologによるプログラミング

 6.3 1階述語論理

 6.4 1階述語論理の意味論と形式的体系

 6.5 導出原理

 6.6 SLD導出と計算

 6.7 論理プログラムの計算可能性

 6.8 Prologと論理型プログラミング

 6.9 まとめ

 演習問題

 

付録A 数学の準備

 A.1 論理

 A.2 集合

 A.3 論理と集合

 A.4 関数

 A.5 グラフと木

 A.6 アルファベットと言語

 

付録B チューリング機械シミュレータ

 B.1 TMの定義ファイル

 B.2 シミュレータの起動

 

付録C レジスタ機械シミュレータ

 C.1 RMのプログラム

 C.2 シミュレータの起動

 

演習問題のヒントと解答

参考文献

索引

 

著者紹介

猪股 俊光(いのまた・としみつ)

1984年 豊橋技術科学大学工学部生産システム工学課程卒業

1986年 豊橋技術科学大学工学研究科生産システム工学専攻修士課程修了

1989年 豊橋技術科学大学工学研究科システム情報工学専攻博士後期課程修了

    工学博士

1989年 豊橋技術科学大学工学部助手

1992年 豊橋技術科学大学工学部講師

1995年 豊橋技術科学大学工学部助教

1998年 岩手県立大学ソフトウェア情報学部助教

2007年 岩手県立大学ソフトウェア情報学部教授

    現在に至る

 

http://souran.iwate-pu.ac.jp/html/100000112_ja.html

souran.iwate-pu.ac.jp

 

http://www.rts.soft.iwate-pu.ac.jp/rts_hp/

www.rts.soft.iwate-pu.ac.jp

 

http://www.hachinohe-ct.ac.jp/~euser/about/obog.html

八戸高専 産業システム工学科 電気情報工学コース

猪股 俊光 さん

 現在,大学でコンピュータ科学の基礎理論やプログラミング技法についての講義を担当しながら,各種機器(デジタル家電,輸送機器,航空宇宙機器など)に組み込まれているソフトウェアを開発するための設計法・実装法について研究をしています。研究では,試行錯誤や経験・勘だけに頼らずに,数理的なアプローチで高性能なソフトウェアを設計・実装することを目指しています。

 

 

 山田 敬三(やまだ・けいぞう)

1995年 九州工業大学情報工学部知能情報工学科卒業

1997年 九州工業大学大学院情報工学研究科情報科学専攻博士前期課程修了

2000年 九州工業大学大学院情報工学研究科情報科学専攻博士後期課程修了

    博士(情報工学

2000年 九州工業大学情報工学部知能情報工学科助手

2006年 岩手県立大学ソフトウェア情報学部講師

    現在に至る

 

http://souran.iwate-pu.ac.jp/html/100000144_ja.html

souran.iwate-pu.ac.jp

 

http://p-www.iwate-pu.ac.jp/~k-yamada/

p-www.iwate-pu.ac.jp

 

https://www.youtube.com/channel/UC-88BXqf7CpYG1NsixXw0LA/

www.youtube.com

 

出版社情報

https://www.morikita.co.jp/books/book/3372

www.morikita.co.jp

 

コンピュータによる計算とは何か?

コンピュータで行える計算の限界はどこにあるのか?

――計算機科学におけるもっとも基本的、かつ重要な疑問を,プログラミングを通して紐解く一冊。

 

本書では、チューリング機械・帰納的関数・ラムダ計算などのさまざまな計算モデルを取り上げ、それぞれのモデルにおける計算の基礎理論と計算可能性を、豊富な具体例と問題を通して解説します。

 

また,計算モデルの数学的基礎だけでなく、これらのモデルをもとに実装されたプログラミング言語についても,紙面を割いて解説しています。

計算の理論と実装例とを比較しながら学習することで、スコープ・カリー化・継続など、抽象的で掴みづらいプログラミング技法への理解が深まります。

 

ダウンロード

  • ソースファイル (zip) プログラムとシミュレータ
  • 補足資料 (pdf) 補遺(付録D~G)
  • 正誤表 (pdf)

 

書評

「まえがき」によると、本書は大学の講義ノートを基に作られたそうです。

 

本書は、岩手県立大学ソフトウェア情報学部において、著者が担当してきた学部専門科目『情報学基礎A』(1998~2005年度)と『計算モデル論』(2006年度以降)の講義ノートをもとに作成したものです。

この講義ノートの一部は、中高生を対象とした『コンピュータサイエンス教室』(岩手県立大学ソフトウェア情報学部主催の公開講座、2017、2018年度)でも活用しました。

これらの実践を通じて、本文での説明内容、例題、演習問題等の手直しを繰り返してきました。 

 

授業を受けているような感覚で読めるので、分かりやすいんですね。

 

岩手県立大学のカリキュラムが紹介されていました。

https://web-pamphlet.jp/iwate-pu/2020p/html5.html#page=51

f:id:hamamuratakuo:20200731044801j:plain

 

大学2年で「計算モデル論」という授業があり、その教科書が本書になっていました。

 

2020年の授業「計算モデル論」の内容を見ると、第4章と第5章の関数型計算モデルは扱ってなかったのでちょっと期待外れでした。

 

http://p-www.iwate-pu.ac.jp/~k-yamada/lecture/model2020/

p-www.iwate-pu.ac.jp

 

まあ、それでも第6章の論理型計算モデルの授業の資料は見てみたいと思いました。


本書の特徴は、イラスト図解を多用して、読者の理解を促していることです。

第5章のラムダ計算は、SchemeGauche)を使って説明してあるので、Schemeも併せて勉強してみたいと思います。