久々に,本を出しました.(大熱血アセンブラ以来か…)
独自言語「NLL」の入門書です.
電子と紙の書籍があります.紙の書籍はオンデマンドなので,ネット上での注文販売です.
https://www.amazon.co.jp/dp/4295603392/
独自言語を使うことのメリットを出したかったため,言語の入門書というだけでなく,プログラミングによって算数の問題をいかに解くか?というテーマで書いてみました.
また,言語仕様を淡々と説明するのでなく,実験しながら修得するというやりかたにしたかったため、キャラクターの対話形式で書いてみました.(私としては、初)
入門書なので技術レベル高い本というわけではないですが,自分の自作の独自言語で本が出せたので,私としてはまた今までとは違った嬉しさがあったりします.
プログラミングが必修化されて久しいですが,プログラミングの入門というと,多くはゲーム作りを題材にしています.
これはこれで良いとは思うのですが,プログラミングに対して「ゲームを作るためのもの」というイメージが強くなるため,他のことに使うという発想,例えば身の回りのなにかに役立てるということに繋がりにくい(=修得のためのモチベーションを得られにくい)という部分があるのでは?と思います.
プログラミングがもっと身の回りの問題解決に役立てられるということを知ることができれば,じゃあできるようになってみたいというモチベーションをもっと得られやすくなるんじゃあないかなと.
そこで算数なのですが,算数の問題を解くっていうのは,子供にとってはかなり身近なテーマだと思うわけです.
これがプログラミングによってできるのであれば,それはプログラミングをやることのモチベーションに繋がりやすいのではないかと.
そのように考えてみると,算数の問題を解くことにプログラミングを使うっていうのは,かなり魅力的なんですよね.
理由は,プログラムを書くことで,コンピュータの計算力に任せて力任せに解くような,要するに教科書的ではないけど「理論が単純で理解は簡単な」解き方ができるからです.(例えば総当りで解くとかそういうのです)
最大公約数とかだって,公約数を出したり素因数分解したりしなくても,1から順にループして割った数がゼロになるやつ,っていう総当り的なやりかたで簡単に解くことができます.
もちろん前者のやりかたよりも計算量はかかるわけですが,プログラム書いてコンピュータが頑張ればいいだけですし,今どきのPCなら1万くらいの数までやったとしても一瞬でしょう.
別に教科書的なやりかたを否定するわけではないですしそれはそれで必要だとは思うのです.
が,それとは発想が違った「計算力に任せて解く」っていうやりかた「も」知ることで,解きかたに選択肢を持てるようになるわけだし,別の視点からの解きかたを知ることが理解の助けになるかもしれないし,そもそもそれで問題解決できるという発想も持てるようになるわけだし,それはそれでいいんじゃないかと思うわけです.
まあこのへんの詳しい話は書籍中に書きましたのでそちらで.