プログラム勉強中

派遣先の大学で、時間が空いたのでプログラムの勉強をはじめました。先日ちょっとJavaScriptをいじっただけで、最近、プログラムしてないな、と感じてたので。

ネットの記事で、カリフォルニアのITエンジニアの採用では、ソートのアルゴリズムをコードに書ける試して採用を決める、なんて記事を見かけたので、久々にやってみることに。

ソートのアルゴリズムを勉強したのは、かなり若いころでした。今はもうすっかり忘れています。配列の要素をソートして処理する、というプログラムは過去に何度も書いてますが、sort() とかの関数を使うので、そのアルゴリズムを意識したことはありません。若いころは、C言語にデータを入替する処理を書いたことがあり、ソートのプログラムを参考にした覚えがあります。しかし、最近は意識することもありません。

VirtualBoxでLinuxを起動して、コマンドラインから PHP でネットの記事を見ながらささっと書いてみました。しかし、クイックソートは難しい。どういう動作なのか、なかなか理解できません。

10個くらいの数字をテキストに書いて、自分でやってみたのですが、右側と左側の処理の切り替えって、どうなっているんだ、と変なところで悩んでしまいました。ソート途中の配列を書き出してみて、こう動いているんだ、と納得はしました。たぶん、若いころもしっかりとは理解できていなかったのでしょう。バブルソートと選択ソートは考え方が簡単なので、コードに落とすのは楽でした。こっちはプログラムを組む際によく使うような考え方だと思います。

昔、後輩にPHPのプログラムの書き方を指導した時は、プログラムは、極々簡単な処理の組み合わせだから、全然難しくないから、と言ってから始めました。今もその考えは変わっていません。とはいえ、やりたいことをコードに落とすのは、難しい。どういう手順で実現するかで、その人のスキルが解るのでは、という気がします。そして、この手順の引き出しが多くするには、その動きをイメージしながら、手を動かして書いてみるしかありません。ここがプログラムの難しいところでしょうか。