株式会社システムインテグレータ 代表取締役社長 梅田 弘之
(Twitter:@umedano)
プログラミングとアルゴリズムは表裏一体
プログラミングの勉強をする際に意識しておかなければならないのは、「プログラミングスキルとアルゴリズムの能力は表裏一体」だということです。
アルゴリズムをきちんと組み立てられない人は、絶対に良いプログラムコードを書くことはできません。逆に言えば、プログラミングを学習する人は、アルゴリズムも勉強する必要があるのです。
最近、ロジカルライティングというスキルが注目されていて当社でも社員教育で実施してます。こうした文章を書くことに置き換えるとピンとくると思います。たぶん、みなさんは文の組み立て・構成力のない人が書く文章を読んだことがあると思います。だらだらとしていて要点がわかりにくく、せっかく書いたのに役に立ちませんよね。
同じようにアルゴリズムに弱い人が書たプログラムは、だらだらと無駄に長くなり、処理速度が遅いだけでなくバグを生みやすいコードとなります。下手な文章を読むのと同じように、コードを見ているだけで気持ちが悪くなります。
アルゴリズムとは
アルゴリズムとは、「問題を解くための数学的な手順」のことです。プログラミング言語を使って、問題の正解を導き出すプログラムを書くことがプログラミングであり、プログラムは本質的にアルゴリズムだと言えます。
実はアルゴリズムは、プログラミングの世界だけでなく日常にもあります。例えば、大根をいちょう切りにする手順を考えてみましょう。
「わたし、料理やったことないの~」って人が、最初に11枚の輪切りにしてからそれぞれに2回包丁を入れたとします。この手順だと、合計で10+10×2=30回切ることになります。
ちょっとでも料理をやったことがある人なら、こんな手間のかかる切り方しません。最初に縦に2回包丁を入れてから11枚にスライスすれば、2+10の12回で済むわけです。
アルゴリズムは本来のセンス?
これが彼女だったり奥さんだったり、彼氏だったりなら問題ありません。その不器用さがかえって可愛らしいとさえ思うかも知りません。でも、料理店が料理人を雇う場面だったなら、こんな”要領の悪い人”は避けられてしまいます。
IT企業のエンジニア採用も事情は一緒です。きちんとアルゴリズムの組めない人は、すっきりとしたプログラムを書けません。実はプログラミングを長年やっていて、相当量のプログラムを書いた経験があるといっても、アルゴリズムの弱い人は貧弱なコードしか書けていないのです。
さらに心を鬼にしてシビアなことを言えば、アルゴリズムは本質的なセンスに負うところが大きく、そう簡単に身に着くものではありません。アルゴリズムが苦手な人は、場合によってはプログラマーという仕事をあきらめて別の職を探したほうが幸せかも知れないとさえ思っています。
[RELATED_POSTS]
アルゴリズム能力は高められる
と、ここまで書いてしまって、さすがに身も蓋もないって反省しました。そこで、社内のエンジニアにアルゴリズムの能力をどのように鍛えればよいか聞いてみたところ、私の考えとは別の意見が結構出てきました。
A君
「先天的なものではないですよ。アルゴリズムこそ、問題をやればやるほど能力がアップすると思います」
B君
「アルゴリズムは日本語で算法と言われるように、先人たちのアイデアがたくさん蓄積されています。なので、アルゴリズムを勉強しておくと、引き出しが多くなり、解決する方法がパッと浮かびやすくなりますよ」
Cさん
「そうそう。アルゴリズムをたくさん知っておくと、いざという時の対応力が違います。特に難しい問題に直面すればするほど、その出番とありがたみが大きいです」
なるほど~。恐れ入りました。確かに料理が下手だった人でも、クックパッドやkurashiruを見ながら料理を作るうちに、上手なやり方を学んで手際が良くなります。アルゴリズムもそれと一緒ですね。
- キーワード: