はじめに
なんか今日の昼ぐらいにソートのアルゴリズムを書ける書けないの話題があったっぽいので昔の思い出話を書きます。
まず初めに
別に書けなくていいです。普通のプログラミング言語ならライブラリにソートの関数というかメソッドというかが用意されています。それを使えばいいです。しかも多くの場合、自分で書くより速いです。データ量に応じてソート方法切り替えたりとかいろいろやっているっぽいので。
じゃあなんで「書ける必要がある」と書いているのか
昔、プログラマの能力テスト作ってくれと言われてその中にバブルソートを書かせる問題を入れてました。といってもバブルソートのアルゴリズムを暗記している必要があり、それをそらで書くことを求めたわけではありません。
バブルソートのアルゴリズムは間違えようがないぐらい馬鹿丁寧に問題文に書きました。
さて、私が何をテストしたかったかわかりますか?
書かれていることを正しくプログラミングする能力です。
別の言い方をすると、
仕様を正しく理解する力です。
で、結果は?
テストを受けた人の採点を行うことになりました。
その前に、テストのテスト(本格運用前のお試し)だったので、テストを受けてみてどうだったかのアンケートも見ました。こんなことが書かれていました。
実務でバブルソートを書くことなんかありえません。
知ってるよ。
で、そんな偉そうなことを言うならもちろん、
不正解でした。
私に採用権があるならこの人は落とします。
まとめ
というわけでソートが書ける書けないの話に絡めて昔話をしました。
- ソートアルゴリズムを暗記してそらで書ける必要は全くない
- しかしアルゴリズムが提示されたら正しく実装できる能力は求められる
- それは仕様を正しく理解する能力だ
- なお仕様が正しいかは知らない