7時前に起きて生活習慣改善の兆しが見えた。
計算機アーキテクチャと構成方式(中澤喜三郎)
第5章. addressingを読了。
- addressは主記憶(main memory)の番地
read/fetch、writeに用いる。- addressingの単位によって分類分けされるが、byte addressがよく用いられる。
- あるaddressにより一様にアクセスできる記憶領域をaddress spaceという。
addressを馬鹿正直に主記憶に一対一で対応させていてはアドレスの長さが足りないので、いろいろな工夫を凝らしている。
base register address方式
base registerを起点にしてアドレスを決定する。
effective addressの求め方は二種類あり、
- 加算方式
- つなぎ合わせ方式
という。
index mofdification
stored program方式の特徴として命令自体の書き換えが可能であることが述べられていたが、それはあまり推奨されておらず。
index register を介することでaddressを変更するようにする。
メモ
基礎的な部分について触れているだけなので、この本の内容が間違っていることはそうそう無いだろうが、かなり古い本である。
余裕があればもう少し新しい情報を学びたい。(噂のパタヘネとか)
Effective Python
Item24. @classmethod を使おう
要約
- Python は各々のクラスに対するコンストラクタはinitだけしか認めていない。 →コンストラクタの多態性が無いよ。
- コンストラクタの多態性が必要になるときには、@classmethodを使うと良いよ。
中身
コンストラクタが一種類しか定義できないと、例えばインスタンスを複数作成する時なんかに、後からの変更箇所が大きくなりがち。
継承とクラスメソッドを使うことでいい感じにしよう。
NotImplementedError
絶対オーバーライドするメソッドに対して記述しておく。
こんなん。
class InputData(): def read(self): raise NotImplementedError
クラスメソッド
第一引数に自身のクラスを与える。
下のように、引数に与えられたリストから自身のインスタンスのリストを返す、みたいなメソッドを実装できる。
@classmethod def from_list(cls,namelist): return [cls(name) for name in namelist]
これらを用いて、Effective Pythonでは各クラスのジェネレータを作成し、多態性を確保する、みたいな例を書いていた。
人工知能の課題で作った群知能系のアルゴリズムとかは、これを使えばもっとよかった気がする。
メモ
なにかひとつくらいそれなりに得意な言語を身につけねばと思って買ったEffective Python(英語版)、読んでなかった。
そうこうしているうちに和訳版がでやがったので、春休みのうちに読み終わりたい。
すごいH本
モナドについてのあれこれ。
リストモナドによる非決定性計算とか、do記法とモナドの関係とか、リストモナドとリスト内包表記の関係とか、いろいろと学びの多い部分なのだけれど、如何せん難しいため完全に理解できていない。
すごいHaskellはもう一周するか、これから読みたいと思っているHaskell系の本を読む時に折に触れて見直すことになりそうだ。
Unity(五月祭)
2Dunityちゃんがうごくようになりました……
unity、かなりモチベーション低い。
obenkyo
時間がね、ありませんでした。
趣味
デッサン(というか、写真の模写)の練習は2時間くらいできました。
Pythonのprivate変数周りについての不勉強がわかったので、それを調べながら描くことになった。
あんまり集中できなかったかも。
Pythonはドキュメントちゃんと読まずに「使っとけば覚えるよね」ってやってきてしまったので、あんまりよくない……
明日
すごいHかアーキテクチャあたりをちょっと減らしてバイトをやります。