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↑
テクノロジー失業
たまには、プログラミングとは少し違う話を。

人工知能がブームです。基本的には流行に乗るのが嫌いなので、傍観していたい気もあるんですが、機械学習とか、Deep Learningとか言われてしまうと興味が出てき、アルゴリズム自体は研究などに使っています。個人的には、Deep Learningのライブラリは、Kerasがおすすめです。

まあ、その辺はいいんですが、人工知能が進化しすぎると、人類が人工知能に支配される的な恐怖が語られることがありますが、個人的にはそこは心配していません。「電源抜けばいい」という議論もありますが、今の世の中すべてのコンピュータの電源抜いたら、生活できないので、それは難しいかもしれませんが・・・。
ただ、この件に関しては、現在の世界の金融市場は、ほとんどアルゴリズム取引で、あまりに高速すぎて、人がついていけていないという話もありますから、すでに特定の分野では、アルゴリズムに人が支配されているという話しも成立するかもしれません。

個人的に本当に懸念していることは、人の仕事がアルゴリズムに奪われる件です。たとえば、自動改札なんて、私が幼いころ(今から30年くらい前ですが)は、まったく無かったわけです。駅員さんが怒濤のように押し寄せる乗客の切符を、一瞬で乗り越しではないか、判断していたわけですから、それはそれですごいですけど、今どき都会じゃそんな光景目にしません。
アルゴリズムがとって代わるのは、単純作業だろと、思いたいところですが、実はまったくそうではありません。それこそ、税理士、公認会計士あたりは現時点でもかなり危なく、さらには弁護士、医師にまでその領域は広がりそうです。つまり、高度な仕事をしていると思われるいる分野も、仕事が機械に奪われる危険性があるわけで、これを「テクノロジー失業」と呼ぶようです。
もちろん、仕事は機械にまかせて、楽園のような生活ができればいいですが、おそらくそうはならないでしょう。資本家の富が増えるだけで、庶民はますます貧しくなる可能性があります。政治が頑張って、ベーシックインカムのような制度を実現できるとよいですが、ちょっと難しい気もします。

というようなことが書いてあるのが、次の2冊。どちらも同じ著者ですが、「機械との競争」の方が先に出たものです。ザ・セカンド・マシン・エイジは最近刊行されてこちらも面白かったですが、ちょっと分厚いので、お忙しい方は比較的さらっと読める「機械との競争」がいいと思います。


先日、今の勤め先の研究室でこの話をしたら、結構みなさん楽しんでくれました。こういう社会科学の専門家では無いですが、興味ある分野なので、これからも追っていきたい話題の1つです。
【2015/10/04 13:47】 | | トラックバック(0) | コメント(0) | page top↑
社会心理学講義

社会心理学講義:〈閉ざされた社会〉と〈開かれた社会〉 (筑摩選書)社会心理学講義:〈閉ざされた社会〉と〈開かれた社会〉 (筑摩選書)
(2013/07/18)
小坂井敏晶

商品詳細を見る


本は好きなので、いろいろなジャンルのものを読むのですが、久しぶりにすごいと思ったのでメモも兼ねてブログに。なんで買ったのかよく覚えていないのですが、Amazonでおすすめと言われてあまり考えずボタンを押していたのかも。結構分厚い本なので、いつか読めばいいかなと思っていましたが、年末読み始めたら止まらなくなりました。心理学と社会学についての講義ではありますが、著者の莫大な知識と偏見の無い根拠に基づく論理展開、さらに科学の可能性と限界に対する正しい洞察、どれをとっても超一流です。なかでも、同一性という虚構という話は結構衝撃です。時にはこういう哲学的なことを考えるのもよいかなと思ったりします。おすすめです。
【2014/01/13 12:07】 | | トラックバック(0) | コメント(0) | page top↑
Pythonスタートブック増刷出来
本日、Pythonスタートブックの増刷見本が手元に届きました。Amazonなどの主要な書店(Amazonは書店なのか?)にも、今週中には在庫が復活するようです。最新のPython2.7.2に対応してみましたので、プログラミングにご興味ある方は是非。

テーマ:プログラミング - ジャンル:コンピュータ

【2011/08/17 15:13】 | | トラックバック(0) | コメント(6) | page top↑
「Pythonスタートブック」増刷準備中
出版社の方から連絡があり、Pythonスタートブックの在庫が切れたということで、増刷することになりました。利用するバージョンを2.6.5から2.7.2に変更したので、ちょっといろいろ直すところがでてしまい、この土日で修正版の原稿を用意しました。
今現在、amazonや楽天では在庫が切れていますが、8/12くらいには用意できるのではないかという出版社の人のお話です。きっとどこかの本屋さんの棚には、在庫があったりするのでしょうから、情報をやりとりして品物を融通できるようにしてもよいのではないかと思ったりもしますが。
増刷出来たらまたご報告します。
【2011/08/03 18:14】 | | トラックバック(0) | コメント(2) | page top↑
| ホーム | 次ページ