[工学] 昔の雑誌記事。(about Abstract Data Type)
今まで、Web 系で Java を使って仕事をしてきた私にとって、今度の仕事での Matlab + Simulink & C Mex による S-Function(C で記述する Simulink の拡張モジュール)での設計・実装は慣れていないが故に苦労するものである。色々と勉強したり、思い出す必要のあることが多い。
最近、お勉強用に工学雑誌「Interface」 のムック本を買った。*1 内容はリアルタイム/マルチタスクシステムとそれに関係するソフトウェア設計・実装全般であり値段の割りに内容が豊富であり、お得感がある。ただし記事の中には記載当時のトレンドに基づく記事もあるので、現在では事情も異なっている場合もあるからだろうか。
その本の一番古い記事は1996年の12月の記事である。内容は C 言語を使った抽象データ型に関する物である。かれこれ 7〜8年前のものであるが、Simulink での C++ での拡張モジュール生成になぜか失敗して C++ を使うことを諦めてしまった私には結構重宝する記事であった。
抽象データ型とは構造を持ったデータにその操作を関連付ける事で、データの抽象度を上げて、データに関するモジュール性を向上させようという設計概念である。実際に C の場合には構造体データのメンバーに関数ポインタを組み入れる事で、緩やかなカプセル化と多様性(ポリモフィズム)を実現する。こうして C でもオブジェクト指向っぽい事が部分的に可能という事である。
部分的にといったのは、いわいるデータ構造まで含めた差分プログラムは無理であるという事だ。C++ やJavaの場合 Class という名前が示すようにクラスと継承によるデータ型の分類を行い、基底クラスから拡張や部分変更を繰り返す形でソースコードの体系化と再利用が可能である。しかし C の構造体は型の継承をサポートしていない*2ので結局、無理なのである。
実際に S‐Function による拡張モジュールを大量に作り、それを分類・整理する必要があるのだが、その辺は悩ましいところである。しかし抽象データ型のメリットはやはりありがたい物である。
現実、Fortran も COBOL もまだまだ現役である。*3 C++ が世に出て既に20年近い年月が過ぎているが、それでも C++ が C に完全に取って代わるのは当分先のような気がする。古い?技術に触れる事で、普段何気なく使っていたオブジェクト指向を見直すきっかけになった。昔の記事でも非常に役に立つと事はそこにかかれていることが本質的なことだという気がする。
ソフトウェアの分野は、特に Web 系システムなんて世界では最新のトレンドを負うことに忙しい世界である。雑誌を見ても新しい概念や用語、技術が次々と出てきており、それらは工学的な検証を経る事も無く、次々と流れては変わり行く。それをダイナミズムと捕らえる事は可能だと思うし、新しい言葉の中にはデザインパターンのように確実に定着していく物もある。しかしそうしたトレンドを追う事に最近疲れてしまった気がする。年齢のせいなのだろうか。何が新しいかよりは、何が大切かという事をじっくり考えてみたい。歴史を振り返り、古典となる物を探す事に時間を使いたい。最近つとにそう思うことが多い。