コンピューターのプログラムは、そもそも電子回路であるCPUに直接命令する機械語からはじまった。これは要するに数字の羅列である。「0」は「何もしない命令」みたいな感じの。
2013-12-12 04:26:23機械語を人間の理解しやすい命令に翻訳したのがアセンブラ。CPUのオペコードに1:1で命令を割り当てた物、内部演算器に数値を読み鋳込む命令をld(ロード)とかにしたもの
2013-12-12 04:28:04もっと英語っぽくした言語がFORTRANとかCOBOLとかBASIC。人間の使うあいまいな言語を最終的に機械語に翻訳する。このへんまでは、コンピューターがメモリから順次命令を読み取って計算し、答えを出力するというシンプルな構造を持っていた。
2013-12-12 04:30:45ALGOLとかPascalが出て、「構造化言語」と呼ばれる、これは物理的な電子回路が地道に命令を実行するモデルからちょっと離れて抽象的に実行単位のプロシージャとファンクションに分け、アドレスにジャンプみたいな低レベルの処理から離れたモデル。
2013-12-12 04:34:45ALGOL系言語の影響下で「でもOS書くんだったらアセンブラ並みの事もできなきゃ」って感じで高級っぽい仕様で低級の記述ができるCが登場。
2013-12-12 04:36:43その横で、より高級にしちゃおうぜYOU!って抽象化が進んだのがSIMULAとSmallalk。オブジェクト指向のはじまりである。
2013-12-12 04:39:41アセンブラでもBASICでもPASCALでも、結局一から順番に命令を重ねていくという構造。オブジェクト指向はデータとプログラムをひとまとまりの「カプセル」にして、そのカプセル同士が通信しあって処理が進むというモデル。
2013-12-12 04:41:29現在の主要なプログラミング言語はほぼすべてオブジェクト指向になっちゃってる。Webスクリプト言語のPHPもオブジェクト化してるし、BASICですらオブジェクト化してる。
2013-12-12 04:43:47オブジェクト指向って要するになにかがしかの処理をする単位を「オブジェクト」(物)と名付けて、データと処理を一つにまとめたものなんだよね。モナド化というか。「犬」に「吠えろ」と命令出せば「ワン」というみたいな粒度のパラダイム
2013-12-12 04:46:04「生物」クラスの下に「動物」クラスがあって、その下に「犬」クラスがあるっていうのがオブジェクト指向。要素還元的で論理的だけど、きちんと理解してないと設計とデバッグが死ぬほど大変
2013-12-12 04:49:05抽象概念の極みみたいなオブジェクト指向を機械語に一番近いCの改造でやっちゃおうってのがC++。なのであれは高度な抽象化と超低レベルの記述を同居させてて異様に複雑。
2013-12-12 04:50:58最近さらに新しい流行の関数型言語。あれはよくわからないw。基本的なアイデアはSmalltalkとどっこいな古いLISPで提唱されてるんだが、もうあのへん抽象化されすぎで、49のおっさんには厳しいですよ。
2013-12-12 04:56:39どうでもいいけどオブジェクト指向のオブジェクトってなんで「モノ」って表現するんだろう?自己を対象にした関数のある構造体って考えた方がとっつきやすいと思うんですけど。変数局所化重点の文脈で
2013-12-12 05:09:14Cなら構造体に変数と関数ポインタ入れた物ですよね RT @kuzu_doh どうでもいいけどオブジェクト指向のオブジェクトってなんで「モノ」って表現するんだろう?自己を対象にした関数のある構造体って考えた方がとっつきやすいと思うんですけど。変数局所化重点の文脈で
2013-12-12 05:11:21@juangotoh そう言ってもらった方が分かりやすいんですよね。なんで使うかも比較的イメージしやすい。「動物」とか「犬」とか「人間」とか言われると途端になんぞこれってなるんですが弊社が非プログラマだからなんでしょうか
2013-12-12 05:16:45そこにはパラダイムシフトがあったわけです。ただの構造体。変数と関数ポインタの羅列だとCPUの処理によってるけど、それを動物とかえんぷろいい~とか言うとなんか一段上の概念になる
2013-12-12 05:17:52オブジェクト指向の入門書って昔は例示するのに「cat」「dog」「employee」だらけで、特に「employee」はダメだろw。なんだよ「えんぷろい~」ってwwww
2013-12-12 05:21:41