Posts RSS Comments RSS 22 投稿 and 1 コメント till now

Archive for the 'コンピュータ' Category

ゲームプログラマになる前に覚えておきたい技術

ゲームプログラマになる前に覚えておきたい技術

著者/訳者:Array

出版社:秀和システム( 2008-11-15 )

定価:¥ 4,725

単行本 ( 872 ページ )

ISBN-10 : 4798021180

ISBN-13 : 9784798021188


知りうる限りでは最良のプログラミングの教科書の1つ。

この本を紹介するのにうってつけの文章が本の中にある。

私がこの本を書こうと思ったのは、新人研修の教官をやった時に大変困ったからである。これを読んでおけ、と言える本がないのだ。この分野はこれ、あの分野はあれ、と列挙することはできるが、5冊も10冊も詰まれても新人が困ってしまうだろうし、そもそも部分の総和は全体にはならないのであって、プログラミングの本とCGの本をバラバラに読んでもゲームは作れないのである。

C言語やC++といった言語はいささか汎用的すぎて初めてプログラミングをやる人にはオススメできないと私は考えている。プログラミングが大好きという人ならprintf()で簡単な出力を出しているだけでも興味を覚えるかも知れないが、ほとんどの人にとってはC/C++の標準ライブラリの中でできることはシンプルすぎて面白みがない。そこで私が何かオススメの言語はないかと訊かれると、大抵はRubyやPythonのようなスクリプト言語でWebからデータを集めてくるとか、すぐにでも役に立つプログラムが書けそうな言語を答える。あるいはJavaのような最初から大規模なフレームワークが存在して、善し悪しはともかくオブジェクト指向のマナーを叩き込まれるような言語とか、ゲームが好きならゲーム向けの言語を勧める。その方が結果が見えやすく興味が持続しやすいと考えるからだ。

C/C++の問題点は標準ライブラリの中では初心者が喜びそうなことがしにくい。グラフィックは標準では扱うことができないし、ネットワークもPOSIXのSocketとかに頼らないといけない。クラスライブラリもSTLのようなコンテナくらいしかない。だから正統的なC/C++の本は無味乾燥になりがちだし、オブジェクト指向について書いても「Humanクラスを継承してMaleクラスとFemaleクラスを作ります。同じtalk()メソッドでもMaleとFemaleでは振る舞いが違い・・・」のような作っていて全然面白くない例に終始することになる。

本書のよいところはゲームプログラミングという目的を最初から定めていることである。ゲームは好き嫌いはあるにせよ、リアルタイムに入力を処理して出力するという規模の大きいシステムである。これによってプログラミングを学ぶ目的が明確化する。単に暗記事項だったものが「何のためにその機能を使うのか」という要請に基づく理解に変わる。このことは初学者にとってはとても大きいことである。

他に随所に著者の意見が書かれていてそれがまた面白い。プログラムを書くというのはきれい事ではなく、現実に色々と厄介な問題との戦いであり、上級者の率直な意見は実に貴重な教材になる。何のためにそうするのかという疑問について、きれい事で答えられるより、例えば「面倒臭いから」という意見の方が人間味があって理解しやすい。言葉の1つ1つが砕けた表現であることが多く共感しやすい。

値段はそこそこするが、この辞書のように分厚く充実した内容を考えれば決して高い本ではない。

Javaネットワークプログラミングの真髄

Javaネットワークプログラミングの真髄

著者/訳者:Array

出版社:ソフトバンク クリエイティブ( 2007-04-28 )

定価:¥ 3,885

大型本 ( 408 ページ )

ISBN-10 : 4797341866

ISBN-13 : 9784797341867


ネットワークプログラミングの本の決定版。

Javaのネットワークプログラミングの本であるが、Java以外の言語でプログラミングをしている人にも向いていると思う。言語に特化した記述以外にも、プログラムの設計の指針になる記述もふんだんにあるからである。Socketプログラミングの本は数多くあり、Webでも入門記事は多く見かける。したがって、単純なサーバ・クライアントを作成するだけならお金をかけて本を買う必要はない。本書はそうしたありふれた入門書とは一線を画する記述がある。

中級者以上でも面白い記述がある

TCP/IPは古い設計であるため、色々と問題が指摘されている。TCPは信頼性のある通信を手軽に実現してくれて便利なのだが、TCPのフロー制御や輻輳制御、あるいは公平性についての取り決めは現代の高速ネットワークにはそぐわない点がいくつかある。ほとんどの場合は気にしなくてよいのだけど、必要な場合にはシンプルなUDPを使うこともある。UDPはほとんど何もしないプロトコルなので、TCPがやっている信頼性確保のための色々な工夫を自分で実装しないといけない。こうしたトピックについて気軽に読める本はあまり多くないと思う(大学のネットワークの教科書には書いてある)。

他にもサーバの負荷を考慮して、スレッドで捌くのか、SocketChannelを使って捌くのかなどの詳細な分析などは中級者にとっては面白い読み物となるだろう。

新しい世代の入門書

Javaは古くからSocketによるネットワークがサポートされていたが、最近(と言ってもずいぶん経つが)NIO(New IO)という新しいインターフェースがサポートされた。典型的にはブロッキングを回避するためにコネクションをスレッドに割り当てていたのだが、多くのコネクションをその数だけスレッドを作ってさばいているとパフォーマンスに問題がある。そうした要求に応える新しいインターフェースだが、あまり本は多くないと思う。WebにもNIOの解説はあるのだけど、数は多くない。数が少ないと親切な解説に当たることも少ないので少し困る。

本書は昔ながらのSocket通信はもちろん、NIOにも対応しているので、初心者が最初に手に取る本としても十分に役に立つ。

コンピュータの構成と設計~ハードウエアとソフトウエアのインタフェース 第3版

コンピュータの構成と設計~ハードウエアとソフトウエアのインタフェース 第3版 (上)

著者/訳者:デイビッド・A. パターソン ジョン・L. ヘネシー

出版社:日経BP社( 2006-03-16 )

定価:¥ 3,780

単行本 ( 290 ページ )

ISBN-10 : 482228266X

ISBN-13 : 9784822282660



コンピュータの構成と設計~ハードウエアとソフトウエアのインタフェース 第3版 (下)

著者/訳者:デイビッド・A. パターソン ジョン・L. ヘネシー

出版社:日経BP社( 2006-03-16 )

定価:¥ 3,990

単行本 ( 350 ページ )

ISBN-10 : 4822282678

ISBN-13 : 9784822282677


コンピュータアーキテクチャの定番の本で「ヘネ・パタ」本とよく呼んでいる。この本の紹介をするのは、ちょうど国家公務員試験のハードウェア問題の勉強をしたくて本棚から取り出してみたからである。現在、1次試験しか受けていないが、おそらく国家公務員一種の情報工学(ハードウェア)の出題範囲とよく重なると思う。理工系の問題集が限られる中で、何かよい本がないかという人はぜひ読んで欲しい。

CPUやメモリなどのハードウェアに近いテーマを網羅している。とりあえず上巻だけでも持っておくべきだと思う。

目次より

上巻

  1. コンピュータの抽象化とテクノロジ(プログラムの裏側コンピュータの内部ほか)
  2. 命令:コンピュータの言葉(コンピュータ・ハードウエアの演算コンピュータ・ハードウエアのオペランドほか)
  3. コンピュータにおける算術演算(符号付き数と符号なし数加算と減算 ほか)
  4. 性能の評価と理解(CPU性能とその要因性能の評価 ほか)

下巻

  1. プロセッサ:データパスと制御(論理設計とクロック方式データパスの構築 ほか)
  2. パイプラインを用いた性能向上(パイプライン処理の概要データパスのパイプライン化 ほか)
  3. 容量と速度の両立:記憶階層の利用(キャッシュの基礎キャッシュの性能の測定と改善 ほか)
  4. 外部記憶装置,ネットワーク,およびその他の周辺装置(ディスク記憶装置と信頼性ネットワーク ほか)

Next »