fc2ブログ

書籍をつつく77-プログラミング言語 Ruby。原典になりうる本。

そういえば、Ruby関係の本を余り紹介していなかったピヨッ♪ということで・・・
プログラミング言語 Ruby
これお勧め♪目次を見るとその丁寧さが分かると思うピヨ♪


【目次】
著者まえがき
はじめに

1章	イントロダクション
    1.1 Rubyひとめぐり
        1.1.1 Rubyはオブジェクト指向言語
        1.1.2 ブロックとイテレータ
        1.1.3 Rubyの式と演算子
        1.1.4 メソッド
        1.1.5 代入
        1.1.6 記号のサフィックス、プレフィックス
        1.1.7 正規表現と範囲
        1.1.8 クラスとモジュール
        1.1.9 意外感の残るRubyの機能
    1.2 Rubyを使ってみよう
        1.2.1 Rubyインタープリタ
        1.2.2 出力の表示
        1.2.3 対話的Rubyのirb
        1.2.4 Rubyのドキュメントを表示するri
        1.2.5 Rubyパッケージ管理のgem
        1.2.6 Rubyのその他のチュートリアルについて
        1.2.7 Rubyリソース
    1.3 本書について
        1.3.1 本書の読み方
    1.4 Rubyによる数独ソルバ

2章	Rubyプログラムの構造と実行
    2.1 字句構造
        2.1.1 コメント
        2.1.2 リテラル
        2.1.3 記号類
        2.1.4 識別子
        2.1.5 キーワード
        2.1.6 空白
    2.2 構文構造
        2.2.1 Rubyのブロック構造
    2.3 ファイル構造
    2.4 プログラムのエンコーディング
        2.4.1 プログラムのエンコーディングの指定
        2.4.2 ソースエンコーディングとデフォルト外部/内部エンコーディング
    2.5 プログラムの実行

3章	データ型とオブジェクト
    3.1 数値
        3.1.1 整数リテラル
        3.1.2 浮動小数点数リテラル
        3.1.3 Rubyの算術演算
        3.1.4 2進浮動小数点数と丸め誤差
    3.2 文字列
        3.2.1 文字列リテラル
        3.2.2 文字リテラル
        3.2.3 文字列演算子
        3.2.4 文字や部分文字列へのアクセス
        3.2.5 文字列の反復処理
        3.2.6 文字列のエンコーディングとマルチバイト文字
    3.3 配列
    3.4 ハッシュ
        3.4.1 ハッシュリテラル
        3.4.2 ハッシュ値、等値性、ミュータブルなキー
    3.5 範囲
        3.5.1 範囲のメンバかどうかのテスト
    3.6 シンボル
    3.7 true、false、nil
    3.8 オブジェクト
        3.8.1 オブジェクト参照
        3.8.2 オブジェクトの寿命
        3.8.3 オブジェクト識別子
        3.8.4 オブジェクトのクラスと型
        3.8.5 オブジェクトの等値性
        3.8.6 オブジェクトの順序
        3.8.7 オブジェクトの変換
        3.8.8 オブジェクトのコピー
        3.8.9 オブジェクトの永続化
        3.8.10 オブジェクトのフリーズ
        3.8.11 オブジェクトの汚染状態

4章	式と演算子
    4.1 リテラルとキーワードリテラル
    4.2 変数参照
        4.2.1 未初期化変数
    4.3 定数参照
    4.4 メソッド呼び出し
    4.5 代入
        4.5.1 変数への代入
        4.5.2 定数への代入
        4.5.3 属性と配列要素への代入
        4.5.4 自己代入
        4.5.5 多重代入
    4.6 演算子
        4.6.1 単項+、-
        4.6.2 指数: **
        4.6.3 算術演算子: +、-、*、/、%
        4.6.4 シフトと追加: <<、>>
        4.6.5 補数、ビット単位AND、ビット単位OR、ビット単位XOR: ~、&、|、^
        4.6.6 比較: <、<=、>、>=、<=>
        4.6.7 等値: ==、!=、=~、!~、===
        4.6.8 論理演算子: &&、||、!、and、or、not
        4.6.9 範囲とフリップフロップ: ..、...
        4.6.10 条件: ?:
        4.6.11 代入演算子
        4.6.12 defined?演算子
        4.6.13 文修飾子
        4.6.14 演算子ではない記号

5章	文と制御構造
    5.1 条件分岐
        5.1.1 if
        5.1.2 修飾子としてのif
        5.1.3 unless
        5.1.4 case
        5.1.5 ?:演算子
    5.2 繰り返し
        5.2.1 whileとuntil
        5.2.2 修飾子としてのwhile、until
        5.2.3 for/inループ
    5.3 イテレータとEnumerableオブジェクト
        5.3.1 数値イテレータ
        5.3.2 Enumerableオブジェクト
        5.3.3 カスタムイテレータの書き方
        5.3.4 Enumerator
        5.3.5 外部イテレータ
        5.3.6 反復処理と同時変更
    5.4 ブロック
        5.4.1 ブロックの構文
        5.4.2 ブロックの値
        5.4.3 ブロックと変数のスコープ
        5.4.4 ブロックへの引数渡し
    5.5 制御フローの変更
        5.5.1 return
        5.5.2 break
        5.5.3 next
        5.5.4 redo
        5.5.5 retry
        5.5.6 throwとcatch
    5.6 例外と例外処理
        5.6.1 例外クラスと例外オブジェクト
        5.6.2 raiseによる例外の生成
        5.6.3 rescueによる例外処理
        5.6.4 else節
        5.6.5 ensure節
        5.6.6 メソッド、クラス、モジュール定義のrescue
        5.6.7 文修飾子としてのrescue
    5.7 BEGINとEND
    5.8 スレッド、ファイバ、継続
        5.8.1 並列実行のためのスレッド
        5.8.2 コルーチンのためのファイバ
        5.8.3 継続

6章	メソッド、proc、lambda、クロージャ
    6.1 単純なメソッドの定義
        6.1.1 メソッドの戻り値
        6.1.2 メソッドと例外処理
        6.1.3 オブジェクトからのメソッド呼び出し
        6.1.4 特異メソッドの定義方法
        6.1.5 メソッド定義の解除
    6.2 メソッド名
        6.2.1 演算子メソッド
        6.2.2 メソッドの別名
    6.3 メソッドとかっこ
        6.3.1 省略可能なかっこ
        6.3.2 必須のかっこ
    6.4 メソッド引数
        6.4.1 引数のデフォルト値
        6.4.2 可変長引数リストと配列
        6.4.3 実引数から仮引数へのマッピング
        6.4.4 名前付き引数のハッシュ
        6.4.5 ブロック引数
    6.5 Proc
        6.5.1 Procの作り方
        6.5.2 Procの実行
        6.5.3 Procの項数
        6.5.4 Procの等値性
        6.5.5 procとlambdaの違い
    6.6 クロージャ
        6.6.1 クロージャと共有変数
        6.6.2 クロージャと束縛
    6.7 Methodオブジェクト
        6.7.1 UnboundMethodオブジェクト
    6.8 関数プログラミング
        6.8.1 Enumerableへの関数の追加
        6.8.2 関数の合成
        6.8.3 関数の部分適用
        6.8.4 関数のメモ化
        6.8.5 Symbol、Method、Proc

7章	クラスとモジュール
    7.1 単純なクラスの定義方法
        7.1.1 クラスの作成
        7.1.2 Pointのインスタンス生成
        7.1.3 Pointの初期化
        7.1.4 to_sメソッドの定義
        7.1.5 アクセッサと属性
        7.1.6 演算子の定義
        7.1.7 []による配列、ハッシュアクセス
        7.1.8 座標の数え上げ
        7.1.9 Pointの等値性
        7.1.10 Pointの順序
        7.1.11 ミュータブルなPoint
        7.1.12 手っ取り早いミューテータクラス
        7.1.13 クラスメソッド
        7.1.14 定数
        7.1.15 クラス変数
        7.1.16 クラスインスタンス変数
    7.2 メソッドの可視性: public、protected、private
    7.3 サブクラス化と継承
        7.3.1 メソッドの継承
        7.3.2 メソッドのオーバーライド
        7.3.3 チェイニングによる動作の補完
        7.3.4 クラスメソッドの継承
        7.3.5 継承とインスタンス変数
        7.3.6 継承とクラス変数
        7.3.7 定数の継承
    7.4 オブジェクトの作成と初期化
        7.4.1 new、allocate、initialize
        7.4.2 ファクトリメソッド
        7.4.3 dup、clone、initialize_copy
        7.4.4 marshal_dumpとmarshal_load
        7.4.5 シングルトンパターン
    7.5 モジュール
        7.5.1 名前空間としてのモジュール
        7.5.2 ミックスインとしてのモジュール
        7.5.3 インクルードできる名前空間モジュール
    7.6 モジュールのload、require
        7.6.1 ロードパス
        7.6.2 ロードされたコードの実行
        7.6.3 モジュールの自動ロード
    7.7 特異メソッドと特異クラス
    7.8 メソッドの探索
        7.8.1 クラスメソッドの探索
    7.9 定数の探索

8章	リフレクションとメタプログラミング
    8.1 型、クラス、モジュール
        8.1.1 祖先とモジュール
        8.1.2 クラス、モジュールの定義
    8.2 文字列とブロックの評価
        8.2.1 Bindingとeval
        8.2.2 instance_evalとclass_eval
        8.2.3 instance_execとclass_exec
    8.3 変数と定数
        8.3.1 変数の取得、設定、テスト
    8.4 メソッド
        8.4.1 メソッドのリストアップと有無のテスト
        8.4.2 Methodオブジェクトの取得
        8.4.3 メソッドの呼び出し
        8.4.4 メソッドの定義、定義解除、別名の定義
        8.4.5 未定義メソッドの処理
        8.4.6 メソッドの可視性の設定
    8.5 フック
    8.6 トレーシング
    8.7 ObjectSpaceとGC
    8.8 カスタム制御構造
        8.8.1 実行の先延ばしと反復: afterとevery
        8.8.2 同期ブロックによるスレッドセーフの実現
    8.9 method_missingとconst_missingの活用
        8.9.1 const_missingによるUnicodeコードポイント定数の作成
        8.9.2 method_missingによるメソッド呼び出しのトレーシング
        8.9.3 委譲によるオブジェクトの同期
    8.10 メソッドの動的な作成
        8.10.1 class_evalによるメソッド定義
        8.10.2 define_methodによるメソッド定義
    8.11 エリアスチェイン
        8.11.1 ファイルのロード、クラスの定義のトレーシング
        8.11.2 スレッドセーフを実現するためのエリアスチェイン
        8.11.3 トレーシングのためのメソッドチェイン
    8.12 ドメイン固有言語(DSL)
        8.12.1 method_missingによる単純なXML出力
        8.12.2 メソッド生成による有効なXMLの出力

9章	Rubyプラットフォーム
    9.1 文字列
        9.1.1 文字列の整形
        9.1.2 バイナリ文字列のパック、アンパック
        9.1.3 文字列とエンコーディング
    9.2 正規表現
        9.2.2 正規表現ファクトリメソッド
        9.2.3 正規表現の構文
        9.2.4 正規表現によるパターンマッチ
    9.3 数値と数学
        9.3.1 Numericのメソッド
        9.3.2 Mathモジュール
        9.3.3 10進演算
        9.3.4 複素数
        9.3.5 有理数
        9.3.6 ベクトルと行列
        9.3.7 乱数
    9.4 日付と時刻
    9.5 コレクション
        9.5.1 Enumerableオブジェクト
        9.5.2 配列
        9.5.3 ハッシュ
        9.5.4 集合
    9.6 ファイルとディレクトリ
        9.6.1 ファイルとディレクトリ名
        9.6.2 ディレクトリリスト作成
        9.6.3 ファイルのテスト
        9.6.4 ファイルとディレクトリの作成、削除、名称変更
    9.7 入出力
        9.7.1 ストリームの開きかた
        9.7.2 ストリームとエンコーディング
        9.7.3 ストリームからの読み出し
        9.7.4 ストリームへの書き込み
        9.7.5 ランダムアクセスメソッド
        9.7.6 ストリームの閉じ方、フラッシュ、テスト
    9.8 ネットワーキング
        9.8.1 非常に簡単なクライアント
        9.8.2 非常に簡単なサーバ
        9.8.3 データグラム
        9.8.4 より複雑なクライアント
        9.8.5 多重化サーバ
        9.8.6 Webページのフェッチ
    9.9 スレッドと並列処理
        9.9.1 スレッドのライフサイクル
        9.9.2 スレッドと変数
        9.9.3 スレッドのスケジューリング
        9.9.4 スレッドの状態
        9.9.5 スレッドとスレッドグループのリストの作成
        9.9.6 スレッドのサンプル
        9.9.7 スレッドの排他処理とデッドロック
        9.9.8 QueueとSizedQueue
        9.9.9 条件変数とQueue

10章	Ruby環境
    10.1 Rubyインタープリタの起動オプション
        10.1.1 一般的なオプション
        10.1.2 警告と情報のオプション
        10.1.3 エンコーディングオプション
        10.1.4 文字列処理オプション
        10.1.5 その他のオプション
    10.2 トップレベル環境
        10.2.1 定義済みモジュールとクラス
        10.2.2 トップレベル定数
        10.2.3 グローバル変数
        10.2.4 定義済みグローバル関数
        10.2.5 ユーザー定義グローバル関数
    10.3 実用的な抽出と報告のためのショートカット
        10.3.1 入力関数
        10.3.2 使うべきでない抽出関数
        10.3.3 レポート関数
        10.3.4 1行スクリプトのためのショートカット
    10.4 OS呼び出し
        10.4.1 OSコマンドの実行
        10.4.2 子プロセスの作成
        10.4.3 シグナルのトラップ
        10.4.4 プログラムの終了
    10.5 セキュリティ
        10.5.1 汚染状態のデータ
        10.5.2 制限実行とセーフレベル

索引


この本はRuby使いには絶対お勧めなんだ。何故かと言うと、まつもと ゆきひろ氏がRuby1.9について書いてあるからなんだ。というのも、プログラミング言語を習得する上で大事なのは、その言語の設計思想を学ぶ事だからね。どんなソフトウェアでもそうなんだけど、作者は目的をもって設計しているピヨ。その設計思想を理解すると言う事は、そのソフトウェアを根源から理解すると言う事に繋がるんだ。だから、コンパイラ屋さんにも、プログラマにも皆にお勧めするピヨ♪特に初心者は作者本人の本を読む事をお勧めするピヨ♪設計思想を感じる訓練をする事は非常に大事だからね。
スポンサーサイト



テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

非公開コメント

プロフィール

インドリ

Author:インドリ
みなさん、はじめまして、
コンニチハ。

ボクは、無限の夢(infinity dream)を持つネタ好きな虹色の鳥インドリ(in dre)です。
色々な情報処理技術を啄ばむから楽しみにしてね。

http://twitter.com/indori
は別人による嫌がらせ行為です。
私とは関係ないので注意して下さい。
次はなりすましブログなどをするかもしれませんが、ここ以外でブログをするつもりがないので、ここ以外にインドリのブログがあったとしても無視してください。


何度言っても分からない人がいるので、ここにコメント欄へ書き込むときの注意事項を書きます。


一、社会人としてのマナーをわきまえましょう。
一、妄想に基づく書き込みを止めてください。
一、暴言の類は書かないで下さい。
一、某誹謗中傷サイトの書き込みは彼らの妄想に基づく書き込みですから無視して、ここへ書き込まないで下さい。
一、コメント書く前に他のコメントよく読んでから行って下さい。
一、言いがかかり等の行為を禁止します。
一、その他常識的に考えて迷惑なコメントはしないで下さい。


以上のルールを守れない人のコメントは削除します。



利用上の注意
ここに紹介してある文章およびプログラムコードは正確であるように心がけておりますが、内容を保証するものではありません。当サイトの内容によって生じた損害については、一切の責任を負いませんので御了承ください。


執筆したCodeZineの記事


【VB.NETで仮想CPUを作ろう】

  1. VB.NETで仮想CPUを作ろう
  2. レジスタの実装
  3. 仮想CPUのGUI化
  4. テストドライバの改良
  5. CPUの基礎動作の実装
  6. MOV命令の実装
  7. ADD命令実装
  8. SUB命令実装
  9. INC命令&DEC命令の実装と命令長
  10. MLU命令の実装とModR/Mについて
  11. DIV命令の実装とイベント設計について
  12. 機械語駆動式 関数電卓を作ろう!
  13. 機械語駆動式 関数電卓を作ろう! 解答編(前半)
  14. 機械語駆動式 関数電卓を作ろう! 解答編(後半)


【仮想ネットワーク実装でTCP/IPを学ぼう】
  1. TCP/IPの基礎と勘所
  2. ネットワークアクセス層の勘所
  3. インターネット層の勘所
  4. トランスポート層の勘所
  5. アプリケーション層の勘所
  6. セキュリティの基礎と仮想ネットワークの仕様
  7. GDI+と独自プロトコルの定義



【並列化】
インテル Parallel Studioを使って並列化プログラミングを試してみた
並列プログラミングの効率的なデバッグを実現する「Parallel Inspector」


【TBBシリーズ】
  1. インテル スレッディング・ビルディング・ブロックの概要
  2. インテルTBBから学ぶループの並列化
  3. スレッドセーフとインテルTBBのコンテナ
  4. インテルTBBのスレッドクラス


【OpenMPシリーズ】
  1. OpenMPの基礎構文
  2. OpenMPの実行時ライブラリと並列ループ
  3. OpenMPのメモリモデルとfork- joinモデル

最近の記事
最近のコメント
月別アーカイブ
カテゴリ
Ada (9)
COBOL (5)
C (9)
C++ (11)
C# (370)
D (25)
Java (8)
Perl (1)
Ruby (14)
PHP (2)
Boo (2)
Cobra (2)
LISP (6)
F# (33)
HTML (0)
XHTML (0)
CSS (0)
XML (0)
XSLT (0)
Scala (4)
WPF (0)
WF (2)
WCF (0)
LINQ (4)
MONO (5)
Linux (0)
MySQL (0)
ブログ内検索
リンク
最近のトラックバック
RSSフィード
ブロとも申請フォーム

この人とブロともになる

QRコード
FC2カウンター