Write Great Code〈Vol.2〉 プレミアムブックス版 低いレベルで考え、高いレベルで書く

  • mixiチェック
  • このエントリーをはてなブックマークに追加

内容紹介

「グレートコード」を探求する、すべてのプログラマーのために。

「グレートコード」を書くための方法を解説する『Write Great Code』シリーズの第2巻です。グレートコードには多くの側面がありますが、本書ではグレートコードの重要な1要素であるパフォーマンスに的を絞り、高レベルのコーディング手法によって、コンパイラが生成するマシンコードにどのような影響が生じるかを考察しています。

本書では効率的なコードの書き方を説明しますが、本書の主題は最適化ではありません。最適化はソフトウェア開発サイクルの終盤近くに行うべき「調整」であり、適切なパフォーマンスを確保する時期は、開発の設計と実装の段階なのです。本書で紹介している概念の多くは最適化フェーズでも適用できますが、テクニックの大半は最初のコーディング時に行う必要があります。
最新の最適化コンパイラによって効率的なマシンコードに変換される適切な高級言語ステートメントを選択する方法を説明しています。これは、高級言語構文のコストを理解することにほかなりません。多くの高級言語では、特定の結果を得るためにさまざまなステートメントの利用が可能ですが、それよってマシンレベルでは効率の差が発生します。その際に、根拠を持ってステートメントを選択できるようにすることが、本書の目標です。

一般には、パフォーマンスを求めるためには、アセンブリ言語を習得する必要があると言われることが多いのですが、これは必ずしも正しいとは言えません。重要なのは、高級言語がステートメントをマシンコードに変換する仕組みを理解し、適切な高級言語のステートメントを選択できるようになることです。これこそが、「低いレベルで考え、高いレベルで書く」ということなのです。

「本書の主なテーマはパフォーマンスです。パフォーマンスはプログラマーにとって永遠のテーマの1つと呼んでもよいでしょう。近年見られない妥協ない姿勢でパフォーマンスを追求した本書は、凡庸なプログラマーにとどまりたくない皆さんが、もう一段高いレベルに到達する上で役に立つに違いありません。」(まつもとゆきひろ 「監訳者のことば」より)

本書は『Write Great Code〈Vol.2〉』(2006年12月日本語版刊行)の復刊です。

続きを読む

商品を選択する

フォーマット 価格 備考
書籍(受注生産) 8,424 受注生産のため、決済完了から約10日後の発送となります。
PDF 5,897 ※2015/03/05:ファイルを更新(しおり情報)しました。購入済みの方はマイページから再ダウンロードをお願いします。
※ご購入後、「マイページ」からファイルをダウンロードしてください。
※ご購入された電子書籍には、購入者情報、および暗号化したコードが埋め込まれております。
※購入者の個人的な利用目的以外での電子書籍の複製を禁じております。無断で複製・掲載および販売を行った場合、法律により罰せられる可能性もございますので、ご遠慮ください。

電子書籍フォーマットについて

  

備考

Randall Hyde
アセンブリ言語の最も推奨される情報源の1つである『The Art of Assembly Language』、および『Write Great Code, Volume 1』の著者。
『The Waite Group's Microsoft Macro Assembler Bible』の著者の1人でもある。『Dr. Dobb's Journal』『Byte』など、プロ向け専門誌にも寄稿している。

目次

第 1 章 低いレベルで考え、高いレベルで書く
 1.1 コンパイラの品質に関する誤解
 1.2 アセンブリ言語の習得が今でも有益である理由
 1.3 アセンブリ言語の習得が必須ではない理由
 1.4 低いレベルで考える
 1.5 高いレベルで書く
 1.6 前提
 1.7 言語に依存しない手法
 1.8 グレートコードを特徴付けるもの
 1.9 本書で使用する環境
 1.1 さらなる知識のために
 
第 2 章 アセンブリ言語習得の勧め
 2.1 アセンブリ言語の習得を妨げるもの
 2.2 本書を役立てる
 2.3 高級アセンブラを役立てる
 2.4 High-Level Assembler(HLA)
 2.5 高いレベルで考え、低いレベルで書く
 2.6 アセンブリ言語プログラミングパラダイム(低いレベルで考える)
 2.7 『The Art of Assembly Language』およびその他の情報源
 
第 3 章 高級言語プログラマーのための80x86アセンブリ言語
 3.1 複数のアセンブリ言語習得の勧め
 3.2 80x86アセンブリ言語の構文
 3.3 80x86の基本アーキテクチャ
 3.4 リテラル定数
 3.5 アセンブリ言語のシンボル定数
 3.6 80x86のアドレス指定モード
 3.7 アセンブリ言語のデータ宣言
 3.8 アセンブリ言語でのオペランドサイズの指定
 3.9 最小限の80x86命令セット
 3.1 さらなる知識のために
 
第 4 章 高級言語プログラマーのためのPowerPCアセンブリ
 4.1 複数のアセンブリ言語の習得
 4.2 アセンブリ構文
 4.3 基本的なPowerPCマシンアーキテクチャ
 4.4 リテラル定数
 4.5 アセンブリ言語の宣言(シンボル)定数
 4.6 PowerPCのアドレス指定モード
 4.7 アセンブリ言語でのデータの宣言
 4.8 アセンブリ言語でのオペランドサイズの指定
 4.1 最小限の命令セット
 4.11 さらなる知識のために
 
第 5 章 コンパイラによる処理とコード生成
 5.1 プログラミング言語で使用される各種ファイルタイプ
 5.2 プログラミング言語のソースファイル
 5.3 コンピュータ言語処理システムの種類
 5.4 変換プロセス
 5.5 コンパイラ出力
 5.6 オブジェクトファイル形式
 5.7 実行可能ファイル形式
 5.8 オブジェクトファイル内のデータとコードのアライメント
 5.9 リンカがコードに与える影響
 5.1 さらなる知識のために
 
第 6 章 コンパイラ出力を分析するためのツール
 6.1 基礎知識
 6.2 アセンブリコードを出力するためのコンパイラオプション
 6.3 オブジェクトコードユーティリティを使用したコンパイラ出力の分析
 6.4 逆アセンブラを使用したコンパイラ出力の分析
 6.5 デバッガを使用したコンパイラ出力の分析
 6.6 2回のコンパイル出力の比較
 6.7 さらなる知識のために
 
第 7 章 定数と高級言語
 7.1 リテラル定数とプログラムの効率
 7.2 リテラル定数とマニフェスト定数
 7.3 定数式
 7.4 マニフェスト定数と読み取り専用メモリオブジェクト
 7.5 列挙型
 7.6 ブール定数
 7.7 浮動小数点定数
 7.8 文字列定数
 7.9 複合データ型定数
 7.1 さらなる知識のために
 
第 8 章 高級言語の変数
 8.1 実行時メモリの構成
 8.2 変数とは
 8.3 変数の記憶領域
 8.4 一般的な基本データ型
 8.5 変数のアドレスと高級言語
 8.6 メモリ内の変数割り当て
 8.7 さらなる知識のために
 
第 9 章 配列データ型
 9.1 配列とは
 9.2 さらなる知識のために
 
第 10 章 文字列データ型
 10.1 文字列の形式
 10.2 静的文字列、疑似動的文字列、動的文字列
 10.3 文字列の参照カウント
 10.4 Delphi/Kylix文字列
 10.5 高級言語での文字列の使用
 10.6 文字列内の文字データ
 10.7 さらなる知識のために
 
第 11 章 ポインタデータ型
 11.1 ポインタの定義(ポインタの神話的要素の除去)
 11.2 高級言語でのポインタの実装
 11.3 ポインタと動的メモリ割り当て
 11.4 ポインタの操作とポインタ演算
 11.5 シンプルなメモリアロケータの例
 11.6 ガーベジコレクション
 11.7 オペレーティングシステムとメモリ割り当て
 11.8 ヒープメモリのオーバーヘッド
 11.9 ポインタにおける一般的な問題
 11.1 さらなる知識のために
 
第 12 章 レコード、共用体、クラスの各データ型
 12.1 レコード
 12.2 判別共用体
 12.3 各種言語における共用体の宣言
 12.4 共用体のメモリ記憶域
 12.5 共用体のその他の用途
 12.6 バリアント型
 12.7 名前空間
 12.8 クラスとオブジェクト
 12.9 さらなる知識のために
 
第 13 章 算術式と論理式
 13.1 算術式とコンピュータアーキテクチャの関係
 13.2 算術ステートメントの最適化
 13.3 算術式の副作用
 13.4 副作用を取り入れる:シーケンスポイント
 13.5 副作用によって生じる問題を回避する
 13.6 特定の評価順序を強制的に設定する
 13.7 短絡評価
 13.8 算術演算の相対的なコスト
 13.9 さらなる知識のために
 
第 14 章 制御構造とプログラム内での条件判断
 14.1 制御構造は演算より低速
 14.2 低レベルな制御構造の概要
 14.3 gotoステートメント
 14.4 break、continue、next、returnなど、機能を限定したgotoステートメント
 14.5 ifステートメント
 14.6 switch/caseステートメント
 14.7 さらなる知識のために
 
第 15 章 反復制御構造
 15.1 whileループ
 15.2 repeat..until(do..until/do..while)ループ
 15.3 forever..endforループ
 15.4 確定ループ(forループ)
 15.5 さらなる知識のために
 
第 16 章 関数とプロシージャ
 16.1 単純な関数およびプロシージャの呼び出し
 16.2 リーフ関数とリーフプロシージャ
 16.3 マクロとインライン関数
 16.4 関数やプロシージャへの引数渡し
 16.5 アクティブ化レコードとスタック
 16.6 引数渡しの仕組み
 16.7 関数の戻り値
 16.8 さらなる知識のために
 
 Engineering Software
 付録A

この商品を買った人はこんな商品も買っています


最近チェックした商品

Tポイント利用手続き

         Tポイント利用手続きに関する同意事項

                                株式会社マイナビ出版

株式会社マイナビ出版が提供するマイナビBOOKSにおいてTポイントご利用続きをされる方は、以下に掲げるお客様の個人情報の取り扱いについてご確認の上、ご同意下さい。

マイナビBOOKSにおいてTポイントサービスをご利用いただいた場合に、当社から、次に掲げる<提供情報>を、<提供目的>のためにカルチュア・コンビニエンス・クラブ株式会社(以下「CCC」といいます)へ提供します。

  <提供目的>:CCCの定める個人情報保護方針及びマイナビBOOKSにおけるT会員規約第4条に定める利用目的で利用するためTポイントサービスを利用するため
  <提供情報>:
   1)お客様が【マイナビBOOKS】の正当な利用者であるという情報
   2)ポイント数・利用日
   3)その他、Tポイントサービスを利用するにあたり必要な情報

  <提供方法>: 電磁的記録媒体の送付またはデータ通信による。ただし、提供するデータについては暗号化を施すものとする。

なお、CCCに提供された、以下の情報の利用については、CCCの定める個人情報保護方針及びT会員規約 に沿って取り扱われます。
上記の情報提供の停止をご希望される場合には、【マイナビBOOKS】におけるTポイント利用手続きの解除を実施していただく必要があります。
Tポイント利用手続きの解除、およびTポイントサービスにおける個人情報に関するお問い合わせ先は、以下のとおりです。
お客様お問い合わせ先:Tサイト(http://qa.tsite.jp/faq/show/22612)

 なお、Tポイント利用手続きの解除が完了しますと、マイナビBOOKSにおけるTポイントサービスをご利用いただけなくなりますので、予めご了承ください。

Tポイント利用手続きを行いますか?