忍者ブログ
[1] [2] [3] [4] [5]

DATE : 2017/08/18 (Fri)
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


DATE : 2007/11/17 (Sat)

Windowsプログラミングの極意 歴史から学ぶ実践的Windowsプログラミング!(Raymond Chen 著、株式会社クイープ 訳、アスキー、2007)」を読みました。Microsoft の Windows 部門に所属されている方の書いた、Windows の開発にまつわる本です。

「Windows プログラミングの極意」というタイトルですが、中身は Windows API の話だけではありません。私は Windows API は触ったことがないので Windows API にどっぷりつかった話はほとんど分からなかったのですが、その部分を除いてもかなり得るところはありました。

  • 領土問題を避けるためにタイムゾーンの選択を地図上から行えなくした
  • Windows API のドキュメントに示されていない部分に触るサードパーティのコードがあったため、互換性のために Windows API 自体に手を入れる必要があった
  • 企業内のシステムでは16ビットアプリケーションがいまだに生きているため、16ビット用のサブシステムが捨てられない
  • ユーザは自分が意味の分からないダイアログについては「いいえ」を選ぶことが多いため、ダイアログの数は減らす

など、ユーザインタフェースまわりから一般の開発の姿勢まで、数多くの話題が盛り込まれています。

ちなみに、今はウェブ上の地図サービスが人気ですが、領土問題に関してはやはり苦労しているようです(本書では、地政学に関して『個人的なルールは、「地図にはとにかく近寄らない」である』(P.399)とあるのが皮肉ですが)。例えば、2007年11月17日現在のLive Search Mapsでは、日本海は「Sea of Japan (East Sea)」となっていますし、Google Maps 日本語版での台湾は、中国語(簡体)版では台湾省になっています。

(;^ω^)本書にもありますが、この問題は国連に認められたという文句では通じないのがやっかいですね。

参考文献

PR

DATE : 2007/10/16 (Tue)

エキスパート C プログラミング ――知られざる C の深層」(Peter van der Linden 著、梅原 系訳、アスキー、1996)を読みました。歴史から言語仕様、プログラミングの際のノウハウなど、C 言語をより深く知り、使いこなすための本です。

この類の本は堅苦しい内容のものが多いのですが、本書ではところどころハイテンションな調子で文章が進んでいきます。それに乗せられて、読む側もついつい先へ先へとページをめくってしまう魅力がありました。また、著者らが経験したややこしいバグの例なども掲載されています。

とはいえ、内容はかなりしっかりしています。C の宣言を言語仕様から読み解いたり、ポインタと配列の違いが語られていたり、リンカ、実行時のデータ構造、メモリモデルなど、ハードウェア寄りの章もありました。C の宣言を言語仕様から読み解く部分では、読み解き方が遷移図で示されており、他人のソースコードを読む際に役立ちそうでした。

ただ、1996年(原著は1994年)の本なので、本書に登場する OS は古いものとなっています。主に登場するのは SunOS と MS-DOS です。しかし、C 言語そのものの話題は現在でも十分通用するものばかりでした。

(;^ω^)むしろ、読まないと気付けないような部分がかなりあって驚きました。勉強不足のせいかもしれませんが、例えば setjump / longjump の使用法や、宣言と定義の違いは初めて知りました。


DATE : 2007/10/07 (Sun)

コンピュータ・ジオメトリ ――計算幾何学:アルゴリズムと応用――」(M・ドバーグ他著、浅野哲夫訳、近代科学社、2000)を読みました。点や線、多角形といった、幾何学的なデータを扱うためのアルゴリズムとデータ構造の本です。

本書では、CG や GIS など、幾何学と直接結び付く応用のほかにも、データベースの検索など、データを幾何学的に解釈することで、計算幾何学分野のアルゴリズムが応用できることも示されています。例えば、身長と体重のデータがあったとすると、それを2次元平面上の点と見なせば、身長・体重が特定の範囲にあるデータを素早く求めることができる、といった具合です。

各章で紹介されている方法を見ると、木構造を活用する例が多く見られます。私は今まで1次元データを扱う木構造しか知らなかったので、本書に出てくるような2次元以上の多次元データも扱える木構造はとても新鮮でした。

また、言語に依存しない範囲でアルゴリズムも具体的に書かれています。そのため、今後も長く使える本だと思います。


DATE : 2007/09/11 (Tue)

アルゴリズムイントロダクション 改訂2版」1、2巻を読みました。アルゴリズムとは何かという基本的な部分から始まり、アルゴリズムの解析手法や設計手法、また代表的なアルゴリズムが紹介されている本です。

(;^ω^)高度なアルゴリズム本を読んでいたら撃沈されてしまったので、本書を読むことになりました。

オーダ記法に複数の種類(Θ、O、Ω)がある時点でまず驚きました。実際、撃沈された本では複数の記号が使い分けられていて、全部Oに解釈して無理やり読んでいましたが、これですっきりしました。

アルゴリズムの設計手法、特に動的計画法の部分は非常に便利だと思いました。動的計画法の例だけでなく、どのような場合に適用できるのかについても詳しく述べられています。

全体的に見ると、証明などの数学的な部分は少々難しいところもありましたが、アルゴリズムの動作は図も豊富で非常に分かりやすかったです。

(;^ω^)ただ、訳書の唯一の問題点は、第3巻の翻訳がまだということです。あとがきによると、「御支持があれば、残された部分の訳出にも取り組みたい」とのことです。


DATE : 2007/08/21 (Tue)

ソフトウェア開発 55の真実と10のウソ」を読みました。ソフトウェア開発では基本となっているにもかかわらず忘れ去られていたり、見逃してしまいがちな真実やウソを数ページずつにまとめた本です。うまくまとめられているので、気軽に読み進めることができました。

本書を通して、ソフトウェア開発における人・保守の重要さ、品質・生産性・見積もりなどの定量化の難しさが繰り返し述べられています。

一部には有名なもの(例えば、「真実3:遅れているプロジェクトに人を追加すると、もっと遅れる。」)もありましたが知らなかった真実がほとんどだったので、非常に参考になりました。中でも、驚くと同時に腑に落ちた真実は、「真実21:対象となる問題の複雑度が25%増加するたびに、ソフトウエアによる解法の複雑度は、100%上昇する。これは、改善しなければならない数字ではなく(複雑性を下げるのは非常に望ましいが)、こうなるのが普通だ。」でした。ソフトウェアを開発していると、つい機能を追加したくなったり、今後のことも考えて汎用性を持たせた設計をしたくなったりします。前者はともかく、後者は保守のことも考えれば必要な方針とは思います。しかし、機能を付ければつけるほど、また汎用性のある設計を行おうとすれば行うほど、モジュールやインタフェースの数は多くなり、見通しがしだいと悪くなっていきます。特に、ちょっとした思い付きで汎用性を持たせた設計にしてしまうと、あとで設計を見直したときに見通しが悪すぎて修正作業や、使い方を理解するのに余計な時間を費やすということもありました。このような経験があったので、真実21はとても納得のいくものでした。汎用性に関しては、「真実17:大規模な再利用は、類似システム間ではうまくいく可能性が高い。応用分野の類似性に依存するため、大規模流用の適用範囲は狭くなる。」も参考になります。結局のところ、しっかりとした方針を定めた上でソフトウェアを構築しないと、あっという間に混沌とした状態になってしまうということなのでしょうね。

(;^ω^)反省です……。

本書には、真実やウソに対する反論も同時に挙げられています。前に挙げた「真実3:遅れているプロジェクトに人を追加すると、もっと遅れる。」に対しては、特定の条件が成り立てば真実3は無視できるという反論が挙げられています。

最終的には、本書に挙げられた真実を基本としながらも、自分でしっかり状況を見定めていくことが重要なのだと感じました。

(;^ω^)こういう面からも、ソフトウェア開発は実に複雑ですね。

忍者ブログ [PR]
ブログ内検索
最近の状況
リンク
カレンダー
07 2017/08 09
S M T W T F S
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
使用許諾
最新コメント
(08/15)
(05/04)
(03/06)
(03/04)
(09/25)
最新トラックバック
T/O
(11/05)
ブログ内検索
最近の状況
リンク
カレンダー
07 2017/08 09
S M T W T F S
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
使用許諾
最新コメント
(08/15)
(05/04)
(03/06)
(03/04)
(09/25)
最新トラックバック
T/O
(11/05)