fc2ブログ
Pythonで学ぶアルゴリズムとデータ構造(講談社)
いまから約1年ほど前の2019年11月に、講談社さんから「Pythonで学ぶアルゴリズムとデータ構造」という本を出しました。書いた時の苦労話は、先日寺田学さんのラジオに呼んでいただき話ました。全体は1時間半近くあって、この本の話だけではないので、万が一時間が余ったら聞いてみてください。

さて、この本は「数理・データサイエンス教育強化拠点コンソーシアム」という、いかつい名前のコンソーシアムのもとで編集された教科書シリーズの1冊です。編集委員のお1人である京都大学の下平先生から執筆を依頼されたのがこの本を書くきっかけでした。ちなみに、下平先生には今年の5月に、私が主宰する「みんなのPython勉強会#57」にご登壇いただきました。貴重な映像がYouTubeにアーカイブされているので、興味ある方はご覧ください。下平先生の話は、1:30:50あたりからはじまります。かなりためになります。

アルゴリズムは現代のコンピュータ社会を支える屋台骨なので、関連書籍は山ほどあります。最近はPython自体がブームなので、昨年執筆していた時点ですでに、アルゴリズムの解説をPythonでやるという本が何冊もありました。また、大学や高等専門学校の教科書として使われることが想定されていたので、重要なトピックが漏れないように、ある程度書かなければならない項目も決まっていました。

何か工夫をしないと数多くある類書に埋もれてしまうと思い、大きな裏テーマの1に「アルゴリズムの学習を通じて、プログラムスキルを伸ばす」というものを設定しました。

なにごともそうですが、プログラミングは実際に書かなければ書けるようになりません。でも、ただ書けと言われても何のプログラムを書いたらいいのかわかりません。そこで、プログラムを書けるようになるための題材にアルゴリズムを使うと良いのでは?と思ったわけです。このあたりの気持ちは、まえがきにも書いてあります。

たとえば、再帰はプログラミングの中でもわかりにくい項目の1つだと思います。一方でマージソートやクイックソートは再帰を使った実装が一般的です。本書では、再帰の理解の助けになればという思いから、前段として関数を段階的に呼ぶコードを載せてみました。

Pythonでリストをソートしたいと思ったら、sortメソッドかsorted関数を使うだけです。正直、ソートのアルゴリズムを知る必要はありません。それが最近のプログラミングスタイルだと言うこともできます。ただ、ソートのアルゴリズムを知り、それを理解してプログラムのコードに落とし込む作業は、プログラミングスキルをかなり鍛えてくれます。ソートのアルゴリズムを忘れてしまっても、プログラミングスキルは残るでしょう。それが私の意図したところです。

この本の後ろの方では、公開鍵暗号、ブロックチェーン、Burrows-Wheeler変換など多彩な話題を取り入れてみたので、楽しんでいただけると幸いです。コードと演習問題の答えはすべてGitHubで公開されています。

アルゴリズムを題材にプログラミングスキルを伸ばすというスタイルが、もっと普及するといいなと思い、出版から1年弱を経てブログ記事を書いてみました。もし、みなさんの周りにプログラムが書けなくて困っている人がいたら、是非この方法をすすめてみてください。私も教育題材として使って、その効果を確かめていこうと思っています。
スポンサーサイト



【2020/08/31 15:26】 | | トラックバック(0) | コメント(0) | page top↑
<<SSDで無音NASを作ってみた | ホーム | Visual Studio CodeのTexでスニペット>>
コメント
コメントの投稿














管理者にだけ表示を許可する

トラックバック
トラックバックURL
→http://tanopy.blog79.fc2.com/tb.php/154-051c9129
この記事にトラックバックする(FC2ブログユーザー)
| ホーム |