CTMCP chapter9 終了

関係プログラミング

ProductName コンピュータプログラミングの概念・技法・モデル(IT Architect' Archiveクラシックモダン・コンピューティング6) (IT Architects’Archive CLASSIC MODER)
セイフ・ハリディ,ピーター・ヴァン・ロイ,Peter Van-Roy,Seif Haridi
翔泳社 / ¥ 8,610 ()
通常24時間以内に発送

  • パーサの話とかPrologあたり。
  • 論理的意味は同じだが操作的意味が異なる例が面白かった。
  • definite clause grammer (DCG)
  • 一階述語論理
  • Prologプログラムを関係プログラムに翻訳すること

残りの章は当分いいや。

CTMCP chapter8 終了

状態共有並列性

データベースのACIDとか、そういう並列性の話

ProductName コンピュータプログラミングの概念・技法・モデル(IT Architect' Archiveクラシックモダン・コンピューティング6) (IT Architects’Archive CLASSIC MODER)
セイフ・ハリディ,ピーター・ヴァン・ロイ,Peter Van-Roy,Seif Haridi
翔泳社 / ¥ 8,610 ()
通常24時間以内に発送

あんまそそられなかったので流し読み。

CTMCP chapter7 終了

オブジェクト指向プログラミング

ProductName コンピュータプログラミングの概念・技法・モデル(IT Architect' Archiveクラシックモダン・コンピューティング6) (IT Architects’Archive CLASSIC MODER)
セイフ・ハリディ,ピーター・ヴァン・ロイ,Peter Van-Roy,Seif Haridi
翔泳社 / ¥ 8,610 ()
通常24時間以内に発送

  • 転嫁と委任
  • メタオブジェクトプロトコル
  • 継承と高階プログラミングの関連性

CTMCP chapter6 終了

明示的状態

ProductName コンピュータプログラミングの概念・技法・モデル(IT Architect' Archiveクラシックモダン・コンピューティング6) (IT Architects’Archive CLASSIC MODER)
セイフ・ハリディ,ピーター・ヴァン・ロイ,Peter Van-Roy,Seif Haridi
翔泳社 / ¥ 8,610 ()
通常24時間以内に発送

状態とは、必要とされる計算の途中結果を含む、値の時系列である。

Prologを少しなぞれば宣言的なプログラミング言語の理解が深まるし、Cutを使うと宣言性が失われることがあるっていうの理解できた。

でも、かなり理解不能な部分が多かったかも。

CTMCP chapter5 終了

メッセージ伝達並列性

ProductName コンピュータプログラミングの概念・技法・モデル(IT Architect' Archiveクラシックモダン・コンピューティング6) (IT Architects’Archive CLASSIC MODER)
セイフ・ハリディ,ピーター・ヴァン・ロイ,Peter Van-Roy,Seif Haridi
翔泳社 / ¥ 8,610 ()
通常24時間以内に発送

  • メッセージ伝達並列モデルは宣言的並列モデルに非同期通信チャンネルという概念を付加したもので、このモデルは非決定性である

最後のほうにerlangの簡単な説明の節があったが、erlangは触ったことないのでとりあえず

sudo port install erlang

してみた。後で時間があったら触ってみたいところ。

あまり並列処理をガンガンまわすということはやってないので、いまいち興味が、、、、というわけだったので、少し読み飛ばした。

CTMCP chapter4 終了

宣言的並列性に関して

ProductName コンピュータプログラミングの概念・技法・モデル(IT Architect' Archiveクラシックモダン・コンピューティング6) (IT Architects’Archive CLASSIC MODER)
セイフ・ハリディ,ピーター・ヴァン・ロイ,Peter Van-Roy,Seif Haridi
翔泳社 / ¥ 8,610 ()
通常24時間以内に発送

  • エラトステネスの篩をthreadを使って
  • 性急実行も遅延実行も有界バッファの極端な場合にすぎない。バッファの大きさを無限大にすれば性急実行でゼロにすれば遅延実行
  • ラッチ回路
  • 順序決定並列性
    • データフロー実行
  • 現実世界は宣言的ではない
  • 典型的なErlang抽象として関数が他言語で書かれた宣言的プログラムを、状態あり、並列でフォールトトレラントのプログラムにするものがある。

データフロー変数ってのがなんだか面白そうだったのでググったらみずぴー日記の方がOCamlでやってた。さらにコメント欄が参考になった。

perlだとthreads::sharedとかで変数を共有しといてundefじゃなくなるのを監視してれば未束縛の変数っぽい振る舞いをさせることができんのかな。pythonは全然わからん。

CTMCP chapter3 終了

3章の宣言的プログラミング技法を終了。差分リストのあたりでトラップされたが、なんとか抜け出し先に進んだ。とはいえ、きちんと理解しているわけではない。

ProductName コンピュータプログラミングの概念・技法・モデル(IT Architect' Archiveクラシックモダン・コンピューティング6) (IT Architects’Archive CLASSIC MODER)
セイフ・ハリディ,ピーター・ヴァン・ロイ,Peter Van-Roy,Seif Haridi
翔泳社 / ¥ 8,610 ()
通常24時間以内に発送

  • 型をなぞってプログラムを構成する
  • 高階プログラミングとは
    • 全ての引数が手続きでない手続きを一階という
    • 高階とは手続きが何階でもいいこと
  • 閉包とは手続き値

CTMCP chapter2 終了

メモリライフサイクルと例外が面白かった。

  • メモリライフサイクル
  • 核言語
  • 例外

ProductName コンピュータプログラミングの概念・技法・モデル(IT Architect' Archiveクラシックモダン・コンピューティング6) (IT Architects’Archive CLASSIC MODER)
セイフ・ハリディ,ピーター・ヴァン・ロイ,Peter Van-Roy,Seif Haridi
翔泳社 / ¥ 8,610 ()
通常24時間以内に発送

宣言的モデルに二つの制限をおいて純粋関数型言語を定義できる

  • 変数を宣言するとき、ただちに値に束縛する
  • 手続きでなく関数だけを使う

CTMCP chapter2

風邪がひどくて、日本酒というかお酒を飲む気がおきないので、やたらと勉強する気力が高まっている。というわけで、誕生日祝いということで一年くらい前に購入したガウディ本を読み始めているが、これがやたらと面白い。僕にはさくさく読み進める感じじゃないのでゆっくりと読んでるけど。

ProductName コンピュータプログラミングの概念・技法・モデル(IT Architect' Archiveクラシックモダン・コンピューティング6) (IT Architects’Archive CLASSIC MODER)
セイフ・ハリディ,ピーター・ヴァン・ロイ,Peter Van-Roy,Seif Haridi
翔泳社 / ¥ 8,610 ()
通常24時間以内に発送

2章で得られる感覚はレビューにあるようにパズルのピースが次々とはまっていくような感覚ですな。

2.2.5 識別子を使う値生成

束縛された変数のリンクを辿って値を得ることを参照剥がし(dereference)という。これはプログラマには見えない。

perlではなじみの深い操作。pythonでは多分見えない(見る方法あるんだろうか)。普段は見えなくてもいいけど、こういうこと知っていると変数の生死とか色々分かっていいような気がする。

perlとはそういう言語なんだなぁと、春のYAPCのdankogaiさんのスライド(p.29)を思い浮かべた。

2.3.3 基本形

タプルはフィールドが1から始まる連続変数であるリスト。あーだから並びが一意に決まるんだと妙に納得。pythonのタプルって実のところよくわからなかったので。pythonの実装もそうなっているのだろうか?あとで調べてみよう。

そういえばMAWPで集合を扱う時にhashのキー値だけを扱う実装にしてたけど、hash,list,tupleの関係って実際どうなっているんだろうか?なんてことにも興味が湧いてきた。