活動報告

新着記事

カテゴリー

キーワード検索

2018.01/15 プログラミング(10)

オブジェクト指向でプログラミングするときに、プログラミング設計が大切である。その設計のコツはコンピュータをまず忘れて、解きたい問題あるいはプログラム化することで便利にしたい課題に注力することだ、と先日書いた。

 

すなわち、FORTRANやBASICのようなコンピューターに命令を送るプログラムを作ろうとせず、コンピューターに解答を出してもらう感覚の設計手法である。

 

しかし残念ながらこの設計手法の感覚を100%満たしてくれるオブジェクト指向のプログラミング言語は無いようだ。C#が現在の所この考え方に近いが、それでもプログラム設計においてコンピューターへ命令を送ることを忖度しなければいけない場面が出てくる。

 

C#の設計ではC++の仕様を踏襲したらしいが、ジェネリックプログラミングについてテンプレートを用いるC++より数倍洗練されている。

 

C++はCをベースにオブジェクト指向化した言語で、プログラミングをする時にも、ましてや学ぶときの学習者に対する制約、覚えなければいけない項目がすこぶる多い。

 

それでもC++のコンパイルでは中間コードとしてCに落とすことができたので、Cでプログラミングに慣れた人には学習しやすい言語だった。すなわち、オブジェクト指向を十分理解していなくてもベターC的な使い方もできた。

 

逆にこれはC++を使わずにCでオブジェクト指向のプログラミングが可能なことを示しているが、これは柔軟性や拡張性を考慮して設計されたCという言語の成果である。この事実は構造化プログラミングの進歩があってのオブジェクト指向という実感を持つことができる。

 

おそらくオブジェクト指向プログラミングのパラダイムを最初に思いついた人は、構造化プログラミングのさらなる上位の構造化としてオブジェクト指向を閃いたのかもしれない。C++を使ってみると、そのようにも感じられる言語だ。

 

しかしジェネリックプログラミングなどを導入し本格的にオブジェクト指向でプログラミングしようとすると、ところどころ「コンピュータープログラミング臭さ」が出てくる。

 

C#ではそれが少し薄まっているのだ。Cを名乗っているが、オブジェクト指向による拡張をスマートにできるようマイクロソフトが1から設計しなおした優れたプログラミング言語である。

カテゴリー : 一般

pagetop