素人が見るプログラム言語の歴史

言語って難しい
10
後藤寿庵 @juangotoh

プログラミング言語の歴史をざっとなめてつぶやこうかしら

2013-12-12 04:24:07
後藤寿庵 @juangotoh

コンピューターのプログラムは、そもそも電子回路であるCPUに直接命令する機械語からはじまった。これは要するに数字の羅列である。「0」は「何もしない命令」みたいな感じの。

2013-12-12 04:26:23
後藤寿庵 @juangotoh

機械語を人間の理解しやすい命令に翻訳したのがアセンブラ。CPUのオペコードに1:1で命令を割り当てた物、内部演算器に数値を読み鋳込む命令をld(ロード)とかにしたもの

2013-12-12 04:28:04
後藤寿庵 @juangotoh

もっと英語っぽくした言語がFORTRANとかCOBOLとかBASIC。人間の使うあいまいな言語を最終的に機械語に翻訳する。このへんまでは、コンピューターがメモリから順次命令を読み取って計算し、答えを出力するというシンプルな構造を持っていた。

2013-12-12 04:30:45
後藤寿庵 @juangotoh

ALGOLとかPascalが出て、「構造化言語」と呼ばれる、これは物理的な電子回路が地道に命令を実行するモデルからちょっと離れて抽象的に実行単位のプロシージャとファンクションに分け、アドレスにジャンプみたいな低レベルの処理から離れたモデル。

2013-12-12 04:34:45
後藤寿庵 @juangotoh

ALGOL系言語の影響下で「でもOS書くんだったらアセンブラ並みの事もできなきゃ」って感じで高級っぽい仕様で低級の記述ができるCが登場。

2013-12-12 04:36:43
後藤寿庵 @juangotoh

その横で、より高級にしちゃおうぜYOU!って抽象化が進んだのがSIMULAとSmallalk。オブジェクト指向のはじまりである。

2013-12-12 04:39:41
後藤寿庵 @juangotoh

アセンブラでもBASICでもPASCALでも、結局一から順番に命令を重ねていくという構造。オブジェクト指向はデータとプログラムをひとまとまりの「カプセル」にして、そのカプセル同士が通信しあって処理が進むというモデル。

2013-12-12 04:41:29
後藤寿庵 @juangotoh

現在の主要なプログラミング言語はほぼすべてオブジェクト指向になっちゃってる。Webスクリプト言語のPHPもオブジェクト化してるし、BASICですらオブジェクト化してる。

2013-12-12 04:43:47
後藤寿庵 @juangotoh

オブジェクト指向って要するになにかがしかの処理をする単位を「オブジェクト」(物)と名付けて、データと処理を一つにまとめたものなんだよね。モナド化というか。「犬」に「吠えろ」と命令出せば「ワン」というみたいな粒度のパラダイム

2013-12-12 04:46:04
後藤寿庵 @juangotoh

「生物」クラスの下に「動物」クラスがあって、その下に「犬」クラスがあるっていうのがオブジェクト指向。要素還元的で論理的だけど、きちんと理解してないと設計とデバッグが死ぬほど大変

2013-12-12 04:49:05
後藤寿庵 @juangotoh

抽象概念の極みみたいなオブジェクト指向を機械語に一番近いCの改造でやっちゃおうってのがC++。なのであれは高度な抽象化と超低レベルの記述を同居させてて異様に複雑。

2013-12-12 04:50:58
後藤寿庵 @juangotoh

最近さらに新しい流行の関数型言語。あれはよくわからないw。基本的なアイデアはSmalltalkとどっこいな古いLISPで提唱されてるんだが、もうあのへん抽象化されすぎで、49のおっさんには厳しいですよ。

2013-12-12 04:56:39
後藤寿庵 @juangotoh

老人と海ならぬ「老人とBASIC」ですよ。GOTOとGOSUBのかんたんな世界に戻りたいよwww

2013-12-12 04:58:52
くず/カナタニチアキ @kuzu_doh

どうでもいいけどオブジェクト指向のオブジェクトってなんで「モノ」って表現するんだろう?自己を対象にした関数のある構造体って考えた方がとっつきやすいと思うんですけど。変数局所化重点の文脈で

2013-12-12 05:09:14
後藤寿庵 @juangotoh

Cなら構造体に変数と関数ポインタ入れた物ですよね RT @kuzu_doh どうでもいいけどオブジェクト指向のオブジェクトってなんで「モノ」って表現するんだろう?自己を対象にした関数のある構造体って考えた方がとっつきやすいと思うんですけど。変数局所化重点の文脈で

2013-12-12 05:11:21
くず/カナタニチアキ @kuzu_doh

@juangotoh そう言ってもらった方が分かりやすいんですよね。なんで使うかも比較的イメージしやすい。「動物」とか「犬」とか「人間」とか言われると途端になんぞこれってなるんですが弊社が非プログラマだからなんでしょうか

2013-12-12 05:16:45
後藤寿庵 @juangotoh

そこにはパラダイムシフトがあったわけです。ただの構造体。変数と関数ポインタの羅列だとCPUの処理によってるけど、それを動物とかえんぷろいい~とか言うとなんか一段上の概念になる

2013-12-12 05:17:52
後藤寿庵 @juangotoh

オブジェクト指向の入門書って昔は例示するのに「cat」「dog」「employee」だらけで、特に「employee」はダメだろw。なんだよ「えんぷろい~」ってwwww

2013-12-12 05:21:41