【新人SE応援企画】SEとしてのたしなみ。 基本情報の知識なんて机上の空論?

未分類

そもそも性能問題に陥らないようにするたしなみの話です。

月並みですが、情報工学の基礎的な知識ぐらいは持っておきましょう。基本情報技術者試験で問われる知識は表層的な感も否めないので、何の役に立つのかと思っている受験者も多いことでしょう。しかし、出題者側はそれなりの意図を持って出題してるわけなので、問われることはそれなりにこの業界において必要な事柄なのです(中には本当に悪問があることを否定はしませんが)。

 

たとえば処理量が増えた場合の急激な性能の劣化は、入力の大きさと計算時間がどのような関係にあるかを知っていればある程度は予測できます。入力に対して線形に増加するのか、指数的に増加するのか、対数関数で増加するのか。これらは、計算量という概念によってO(n)やO(n2)などと表現されるのを参考書などで見たことがある人も多いでしょう。ソートのアルゴリズムは様々ありますが、ソートすべき要素数が2倍に増えたときに処理量が2倍では済まないアルゴリズムがあるということと、上記の計算量の話が関連づけられる程度の理解は欲しいものです。もちろん、実際のソートはライブラリを使うことの方が多いでしょうが、計算量の概念すら知らずに性能の劣化に立ち向かうのは心許なすぎます。現実にはさらにほかのボトルネックを考慮しなければならないのですから。

 

また、CPUとメモリ、HDDがどのくらいの速度差があるかということも知っておいて損はないでしょう。キャッシュのヒット率を考慮した実行時間や、HDDの平均シークタイムの計算問題は基本情報技術者試験では頻出ですが、これも性能と大いに関連のある話です。なぜ、キャッシュが存在し、キャッシュにヒットしないとどのくらい遅くなるのかを知っておきたいものです。最近の高級言語はハードウェアに関する知識があまり要求されないとはいえ、いざ問題にぶつかった時にはそれなりに知っていないと非常に難儀することになります。

 

理論を知っていても実践が出来るとは限らないというのは確かなのですが、理論を知っていると実践がし易いというのもまた確かなのです。このあたりはスポーツの上達を考えるときとそう変わらないように思えます。特に、計算機の分野は同じ概念があちこちで使われたりしており、一度覚えると使い回しがきくのです。キャッシュという概念などはその典型といえます。

タイトルとURLをコピーしました