SSブログ

ハッシュテーブルの季節 [プログラミング言語Java教育]

一年間のプログラミング言語Java教育を行っていると、「ハッシュテーブルの季節」と私が呼んでいる時期が到来します。どういうことかと言うと、テキストである『プログラミング言語Java第4版』の第3.8節「Objectクラス」(86頁)にhashCodeメソッドの説明があるのですが、その内容に関する質問を解説するために「ハッシュテーブルとは何か」ということから説明しないといけません。特にその節の最後の段落でIdentityHashMapの解説があり、その節になると誰も理解できていないのが毎年の恒例となっています。

そもそも、ハッシュテーブルとハッシュコードを、大学時代あるいは会社に入ってから研修で習っていないのか、習ったけど内容が浅かったのか、習ったけど覚えていないのか、どちらにせよきちんと理解している人は毎年皆無に近いです。

拙著『プログラマ”まだまだ”現役続行』の第6章「コンピュータサイエンスの基礎力」で次のように述べています。
O表記が何であるかを説明できなかったり、ハッシュテーブルがなぜO(1)なのかを説明できないでソフトウェア開発を行っている人が、開発の現場では圧倒的に多いのではと危惧しています。実際、Javaを用いた開発でHashMapクラスを多用していても、その仕組みを全く知らずに開発しており、そのためにhashCodeメソッドを実装する理由を説明できない人ばかりだったりします。
現場の(若手)ソフトウェアエンジニアがハッシュテーブルを全く理解していないという現実に、私が初めて気付いて驚いたのが1998年か1999年頃です。残念ながら今でも状況は同じです。

今年も、1時間費やしてハッシュテーブルを説明しました。

(「ソフトウェア開発組織が持つべきカルチャー 002」)


スポンサーリンク