小 木木 製 薬 デザインパターン学ぶその前に

投稿者: | 2015年4月22日

C#を学んでいるうち、デザインパターンやらOOP(オブジェクト指向)に関して出会う。
ただC#やらデザインパターンって抽象的な話が多くて、なかなかピンと来ない。

車とか人間とかテレビとか言われても、何が役に立つのかわけわからん。

ここに関してはオブジェクト指向が生まれた背景(理由)を先に知るべき。
そんな訳でよもやま話しをぶっこみつつ、オブジェクト指向を再考した上で
デザイパターンを学びつつ、記事化していこうと思います。

Z80のお話

Z80…通称ゼッパチのお話。

一昔前はZ80というプロセッサがゲーム業界では使われていたらしい。
メガドライブ、NEOGEO、ゲームボーイ、ゲームボーイアドバンス等で使われていたプロセッサ。
現在においてはパチンコの制御系で使われていたり。

昔、学校でですが、Z80で機械語を直接打ち込んだ事もあります。
紙でロジック考えて、それをバイトコードに直し打ち込む。

Z80で機械語を直で打ち込むには・・・
CPUの仕様
レジスタ等の知識

また変数なんて便利な物はない。
メモリに値を打ち込み、それをレジスタに取り込み、
またメモリに戻し(ry

つまり、プログラマもコンパイラも人なので、職人技が求められた訳です。

代わりましてBASIC、C言語

CPUに機械語やらアセンブルやらやってたら、生産性低いわ!
って事で生まれたのが、BASICだったりC言語だったりする訳ですが、ここで一段階程、抽象化が行われています。

変数という概念。
変数のおかげで人間がメモリ(正確にはメモリのアドレス)やレジスタをあまり意識しなくていいようになったのです。
また、コードも読みやすくなり、人間が容易に理解出来る形式となりました。

ともあれ、メモリ見ようと思えばみれるんだけどね。
そうゆう意味では現在の言語の概念よりも機械寄りな言語といえます。

Java、C#

オブジェクト指向のパラダイムを持つ言語。
人間様の手間を減らす(コードの量)為に生まれてきた言語。

JavaやC#系の本を読めば、ほぼ全ての本において再利用性の話が出てくるでしょう。
再利用する事によってコストをともかく下げたいという思想が読み取れる。

また、可読性を維持しつつ、再利用性の用法をまとめたのがデザインパターンと思っています。

C#6.0の仕様等を見ていると、さらに短くする模様。

まとめ

ここで一つ例をとってオブジェクト指向再考を締めてみたいと思います。
for文を例に考えてみたいと思います。
C言語においてはfor文しかありませんが、
C#ではforech文もあります。

ここで、配列から全ての要素を出す処理を考えてみましょう。

そんなこんなでプログラミング言語の歴史をコードベースで振り返ってみると、
抽象化とコードの簡略化の歴史なのだなっと妙に実感しました。


コメント

Loading Facebook Comments ...

コメントを残す

No Trackbacks.