『AI時代を生き抜く2 プログラミングの基本』 by 土屋誠司

AI時代を生き抜く2
プログラミング的思考が身につくシリーズ
プログラミングの基本
土屋誠司
創元社
2020年9月20日 第1版第1刷発行

 

先日、シリーズ5を読んでみたら結構勉強になったので、改めて、シリーズ2 プログラミングの基本を図書館で借りて読んでみた。

megureca.hatenablog.com

言語の習得ではなく、基本的な考え方を「演算子」「条件分岐」「変数・型」「配列」「繰り返し」「関数」の6つに分けて学びます。”って。

 

今では、プログラミングって、学習指導の中に入っているのかもしれないけれど、昭和世代の私は、当然プログラミングについて系統立てて習ったことはない。大学生のころ、MS-DOSをつかって実験の分析結果を計算させることくらいはしていたけれど、それは、関数電卓に毛がはえた、、くらいなもの。

 

目次
1 プログラムとは何か
2 プログラミングの考え方
3 プログラミングの基本[1]演算子
4 プログラミングの基本[2]条件分岐
5 プログラミングの基本[3]変数・型
6 プログラミングの基本[4]配列
7 プログラミングの基本[5]繰り返し
8 プログラミングの基本[6]関数
9 プログラミング言語の種類
10 プログラムを作る時のコツ

 

感想。
いやぁ、、、ティーンネイジャー向けの本だけど、、難しいです!!

でも、この著者すごい。技術への理解がすごいということだけでなく、そもそも、何のためのプログラミングで、何のためにAIを使うのか、ということを伝える大切さをちゃんとわかっている。だから、ただの技術テキストではないものになっている。シリーズ5を読んだ時にも思ったけれど、この土屋誠司さんって、2000年、同志社大学工学部知識工学科卒業、2002年、修士過程終了ってなっているから、40代だとおもうけれど、なんというか、リベラルアーツのある人だな、って感じがする。技術オタクではない、見識の広さが伺える。

 

そう、だから、なんというか、素直に一から学んでみよう、、という気持ちで読むことができる。読むというか、大型の絵本てきな構成なので、文字は少ないけれど、絵もよくできている。なるほど、そうやって図解してくれると、よくわかるよ、、、って。いや、、、まだまだ理解しきれていないけど。

 

プログラムとはなにか、という説明では、コンピューターに「卵買ってきて」っていっても、みんなのようにお買い物はできないから、1から手順を教えてあげるために書くものだよ、って。


「近所の〇〇スーパーにいって、白くて、10個入って198円の卵をかってきて。もしなかったら、何も買わずに帰ってきて」って。

 

だから、プログラミングの書く基本は、
・物事を詳しく・細かく分ける
・物事を簡単にする
・物事の順番をきめる
ということ。

 

卵を買ってきてといわれても、普段なら考えないくらい、詳しく・細かくわけて簡単にする。人間なら、ウズラの卵かニワトリの卵か、サイズは、何個必要で何個入りが売っているのか、値段は?どこにいけば買えるか、、などなど、いちいち細かく考えなくても買い物ができるし、そんな風に考えていたらていたら疲れちゃう。その代わりに、「常識」っていうものがあって、卵5個必要だとしても、売っているパックは10個入りのでいいな、とか、考えられる。コンピューターはそれができないから、全部細かく指示してあげないといけないということ。

ほほぅ、確かにそうだ。
細かい指示がかけていると、プログラムは止まっちゃう・・・。卵5個必要なのに、10個入りしか売っていない、、、思考停止、というのがコンピューター。
だから、細かく、指示を出す。

 

最初は大きくて複雑に見えても、すべての物事は必ず詳しく、細かく、小さく分けていくことができます。そして、細かく分けていくと、考える必要のある一つひとつのことは非常に簡単になっていきます”って。

 

なんと、ちょうど『進化思考』で、著者が高校生の頃にであった本からの一節で、引用されていたことと、同じ話が、この子供向けの本に。

megureca.hatenablog.com

 

卵の話で言うと、
1)お店に入る
2)卵売り場に行く
3)卵をとる
4)レジに持っていく
5)お金をはらう
6)お店をでる。
と、分解することができる。

細かく分けて、順番を定める。
例えば、4)が抜けたら、泥棒になっちゃう。だめだめ!

 

普段から色々なことを詳しく、細かく見ていくことがプログラミングができるようになる最初の一歩、だそうだ。うん、うん。なるほど。これは、私が不得意とすること。なんでも、ざっくり掴んで、ドーンとトライして、、、玉砕、、、とかね。私の行動では、プログラミングという概念はかなり薄い・・・。

 

で、実際のプログラミングでも、動かしてみると上手く動かないということはよくある。「バグ」ってやつ。だから、こまめに動かしてみて、小さなバグを見つけながら大きなプログラムにすることが大事。IT関係の通訳をしていると、「バグ」って頻発する。それは、バグだ、バグの解消が先だ。バグが確認できない、、、、etc。

 

コンピューターやAIはすごいかもしれないけど、それをプログラミングして、バグ無く走らせているのは、やっぱり人間なのだ。あくまでも、人間が作っているんだよね。まぁ、機械学習というのもあるけど、それだって、学習させるためのプログラムを人間が作っている。。。ただ、アルゴリズムの中で何が起こっているかわからないけど、アウトプットだけはだせる、、、なんて機械学習もあるけど。

 

あとは、用語の勉強。

演算子には、算術演算子(+、ー、×、÷、%、modなど)と論理演算子(AND、NOT、OR、XORなど)がある。

 

・条件分岐とは、場合によって「させること」を変えること。「もし、〇なら△して、、、、そうじゃなかったら、□をする」とか。
 if、then、else if、els、、、

 

・変数と型とは、同じような物をまとめるための入れ物と種類。
 Int:整数型 
 Long:長整数型
 Float、Double:浮動小数点数
 Char:文字列(一文字)
 String:文字列型(複数文字)

 

・配列とは、関連した変数をまとめて一気に作る方法。縦と横の掛け算にするみたいな。

 

そして、プログラミングの言語は、PythonC言語Javaなどいろいろあるけれど、日本語が得意な表現と、英語が得意な表現があるように、目的とするプログラムによって、言語を使い分ける。

 

例えば、
・パソコン用アプリ:C言語、C++
スマートフォン用アプリ:Jave、Swift
・Webサイト:PHPJavascript
・AI:Python(パイソン)

なるほどなるほど。


言語って、どうやって使い分けているのかと思ったら、そのプログラムをつかうデバイスによって使い分ける、ってことらしい。パイソンという言葉を聞くようになったのも、AIが使われるようになってから。仕事で、生産現場の自動化をやっていた2000年代くらいは、まだ、C言語Javaくらいしか聞かなかった気がする。2010年代になると、自動化が高度化してきて、Pythonを聞くようになり、なんだそりゃ、、、と、だんだん私の理解を超越した世界になっていった。

そうか、そういうことだったのか、、、、。

 

いやぁ、、、難しいけど、ちょっと、光が見えた様な、、、気がする。
うん、なかなか、良い本である。