So-net無料ブログ作成

C言語によるデザインパターン [ソフトウエア]

ひさしぶりに、『デザインパターンの骸骨たち』の内容を更新しました。
最後の更新から実に4年ぶりになりますね。興味のある方は、下記サイトをご覧ください。

http://www002.upp.so-net.ne.jp/ys_oota/mdp/

最近、少し気持ちに余裕が出てきたので、ずっとアイディアとしてあたためていたデザインパターンのC言語版を追加してみました。正味、4,5日で書き上げたコードですので、いろいろとコードに不備があると思います。そこは現役を退いたおやじが書いたコードと思って見てやってください。

さて、C言語でデザインパターンを作ってみようと思った動機ですが、最近、海外エンジニアと付き合っていく中で、C言語が、まだまだ現役どころか主流を占めていることに気がつき、C言語でデザインパターンを作ってみたら、意外と使えるものになるのではと思ったからです。

日米では、2000年頃からすでに組込みの世界でもオブジェクト指向言語が導入されているところが多いですが、欧州やアジアでは、C++で書かれたコードは今でも稀です。エンジニアもオブジェクト指向設計にこだわる姿勢があまりないように思います。多くの組込みOSは、C言語インターフェースですので、その流れでドライバも、ミドルウエアも、アプリケーションもC言語というのは自然の流れなのでしょう。

私も彼らと付き合ううちに、何もオブジェクト指向言語でなくても、オブジェクト指向設計は実現できるのだと思うようになってきました。実際、彼らは構造体と関数ポインタを駆使し、オブジェクト指向的な使い方で、C言語のコードの再利用、拡張をしているのです。(デバックはやりにくいですけど) C++やJAVAといろいろな言語が出てきましたが、結局、手段を変えて同じことを実現しているに過ぎないということを強く実感しました。

とは言うものの、一方で、今回、C言語版のデザインパターンのコードを作ってみて、C++やJAVAの利便性をあらためて再確認することにもなりました。

C言語版のコードを見ていただければ分かると思いますが、まず、"thisポインタ"がおかしなことになっていることに気がつくと思います。あと、継承とメモリ管理ですね。オブジェクト指向言語は、このシステムがあるからこそ、実装効率が向上すると言っても過言ではないでしょう。オブジェクト指向言語特有の豊富で便利なライブラリも魅力です。C言語は、細かいところに気を使わなくてはならないので、コード書いていて少し疲れます。

このように、設計そのものには言語に依存するものではありませんが、使用言語は実装効率を著しく左右します。ゼロ・スクラッチで作るソフトウエアでは実装効率の観点から、オブジェクト指向言語を採用するほうがよいでしょう。しかし、過去のC言語で作られたソフトウエアを流用、拡張するような場合は、まちがいなくC言語を採用したほうがよいです。

いずれにしても根底にある設計が大事なのであって、開発言語は経済的な観点から選択するのが賢明な判断と言えるでしょうね。
nice!(0)  コメント(1) 

nice! 0

コメント 1

Cheap Jordan Shoes

旅行は楽しい英語の学習のように、観光客、学生、教師は良いガイドでは、素晴らしい世界に指導するように変更すべきです。
by Cheap Jordan Shoes (2011-01-04 12:02) 

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

大手メーカのシステムエンジニアの日々の雑感を綴るブログ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。