プログラミングをする上でアルゴリズムとデータ構造を知っていると、知っていない場合と比較して大きな差ができます。
この記事ではプログラミングをある程度勉強した初心者が、アルゴリズムとデータ構造を勉強する上でオススメの本と、アルゴリズムとデータ構造を勉強する重要さをご紹介します。
アルゴリズムとデータ構造を勉強して初心者を抜け出しましょう!
アルゴリズムとデータ構造を勉強することで、プログラミング中級者へと昇格しましょう!
アルゴリズムとデータ構造のおすすめ本
今回ご紹介するおすすめ本は、「問題解決力を鍛える!アルゴリズムとデータ構造」です。
私は学生時代に勉強をしたときは、教授の出版した字と数式だけの本でイメージもわかず苦戦をした覚えがあります。
働き始めていろいろなコードに触れた今、改めてアルゴリズムとデータ構造の重要さを振り返るために本書を購入して勉強をしました。
なお本書はC++言語で記載されていますが、好きな言語で解き進めてみるのもいいかと思います。
仕事でよく使う内容がいっぱいだったんだ…
アルゴリズムとは
アルゴリズムとはある課題を解決するための手順のことです。
家から駅まで行くときにも、道の選び方で距離や大変な坂道があるなど結果が違うのと似ています。
プログラミングは自由にコーディングできるため、目的のソフトウェアを開発する方法は無限にあります。
しかし、家から駅までの道を最短で済ませるルートがあるように、プログラミングにもコーディングする行数や処理時間を短くする効率の良い方法を昔の偉い人が考えてくれています。
データ構造とは
プログラミングでは変数や配列、構造体など、データを持っておくための入れ物がありますよね。
配列は連続した入れ物にデータを格納しますし、構造体は変数や配列などを組み合わせた入れ物にデータを格納します。
このように、データを持つための構造をデータ構造といいます。
効率の良いアルゴリズムを使うためには、いろいろな種類のデータ構造を知っている必要があります。
本を読んだ感想
総評
絵がふんだんに使われており、また網羅的に記載されているため、アルゴリズムとデータ構造を理解するにはとても良い本だと感じました。
それぞれのアルゴリズムやデータ構造について実務で活かせるように、具体的な内容だけでなく抽象化して理解できる点も良かったです。
全くの初心者には難しいかもしれませんが、プログラミングの本を1冊読み込んだくらいの知識があれば中級者へステップアップするための良著だと思います。
数式がよく出てくる点はやっぱり難しい
アルゴリズムとデータ構造で効率の良し悪しを判断するのは、そのプログラムを実行したときの処理時間です。
この処理時間を求めるためには高校で使うレベルの数学知識(logなど)が必要になるため、この点はやっぱり難しく理解するのに時間がかかりました。
ですが、プログラミングは論理的な面が強いため、中級者へステップアップするために避けては通れない道です。
具体的な問題で理解してから、実践で使えるように抽象化していくステップはわかりやすく良いと感じました。
仕事でよく使う内容から、競技プログラミングで使う内容まで網羅されている
仕事をする上で知っておくべき内容から、あまり使わないが重要な内容まで網羅されていると感じました。
私が大学で学んだものから学んでいないものまで網羅されています。
この本を1冊持っておけば、アルゴリズムとデータ構造については当面問題ないように思います。
章末問題
この本の章末には、アウトプットして理解を進めるための章末問題がついています。
文章で記載された問題に対して0からコーディングを進めることから、良い勉強になります。
(初心者には難しいかもしれませんが…。)
ただし、答えが本には載っておらずWebサイトを参照しなくてはいけない点、
Webサイト上にも途中の章までしか答えが載っていない点には注意が必要です。
アルゴリズムとデータ構造は必要?
プログラミングの仕事をする上で、知っていると役に立つ知識はかなりあります!
以下のような人はステップアップするために必読です!
①プログラミング言語の本を1冊勉強して得た知識を、思いつくままに組み合わせているよ?
②小難しい論理は知らないけど、別にコーディングはできるよ?
③今の仕事は既存のプログラムをちょい変するだけだし、別に知らなくても困らないよ?
この本を読むことで、あなたの市場価値がアップするよ!
①そのプログラム、既に誰かが書いている!
1940年代にプログラミングができて以来、様々なソフトウェアが開発されてきました。
あなたが四苦八苦しながら時間をかけて作った新機能も、世の中に出回っているアルゴリズムを知っていてそれを組み合わせることができれば、大幅に時間を短縮して作ることができます。
そうなるために、アルゴリズムとデータ構造を勉強して知識を蓄えることは重要です!
②意思疎通がはかどる!
プログラミングをする会社に入社して間もない方はこのような経験がないでしょうか。
そこはスタックとキューが…
リングバッファを~~
いや、何語しゃべってんねんっ!
ベテランプログラマーは専門用語の横文字をこれでもかと言うくらい使います。
というのも、よく使われるデータ構造やアルゴリズムには専用の名前がついており、お互いがその知識を持っていれば名前を言うだけで齟齬なく意図が伝わるので便利だからです。
プログラムをなんとなくコーディングできるだけではなく、言語化してアウトプットできるようになれば、エンジニア同士で簡単に意思疎通ができるようになり、時間短縮・品質向上につながります。
例えばプログラミングで転職をしてスキルアップをしたいと思っている場合でも、面接などで技術的な内容を円滑に話すことができれば評価をしてもらえますよね。
エンジニアとして自分の市場価値を高める上でも、アルゴリズムとデータ構造を学ぶことは重要です。
③既存のプログラムの意図がわかる!
プログラムをちょい変する業務でも、まずはソースコードをじっくりと読み込み、内容・意図を理解した上で変更を行いますよね。
既存のソースコードはアルゴリズムとデータ構造を知った上で作られたものがほとんどだと思います。
あなたもソースコードを読み込む段階でアルゴリズムとデータ構造を知っていれば、冒頭を読んだだけでそのソースコードを書いた人がどのようにコーディングするかをイメージしながら読み進めることができます。
これができれば、さっぱりわからない状態で読む場合と比較して、ソースコードを読んで理解するまでの時間が大きく違うはずです。
既存のソースコードを読むときにも、アルゴリズムとデータ構造は重要です。
まとめ
アルゴリズムとデータ構造の重要さと、勉強する上でおすすめの本をご紹介しました。
あなたもアルゴリズムとデータ構造を勉強して、プログラマー初心者を脱却して次のステージへステップアップしましょう!
コメント