プログラミング作法 第3章 設計と実装 3.2 データ構造の選択

マルコフ連鎖アルゴリズムを実装するためのアルゴリズムについての考察 入力テキストが100,000語だとnが非常に大きくなるので、プログラムを高速に動かしたければ、あまりに多順素朴なアルゴリズムを採用するわけにはいかない。 入力語の記憶方法と出力につ…

プログラミング作法 第3章 設計と実装 3.1 マルコフ連鎖アルゴリズム

私にフローチャートを見せてテーブルを隠しておいたなら、私はずっとごまかされ続けるだろう。しかしテーブルを見せてくれればたいていはフローチャートなどいらない。一目瞭然だからだ。 Brooksの古典的名著の一節が示すように、データ構造の設計はプログラ…

プログラミング作法 第2章 アルゴリズムとデータ構造 2.10 まとめ

アルゴリズムの選択にはいくつかの段階がある。まず使えそうなアルゴリズムとデータ構造を吟味すること。そしてプログラムでどの程度の量のデータを処理する見込みなのかを考える。自分の問題に使用されるデータがそれほど多くなければ、単純なテクニックを…

プログラミング作法 第2章 アルゴリズムとデータ構造 2.9 ハッシュテーブル

ハッシュテーブルは計算機科学の偉大な発明のひとつだ。ハッシュテーブルは配列とリストと多少の数学的処理を組み合わせて、効率よく動的データを記憶し取得できるデータ構造を作り出す。これらの典型的な応用例に、動的な文字列(キー)集合の個々のメンバに…

プログラミング作法 第2章 アルゴリズムとデータ構造 2.8 ツリー

ツリーは階層的データ構造であり、それぞれの項目が値を持ち、ゼロ個以上のほかの項目を指し、ほかの1個だけの項目によって指されるような項目の集合を記憶する。唯一の例外はツリーのルートで、ルートを指す項目は存在しない。 ここでは、それぞのノードに…

プログラミング作法 第2章 アルゴリズムとデータ構造 2.7 リスト

個々の項目がデータと次の項目へのポインタを含んでいる項目の集合を、単一リンクリスト(singly-linked list)という。リストのヘッドは最初の項目を指すポインタで、リストの最後はヌルポインタでマークされる。次ぎに示すのは要素が4個のリストを表した図…

プログラミング作法 第2章 アルゴリズムとデータ構造 2.6 配列の伸張

ただ、個数は可変だが、要素数の少ない物事を管理したいケースはよくある。そういう場合には依然として配列が最善の選択肢となり得る。その際に、配列は割り当てコストを最小限に抑えるためにチャンク単位でサイズ変更する必要があるし、物事をすっきりさせ…

プログラミング作法 第2章 アルゴリズムとデータ構造 2.5 O記法

アルゴリズムの実行時間と領域の必要量を、プログラミング言語やコンパイラ、マシンアーキテクチャ、プロセッサ速度、システム負荷その他の複雑なファクタから切り離して比較したいからだ。 そのために「O記法(O-notation)」という標準記法が存在する。こ…

プログラミング作法 第2章 アルゴリズムとデータ構造 2.4 Java版クイックソート

JavaのCやC++との大きな違いのひとつは、比較関数を別の関数に渡せないことだ。関数ポインタなど存在しないからだ。そのため、ここでは代わりに2個のObjectを比較する関数だけを含んだインターフェイスを作る。さらに個々のデータ型をソートするために、その…

ルシファー還る えりる堂

ふと思いだして、"ルシファー還る"で検索かけたらヒットした。素直に驚いた。インターネットって便利だなと思った瞬間。ルシファー還るは全巻あると思うけど、どこにしまったかわからない。忘れないようにリンクをはっておこう。 ディアナの虜囚 http://f36.…

プログラミング作法 第2章 アルゴリズムとデータ構造 2.3 ライブラリ

ANSI Cにはbsearchという二分探索ルーチンも定義されている。 キーを指定するのが面倒なので、bsearchはqsortよりも使い勝手が悪い。優れた汎用ソートルーチンには1〜2ページ分のコードが必要だが、二分探索ルーチンは、bsearchとのインターフェイスをとるの…

プログラミング作法 第2章 アルゴリズムとデータ構造 2.2 ソーティング

最良の汎用ソーティングアルゴリズムのひとつに、C.A.R.Hoareが1960年に考案したクイックソートがある。クイックソートは、よけいな計算をいかにして回避したらいいかを示す好例だ。これの原理は配列を小さな要素と大きな要素に分割することにある。 配列の…

プログラミング作法 第2章 アルゴリズムとデータ構造 2.1 探索

不慣れな分野のプログラムを開発しようとするなら、その分野ですでにどんなことが解明されているのかを調べてみなければならない。さもないと、優れた手法がすでに存在するのに、自己流の下手なやり方を考案するのに時間を無駄にするはめになるからだ。 この…

プログラミング作法 第1章 スタイル 1.7 なぜ手間をかけるのか

そもそも、ここで紹介されたルールは個人の勝手な意見にすぎないのではないか。 それに対する答えはこうだ。きちんと書かれているコードは読みやすく、理解しやすく、ほぼ例外なく間違いも少なく、無神経に殴り書きされたきり一度も仕上げを施されていないコ…

プログラミング作法 第1章 スタイル 1.6 コメント

注目すべき細かい点に簡潔に触れたり、もっと大きな視野で処理を解説することでプログラムの理解を助長するようなコメントがベストだ。 当たり前のことはいちいち書くな。 i++でiがインクリメントされたといったような、わかりきった情報をコメントで報告し…

プログラミング作法 第1章 スタイル 1.5 マジックナンバー

マジックナンバーとは、定数、配列サイズ、文字位置、変換ファクタその他、プログラム中に登場するリテラルな数値を指す。 マジックナンバーには名前をつけよう。 原則として、0と1以外のすべての数値はたいていマジックナンバーであり、それ独自の名前をつ…

プログラミング作法 第1章 スタイル 1.4 関数マクロ

関数マクロを使う理由は性能にある。マクロには関数呼び出しのオーバーヘッドが存在しないからだ。もっともこの理由は、Cが初めて定義された頃、つまりマシンが低速で関数呼び出しが高価だった時代でさえ説得力に欠けていたくらいだから、今日ではまったく的…

プログラミング作法 第1章 スタイル 1.3 一貫性と慣用句

しかし同じ作業が毎回必ず同じ方法で処理されるようになっていれば、何か違っている部分があったときに、それが注目に値する本当の違いだとわかるようになる。 インデントとブレースのスタイルを統一しよう。 昔からプログラマはプログラムのレイアウトをめ…

プログラミング作法 第1章 スタイル 1.2 式と文

作業を実行するコードはこの上なくきれいに書く。演算子の前後に空白を入れて関連性がわかるようにする。もっと広い意味では書式を整えて読みやすさを向上させる。 構造がわかるようにインデントしよう。 自然な形の式を使おう。 条件式に否定が含まれている…

プログラミング作法 第1章 スタイル 1.1 名前

我々が最初に取り上げるのはプログラミングスタイルだ。スタイルの目的は自分にも他人にもコードを読みやすくすることにあり、良きプログラミングには良きスタイルが欠かせない。 プログラムを書くということは、正しい構文を使い、バグを直し、それなりに高…

プログラミング作法 はじめに

プログラミング作法は良い本なので、読んだ内容についてポイントを記載していこうと思う。以下は、「はじめに」の項の内容から引用したまとめ。 それなのに、この種の問題に対処しようとすると予想外に苦労することが多い。テストやデバッグ、移植性、性能、…

ARIA

最終回の1話前ですが、立ち読みしてきました。いい話じゃないですか。すくなくともこんなスレを立てられるような話じゃないです。 【ARIA】アリシア結婚、灯里ヤンデレ、キモオタ発狂\(^o^)/オワタhttp://turenet.blog91.fc2.com/blog-entry-2428.html 夢の…

ARIA

気にはなっていたがなかなか購入までにはいたらなかったARIA。いよいよ完結ということでこれを機会に1冊づつ購入してみようかと思う。以下は気になった記事と動画 アリシアさん結婚披露宴会場 http://www.nicovideo.jp/watch/sm2165437 ARIAアリシアさんのあ…

究極の手帳術 (著)福島哲司 明日香出版社

本の内容を3行以内にまとめてみる。 手帳のシステムを見直せ。新陳代謝のあるシステム(TF式手帳術)を手帳に導入しよう。TF式手帳術を活用して、インプットされる情報を整理し、情報をよりよくアウトプットし、自己実現のために役立てよう。 おや、3行もい…