標高+1m

Don't be rational.

言葉整理

僕が以下の言葉を使うときの意味を整理しておきます。日本語でCSの授業を受けた事とかはないので、標準的な語彙と差異があるかもしれません。

情報

これはそこまで意識して使っていないです。プログラム中での表現によらず、プログラムが扱う対象を指すときに大雑把に使っています。情報は書き変える事ができません。もし書き換えたらそれは「改竄」と呼ばれます。

データ

配列や辞書など、情報をプログラムが扱えるよう(多くの場合メモリ上に)エンコードしたもの。情報が持つ以上の性質(メソッドとか)は持ちません。

ミュータブルなデータ

改竄が可能なデータ。情報の性質を失います。オブジェクトはミュータブルなデータを扱います。

イミュータブルなデータ

改竄を許さないデータ。

イミュータブルなデータ。関数もイミュータブルなので値。

関数

なんらかの値をなんらかの値に結びつける値。関数の仕事は値を作り出すことだけ。処理というよりは値と値の関係を記述したものと捉えると小さくて使いやすい関数が書けます。

情報の破壊

改竄のこと。イミュータブルなデータの使用は情報の破壊を伴います。

宣言的

手続きではなく、問題の性質を記述することでプログラムを構成する事。CSSをイメージするとわかりやすいかもしれません。関数は性質を記述するための道具として使いやすいです。

オブジェクト

「髪の毛を一本抜いてもハゲじゃないからもう一本抜いても…」の話と同じようなものだと思っています。オブジェクトの定義は流派によって違うし、アイデンティティや状態や型やポリモーフィズム名前空間など色々な性質がごちゃ混ぜになっているので僕は簡潔に定義できません。つまり僕はこの言葉を議論のベースにはできません。

オブジェクト指向についてはid:sumimさんのブログがとても面白いです。
“オブジェクト指向”の本質

アイデンティティ

あるデータとあるデータが同一であるかを判断する基準。イミュータブルなデータなら内容が同じなら同一として問題ないです。ミュータブルなデータの場合は、後から書き変わる可能性があるのでメモリアドレスで比較するよりないことが多いです。

イミュータブルなデータのアイデンティティは状態のタイムライン。
ミュータブルなデータのアイデンティティはデータそのもの。

状態

時間の経過につれて刻々と変化する事象を扱う際に、時間上のある点での事象の値を指します。
ミュータブルなデータを複数使用している場合は、アプリケーション自体が状態を持つ事になり、デバッガで実行を止めて全てのデータを確認する以外に状態の把握ができません。

時間

*脳みそが弾け跳ぶ音*