私の大切にしている本です。
大切にしている割にはカバーも付けずにヨレヨレですが。
昭和62年発行の「コンピュータアルゴリズム辞典」です。
簡単なものから人工知能に近いものまでたくさんのアルゴリズムが掲載されています。
その中にはもちろん統計や集合、グラフ理論、多倍長計算といった最近よく耳にする「ビッグデータ」を扱う時に基本となるようなプログラムも多数含まれています。
それらのプログラムがすべて「Pascal」という言語で書かれていたりします。
そのままではまったく役にたちません。
ところがその「Pascal」という言語は当時からアルゴリズムの勉強に向いていると言われ、現在のオブジェクト指向でカプセル化されたプログラムよりもずっと見通しがよく、「プログラムとは何か」を学習するにはとても良い教材だと思います。
現在のプログラミング環境では、必要なものがすでにライブラリ化され、プログラマはそのライブラリを使うだけです。
しかし、そのライブラリが内部で何をやっているかわかっていないと、とんでもない無駄なことをやる場合があります。
同じ事をやるプログラムを「できる人」と「そうでない人」が作った場合、性能差が1000倍以上とか普通にあったりします。
まぁ速度差が10%とか20%程度なら、読みやすいプログラムを優先しますが、50倍ともなると話は違ってきます。
表示するまでに50秒も待たされるようなWEBサイトは誰も利用してくれません。
私個人的には現在のWEBプログラムは1秒以内に終了すべきだと考えています。
WEB開発に何ヶ月も設計に時間をかけて、それらのすべてを1秒以内に完結させるというのもなかなかドラマティックな仕事なのではないかと思っています。
ところでここで実用にならないアルゴリズムのクイズです。
AとBにそれぞれ数字が入っています。
条件分岐「if」を使わずに、どうやればAとBの最小値をとれるでしょうか?
もちろんMin関数など論外です。
答えは次回です。
年月別
- 2018年9月 (7)
- 2018年8月 (8)
- 2018年7月 (9)
- 2018年6月 (10)
- 2018年5月 (12)
- 2018年4月 (12)
- 2018年3月 (12)
- 2018年2月 (11)
- 2018年1月 (12)
- 2017年12月 (13)
- 2017年11月 (21)
- 2017年10月 (19)
- 2017年9月 (19)
- 2017年8月 (21)
- 2017年7月 (25)
- 2017年6月 (26)
- 2017年5月 (27)
- 2017年4月 (32)
- 2017年3月 (32)
- 2017年2月 (31)
- 2017年1月 (32)
- 2016年12月 (32)
- 2016年11月 (28)
- 2016年10月 (28)
- 2016年9月 (20)
- 2016年8月 (20)
- 2016年7月 (20)
- 2016年6月 (21)
- 2016年5月 (9)
- 2016年4月 (14)
- 2016年3月 (12)
- 2016年2月 (22)
- 2016年1月 (28)
- 2015年12月 (29)
- 2015年1月 (3)
- 2014年12月 (17)
- 2014年11月 (12)
- 2014年10月 (17)
- 2014年9月 (11)
- 2014年8月 (13)
- 2014年7月 (13)
- 2014年6月 (9)
- 2014年5月 (10)
- 2014年4月 (20)
- 2014年3月 (25)
- 2014年2月 (23)
- 2014年1月 (21)
- 2013年12月 (20)
- 2013年11月 (16)
- 2013年10月 (7)
- 2013年9月 (8)
- 2013年8月 (18)
- 2013年7月 (21)
- 2013年6月 (19)
- 2013年5月 (2)
- 2012年11月 (1)
- 2012年8月 (1)
- 2012年6月 (1)
- 2012年4月 (2)
- 2012年3月 (3)
- 2012年2月 (6)
- 2012年1月 (6)
- 2011年12月 (3)