ぴょん吉です。
最近、ひょんなことから部内でデータ構造に関して話をする機会が何度かありました。
意外(ではない?)ことに、データ構造そのものの知識があまりないプログラマが比較的多いことに気がつきました。
私が思うに、データ構造そのものの理解も、プログラミングにおける基本の一つだと思うんですけどねぇ・・・
有名な書籍の一つに「アルゴリズム+データ構造=プログラム」(原題:Algorithm + Data Strucutres = Programs)という、二クラウス・ヴィルト(Niklaus Wirth)さんの書いた本があります。彼はPascalの開発者としても有名ですが、本のタイトルになるくらい重要なものであろうかと思います。
有名なデータ構造としては、配列、(単方向/双方向)リスト、木構造、スタック、キュー、ハッシュなんてものがあるかと思います。
比較的、最近開発された言語(例えばJavaとかC#とかPHPとか)には、これらのデータ構造を実現するためのライブラリが標準で用意されていますので、昔みたいに自分で、こういったものを作成する機会はあまりないでしょう。
用意されているものは、当然、使ったほうが良いわけで、どんどん使ったほうがいいのですが、そもそも、
・存在自体しらない
・それぞれが、どのような特徴があるのか
・それぞれが、どのようなシーンで使用できるのか
が、分かっていない点が非常にイタイです。
だから、キューなどを使えばいいシーンで、一生懸命配列使っていたり、リスト構造しらないから配列使ってセコセコやったり・・・なんてことが発生しかねません。
こういったことって、今の教育機関(専門学校とか大学とか)ではやならいんですかねぇ?
少なくとも、「クラスがどうのこーの」、「継承がどーのこーの」言う前にコンピュータ科学系の教育機関出身者であれば(そうでなくても)、身につけておく素養の一つだと思います。
間違いなく使いますから!!
コンピュータ系の教育機関を出ていなくとも、世の中似たような書籍はたくさん存在していますので学ぶ機会はたくさんあります。後は本人の努力次第でしょう。
こういったものは是非とも身につけておいて損はないかと思います。
みなさん、がんばりましょう!!