プログラミング参考書 なっとく!アルゴリズム
今回は「なっとく!アルゴリズム」という本を読んでみました。
対象者
この本はプログラミングの基礎を終えた方が対象です。(出来ればpython)
又、アルゴリズムを学んだことのない方におすすめです。
内容
本のタイトルにもあるように、アルゴリズムを扱っています。
アルゴリズムとは簡単に言うと「物事のやり方」と思っていただいて大丈夫です。
つまり、やり方を工夫して最適な方法を見つけようというものです。
例えば、経路探索やソートの仕方、動的計画法など・・・
又、この本はプログラムがぎっしり書かれていてそれを説明すると言った部類のものよりも
アルゴリズムそのものの説明に比重を置いています。
微妙なポイント
この本は文中の説明に即して、部分的にソースコードが書かれています。
文章で説明するのは難しいので、
以下の例で説明します。
「xを入れたら+1して返す関数があるんですよ」
「xを入れたら-1して返す関数があるんですよ」
「ぜひみなさんも以下のコードを実行してみてください」
みたいな・・・
「いや、全部繋げたコードを書いてくれ・・・」
文中の説明で部分部分を抜き出すのはいいんですけど、
最後にまとめておいて欲しかったと感じました。
いいポイント
この本のいいポイントは難しい内容や頭の中で整理しずらい内容に触れる際に、
具体例をいくつか提示してくれている所とイラストが豊富な所です。
読み進め方
この本は先述したとおり、文中の説明に即して部分的にソースコードが書かれているので
実際にプログラムを書きながら理解していくことが他の本と比べて少し手間がかかります。
「そんなの面倒だ!」と思っていらっしゃる方に関しては、
この本はアルゴリズムな内容だけを理解するための本と割り切って、
読み物として扱うのも悪くないかもしれません。
プログラミング勉強方法
プログラミングの参考書を購入したけど、どうやって勉強するん?
って思った方はいらっしゃいませんか?
私も初めてプログラミングを学ぶ際に思いました。
文法って全部覚えないといけないのか。
又、参考書に書いてあるソースコードの意味はなんとなく理解できる。説明されたらわかる。
でも、いざ自分で書くってなると何から書いていけばいいのかわからない。
そのような悩みを解消する手助けが出来たらいいな〜と考えています。
文法は覚えなくていい
この見出しを見て「え?」と思われる方もいらっしゃると思います。
でも私の個人的な考えとしては文法を完全に暗記する必要はないです。
その理由を説明します。
みなさんはこれまでの義務教育を経験する中で丸暗記をするといった機会がほとんどだったと思います。
数学であれば公式の暗記、英語であれば、単語・文法・構文の暗記など・・・
なぜ暗記しなければいけなかったのか。
それはテストにおいてカンニングは許されないからです。
一方、プログラミングにおいてはどうでしょうか。
プログラムを書くときに参考書を見てはいけないルールみたいなものはありますか?
ないですよね?
カンニングし放題です。
(大学や専門学校等の期末テストを受ける際には話が変わってきますが・・・)
結論
文法書(入門書)は一通りやるが、全てを暗記する必要はない。
手を動かして理解する
文法を覚える必要がないのであれば、参考書を眺めるだけでいいのか。
そんなことはありません。
参考書を進める上で重要なことは理解することです。
眺めるだけでは理解したつもりになっているだけで、
理解できていない場合があります。
これを改善するためにソースコードを実際に自分で書いてみましょう。
最初は丸写しでかまいません。
自分でプログラムを書いて動かす中で、エラーがでてくるとおもいます。
そのエラーをなくしていく作業が理解をするための手助けをしてくれるはずです。
以下の例を考えてみましょう
12行目と15行目のprintでなにが出力されるでしょうか?
答え
12行目の部分:6
15行目の部分:6
解説
1〜3行目のkeisan(x)で起こっていること
関数の中に入ってきたxがあり、
yにx+1を代入して
yを返してください
5〜7行目のkeisan2(x)でおこっていること
関数の中に入ってきたxがあり、
yにx+1を代入して
xを返してください
要は計算してるけど、計算結果を返すのではなくて、
計算前の値を返しています。
よって
15行目の部分は7ではなく6が出力されます。
自分でプログラムを書く時はプロトタイプをイメージ!
プロトタイプとは大きな枠組み(不完全)と思っていただいて大丈夫です。
以下の例を見てください
よく見てみると、keisan(x)とkeisan2(x)の中で行われる処理内容が書かれていません。
でもいいんです。
プログラムを書く時は大まかな枠組みを先に書いてしまいます。
それが出来たら細かい部分を書いていきます。
例えば、家を建てるときに設計書を作らずにいきなり組み立てる大工さんはいないと思います。
プログラミングも同じです。
短い行で済むプログラムを書くなら必要ないかもしれませんが、
長くなるにつれて、なにから書いていけばいいんだろうか?と悩んでしまいます。
そのような方は紙でも良いので、プロトタイプを書いてみてください。
上記の例より簡単なものでも構いません。
全体の骨組みを考えることが重要です。
プログラミング言語で共通していること
プログラミング言語の特徴
皆さんはどのプログラミング言語を使っていますか?
C言語・JAVA・ Python・Rubyなど・・・
様々な言語がありますが、
この言語を選択しないと絶対に作れないものがある・・・
そんなことはありません。
プログラミング言語とは「順次」・「分岐」・「繰り返し」という機能を持っています。
順次とはプログラムが動く処理が上から順番に実行されていくことです。
分岐はそのままの意味で
例えば、ある値が奇数ならAの処理を、偶数ならBの処理をしてください。とか。
繰り返しとはある処理を何回か繰り返すことです。
例えば、3行目から10行目までのソースコードの処理を10回繰り返してください。とか。
以上の3つの機能が備わっている限り、なんとかなる場合がほとんどです。
プログラミング参考書 Python2年生スクレイピングのしくみ
Python2年生スクレイピングのしくみ今回はPython2年生スクレイピングのしくみという参考書を読んでみました。
対象者
この本の読む対象者はpythonの基本的な文法を理解している人です。
ですので、この本から勉強を始めるのはお勧めしません。
学べること
この本で学べることはクローリングとスクレイピングです。
「クローリング? スクレイピング? 何それおいしいの?」と思われる方もいると思います。
クローリングとはネット上に公開されているデータをかき集めることでスクレイピングとは収集したデータを解析して、必要なデータを取得することです。
具体的にはネット上にあるcsvファイルやxlsxファイルをダウンロードし、情報を取り出したり、グラフにしたりすることができます。
又、ネット上にあるwebページから必要な情報だけをまとめることもできます。
いいポイント
この本のポイントは柔らかい表現で丁寧に説明されている点です。
白黒でぎっしり書かれているわけではなく、
重要な所であったり、新しく学ぶ所にはマーカーが引かれており、わかりやすいです。
また、ソースコードの横にそのコードを書くことでどのようなことができるのかと言った説明書きが施されています。
興味の湧いた方は是非╰(*´︶`*)╯
プログラミング入門参考書 わかるPython
今回、私はわかるPythonというプログラミング参考書を読みました。
数あるプログラミング言語 (C言語、JAVA、Ruby、Python)の中で
なぜPythonを選んだのかというと・・・・・
まぁ理由はないんですけど・・・
強いていうならプログラムが書きやすいし、読む時に見やすいからですね。
C言語とか面倒だし・・・
(今後やるかもしれないけど)
対象者
この本はpythonの入門書です。
ですので、pythonを学んでみたいと思った方、初心者の方におすすめです。
学べること
この本は基本的な文法を解説しています。
その他にも機械学習やニューラルネットワーク、Webアプリケーション等が学べますが、おまけ程度と思っていただいて結構だと思います。
いいポイント
この本のいいポイントはレイアウトがシンプルで読みやすい所です。
プログラミングの本って白黒で1ページあたりにぎっしり書かれているイメージが
あるじゃないですか?(ないかもしれないけど・・)
この本はそのようなことはありません。
例題もしっかりと載っているので理解もしやすいです。
入門書を一通り終えたら
プログラミングを始めるには何が必要?
プログラミングを始めるには何が必要?
ITを学びたいと思った時に最初に想像するのは何でしょうか。
これを読んでくれている人の中にもたくさんいらっしゃると思いますが、
私はプログラミングかな〜と思います。
じゃあプログラミングを学ぶ上で最低限必要な環境とは・・・
ネットワーク環境
ネットワーク環境はお自宅にあるwifiが利用できれば十分です。
パソコン
どんなパソコンを購入すればいいのでしょうか
結論から言うとなんでもかまいません。
「え?」と思った方もいらっしゃるかもしれません。
プログラミングするんだからハイスペックなパソコンじゃないと・・・みたいな
でも大丈夫。
家電量販店等で売っている安いパソコンでもプログラミングすることは可能です。
ちなみに私が使用しているパソコンはMacBook Air (13-inch, 2017)です。
Apple MacBook Air (13インチPro, 1.1GHzクアッドコア第10世代のIntel Core i5プロセッサ, 8GB RAM, 512GB) - ゴールド
- 発売日: 2020/03/21
- メディア: Personal Computers
上記に紹介した商品の型落ちしたものを使用しています。
「いや、高いじゃん」と思われたと思います。
でも、欲しかった・・・
mac使ってドヤ顔したかった・・・
そんな理由でmacを購入したわけですが、先ほど申し上げた通り、
ここまで高いものを購入するする必要はありません。
上を見ればこれよりも高いものはたくさんありますが、
数万円のパソコンで大丈夫です。
OS(windows,mac,linuxなど)もなんでも大丈夫です。
家にパソコンが既にあるならそれを使っていただいて構いません。
プログラミング参考書
こちらについては今後、実際に私が購入し良いと思ったものを紹介していこうと思います。
(まだ何も読んでない・・・)
では╰(*´︶`*)╯