窓口を明確にすることは本質を変えないが、楽にはしてくれる。
diary
interface
窓口を作っても本質を変えるわけではないが、次の一手を探りやすくしてくれる。
窓口やインターフェスを作ることは、伝えるためのフォーマットをこちらから相手に強制でき、かつ、相手は伝えたことを確証できるようにさせる。 これにより、「言ったのに!」とか「いや、伝わっていない」とか、もしくは伝え方におけるミスいう事象を排除できる。
そもそも、複数のエージェント間で、お互いが特定の知識を持っており、そのうえで、お互いがその知識を持っていることを知っているという、共有知識が成り立つためには、なんらかのアルゴリズムが必要である(アルゴリズムがなければ共有知識は成立しないが、アルゴリズムがあれば共有知識が成り立つわけではない)
しかしながら、フォーマットを策定して、伝え方がよくなり、そして、共有知識を確保したところであっても、次のアクションがなければ意味がない。
もちろんその通りであるが、相手が定まった形式で伝えてくることで、どういう内容を伝えてくるのかが受け手にはわかりやすくなり、そして、どういう流れでそのあとの話を進めるかも手探りしやすくなるというメリットが、フォーマットの策定には意義がある。 (伝達でのミスを解消するためには誰かがハンドリングしないといけないが、その誰かをフォーマットにするのが楽である。(そのフォーマットに従わない邪悪な人は文化に従わせよう))
人間のコミュニケーションが不完全であるから、1つずつやっていき、よりフィットするコミュニケーションのあり方を調べていく。
sandwitches
オフィス近くのステーキサンドイッチショップを見つけて、社内で共有したら、結構多くの同僚が行っているらしいことが判明した。
美味しい店があっても人がこないと意味がないし、私の財布と胃袋は有限な上に、私の好みはあるので、色々な人に楽しんでもらいたい。 よい共有を行えたと思う。
今日の勉強
rust
TRPL
- pp. 65-68
- ヒープデータへのポインタを含む変数のコピーでは、確保されたメモリをコピーする代わりに、コピー元のスタック上のコピー元のを有効ではないとする、つまり、無効化された参照とする。
- Copy Traitを実装していないからダメとCompileでエラーが起きる。
- shallow copyでない
- ヒープデータのコピーなし、
- ptr, len, capacityの三つはコピーする
- しかし、最初の変数を無効化するわけではない
- 自動的にデータのdeep copyは行われない
- 自動で行わないから実行コストが低い
- ヒープデータまで含めたコピーをしたい場合は、メソッド
clone
を使う。
move
は、ptr, len, capacityをコピーして、前の参照を無効化する。
- 通常のコピー
- スタック上にすっぽりおさまるようなもの
- その場合、shallow copyとdeep copyの違いがなく、
clone
しても変わらない
- Copy Trait
- スタック上に保持される方に対して配置される注釈
- 代入後も古い変数が使用可能
- 何らかの形態のリソースだったりするものや、メモリ確保が必要なものはCopyではない
- 単純なスカラー値の集合はなんでもCopy
- Drop Trait
- これを実装している場合、Copy Traitによる注釈をさせてくれない。