プレースホルダー画像

サンプルサンプル

サンプルサンプルサンプルサンプル

サンプル著者名
5,720円
hontoで電子版を見る

読み込み中…

ストレンジコード

ストレンジコード

通常価格 4,730 円(税込)
通常価格 セール価格 4,730 円(税込)
SALE 売り切れ
ネットストア在庫 詳細
    読み込み中...
My店舗在庫
    My店舗登録で在庫確認と店舗お受け取りのご利用が可能になります。(要ログイン)
  • 在庫表示のサンプル
商品説明
本書は、「難解プログラミング言語」(エソラング)と呼ばれる言語について、さまざまな角度から解説したものです。「難解プログラミング言語」とは何でしょうか。本書では、「プログラミング言語とはどのようなものになりうるのか、どのように創造的でエレガントな方法で思考やプロセスを表現することができる、一風変わった言語」と定義しています。つまり、役に立たない言語ということでしょうか。そうではありません。多くの難解プログラミング言語は趣味的なものであり、中には冗談のようなものもありますが、実用的に使われている言語もあるのです。そういった「実用的な」言語から、「冗談のような」言語まで、本書は区別なく取り上げます。
本書は4つのパートに分かれています。パート1は、背景資料として、コンピュータサイエンスの課程で扱われるようなプログラミング言語のトピックについて取り上げます。プログラミング言語の歴史を古生物学になぞらえて説明しています。コンピュータの黎明期に現れた言語は、現代から見ると難解プログラミング言語に思えても、当時は必然性があったのです。さしずめ、カンブリア爆発に相当するでしょう。そういった歴史的背景を押さえておきます。そして、もう1つ、難解プログラミング言語に関して重要な点である「チューリング完全」についても学びます。
パート2は、道具としてのプログラミング言語と、パート3とパート4で見ていく難解プログラミング言語との架け橋となる言語を取り上げます。実用的でありながら、本流から外れている言語です。筆者は、これらを「非定型」言語と呼んでいます。
そして、パート3では、「ABC」「FRACTRAN」「Piet」「Brainfuck」「Befunge」という5つの難解プログラミング言語を解説しています。それぞれ異なる方向に難解ですが、きっと、どの言語でもコードを書いてみたくなるはずです。
パート4では、パート4では、本書のためのオリジナルの難解プログラミング言語「Filska」と「Firefly」について、言語設計、実装、拡張方法まで、詳細に説明しています。難解言語に限らない、「新しく言語を作る全て」が詰まっています。さらに、付録では、Fireflyを使った遺伝的プログラミングについても説明しています。言語を拡張するという好例です。
本書では、いくつかの難解プログラミング言語の実装にPythonを利用するので、Pythonに関する知識があれば役立ちます。なくても問題はありません。本書で最も重要なのは「好奇心」です。あなたがプログラミングが好きで、いろいろなことに「なぜ?」と疑問に思う気持ちを持っているなら、必ず本書を楽しめるはずです。ようこそ、この奇妙で素晴らしき、変態言語の世界へ。
目次
序文
謝辞
日本語版のためのまえがき
監訳者まえがき
訳者まえがき

イントロダクション

Part 1 プログラミング言語とは
Chapter 1 歴代のプログラミング言語たち
 1.1 プログラミング言語古生物学
 1.2 最初のプログラミング言語
  1.2.1 コンピュータがなかった時代のプログラミング
  1.2.1 最初の現代的プログラミング言語
 1.3 ALGOL
 1.4 APL
 1.5 BASIC
 1.6 PL/I
 1.7 Logo
 1.8 Simula
 1.9 Pascal
 1.10 Prolog
  1.10.1 家族関係のモデリング
  1.10.2 フィボナッチ数列の実装
 1.11 Smalltalk
  1.11.1 Smalltalkの基本的な機能
  1.11.2 レースを開催してみよう
 1.12 Standard ML
 1.13 本章のまとめ
Chapter 2 プログラミング言語の本質
 2.1 プログラミング言語の定義
 2.2 構文とセマンティクス
 2.3 プログラミング言語の実装
  2.3.1 トークン、字句解析器、構文解析器
  2.3.2 インタプリタ
  2.3.3 コンパイラ
  2.3.4 バイトコードコンパイラ
 2.4 データ型
  2.4.1 プリミティブなデータ型
  2.4.2 レコード
  2.4.3 Pascalのレコード
  2.4.4 C言語の構造体
 2.5 データ構造
  2.5.1 配列
  2.5.2 連結リスト(リンクリスト)
  2.5.3 木構造
  2.5.4 ハッシュテーブル
 2.6 変数とスコープ
  2.6.1 レキシカルスコープ
  2.6.2 ダイナミックスコープ
  2.6.3 Python
  2.6.4 C言語
  2.6.5 SNOBOL
  2.6.6 Perl
 2.7 プログラムのフロー制御
  2.7.1 非構造化言語
  2.7.2 構造化言語
 2.8 プログラミングパラダイム
  2.8.1 命令型
  2.8.2 オブジェクト指向
  2.8.3 宣言型
  2.8.4 配列の処理
 2.9 まとめ
Chapter 3 チューリングマシンおよびチューリング完全
 3.1 停止性問題
 3.2 チューリングマシン
 3.3 万能チューリングマシン
 3.4 チューリング完全性
 3.5 チューリングマシンを作ろう
  3.5.1 シミュレータ
  3.5.2 サンプル紹介
 3.6 まとめ

Part 2 非定型プログラミング言語
Chapter 4 Forth
 4.1 インストール
 4.2 起源と哲学
 4.3 言語
  4.3.1 スタックを理解する
  4.3.2 スタックの利用
  4.3.3 ワードとループ
  4.3.4 真とは何か
  4.3.5 その他の制御構造
  4.3.6 Forthのメモリの使い方
  4.3.7 入力と出力
 4.4 平方根の再検討
 4.5 考察
 4.6 まとめ
Chapter 5 SNOBOL
 5.1 インストール
 5.2 起源と哲学
 5.3 言語
  5.3.1 SNOBOLを実行する
  5.3.2 変数とデータ型
  5.3.3 配列とテーブル
  5.3.4 パターンの嵐
  5.3.5 関数
  5.3.6 入力と出力
 5.4 SNOBOLによる機械学習
  5.4.1 機械学習の基礎
  5.4.2 分類器の実装
  5.4.3 分類器の実行
 5.5 議論
 5.6 まとめ
Chapter 6 CLIPS
 6.1 インストール
 6.2 起源と哲学
 6.3 言語
  6.3.1 CLIPSを用いた作業
  6.3.2 「Hello, world!」の実装
  6.3.3 事実と規則
 6.4 CLIPSイン・アクション
  6.4.1 簡単な電卓
  6.4.2 家族再考
  6.4.3 工場にて
  6.4.4 アイリスの分類用エキスパートシステム
 6.5 議論
 6.6 まとめ

Part 3 難解プログラミング言語
Chapter 7 ABCのABC
 7.1 ABC
  7.1.1 言語
  7.1.2 ABCの実装
  7.1.3 ABCをテストする
 7.2 ABC2
  7.2.1 機能の拡張
  7.2.2 ABC2の実装
 7.3 ABC2イン・アクション
  7.3.1 Hello World!
  7.3.2 パイの一切れ
  7.3.3 電気機械式アリスモメーター
 7.4 議論
 7.5 まとめ
Chapter 8 FRACTRAN
 8.1 FRACTRANの仕様
 8.2 2つの実装の物語
  8.2.1 Schemeによる実装
  8.2.2 Pythonによる実装
 8.3 FRACTRANを使う
 8.4 FRACTRANを理解する
 8.5 その他のFRACTRANのサンプル
  8.5.1 引き算
  8.5.2 2つの整数の最大値
  8.5.3 レジスタの複製
  8.5.4 乗算
  8.5.5 コンウェイのPRIMEGAME
  8.5.6 コラッツ予想
  8.5.7 FRACTRANからの挨拶
 8.6 議論
  8.6.1 FRACTRANはチューリング完全なのか
  8.6.2 FRACTRANとコラッツ予想
  8.6.3 FRACTRANについての最終的な考察
 8.7 まとめ
Chapter 9 PIET
 9.1 インストール
 9.2 Pietを理解する
  9.2.1 Pietの色彩
  9.2.2 数字の表現
  9.2.3 プログラムの表現
  9.2.4 Pietのコマンド
  9.2.5 プログラムの流れ
 9.3 Pietイン・アクション
  9.3.1 「2 + 2 = 4」の証明
  9.3.2 Hiと挨拶する
  9.3.3 カウントダウン
  9.3.4 疑似乱数生成器
 9.4 ピエト・モンドリアンへのオマージュ
 9.5 Pietの世界
  9.5.1 Pietについて
  9.5.2 コード
  9.5.3 実装およびツール
 9.6 考察
 9.7 まとめ
Chapter 10 Brainfuck
 10.1 BFとは何か?
 10.2 2つの実装
  10.2.1 オリジナル版インタプリタ
  10.2.2 SNOBOLとBFの出会い
 10.3 BFイン・アクション
  10.3.1 初歩の一歩
  10.3.2 ビットをかじる
  10.3.3 乗法的乗数
 10.4 BFマルチバース
  10.4.1 サンプルコード
  10.4.2 チュートリアル
  10.4.3 実装
  10.4.4 インスピレーション
  10.4.5 BFの学術的側面
 10.5 考察
 10.6 まとめ
Chapter 11 Befunge
 11.1 Befunge-93ワールドツアー
  11.1.1 Befunge-93のビルド
  11.1.2 テキストの出力
  11.1.3 BEditの使い方
  11.1.4 BefungeにHelloと挨拶させよう
 11.2 Befungeの実践
  11.2.1 流れ(フロー)に身を任せる
  11.2.2 橋を架ける
  11.2.3 サイコロを楽しむ
  11.2.4 放浪の旅
  11.2.5 オンザフライでプレイフィールドを更新する
 11.3 考察
 11.4 まとめ

Part 4 自家製難解プログラミング言語
Chapter 12 Filska
 12.1 哲学とデザイン
  12.1.1 プログラムの構造と構文
  12.1.2 フロー制御
  12.1.3 メモリ
  12.1.4 算術演算
  12.1.5 比較
  12.1.6 数学の関数
  12.1.7 入力と出力
 12.2 Filskaの実装
  12.2.1 全体構造と処理
  12.2.2 解析
  12.2.3 実行ループ
  12.2.4 引数を持たない命令
  12.2.5 引数付きの命令
  12.2.6 フロー制御命令
 12.3 まとめ
Chapter 13 Filskaを使う
 13.1 こんにちは、世界!
  13.1.2 こんにちは、数学!
  13.1.2 こんにちは、多項式
  13.1.3 こんにちは、多項式!の実装
 13.2 フィボナッチとは誰か
 13.3 乱数
  13.3.1 MINSTDの実装
  13.3.2 MINSTDの評価を行う
 13.4 シンプルなフラクタル
 13.5 問題の根本に迫る
 13.6 直線への線形最小二乗フィット
 13.7 考察
 13.8 まとめ
Chapter 14 Firefly
 14.1 哲学と設計
  14.1.1 移動命令
  14.1.2 表示命令
  14.1.3 音楽命令
  14.1.4 残りの命令
 14.2 実装
  14.2.1 インタプリタの構造とメインループ
  14.2.2 移動命令
  14.2.3 表示命令
  14.2.4 音楽命令
 14.3 micro:bitの設定
  14.3.1 micro:bitハードウェアの概要
  14.3.2 外部スピーカーの使用
 14.4 まとめ
Chapter 15 Fireflyを使う
 15.1 プロセス
  15.1.1 Fireflyのコードを書く
  15.1.2 コンソールインタプリタの利用
  15.1.3 バンドルの作成
 15.2 フライ・タイム
 15.3 スペース・トレック
 15.4 光輝くベートーヴェン
 15.5 ダンス・ダンス
  15.5.1 ポーズ
  15.5.2 ダンス
  15.5.3 音楽
 15.6 ティー・タイム
 15.7 考察
 15.8 まとめ
Chapter 16 さらに先へ
 16.1 紹介しきれなかった言語たち
  16.1.1 Malbolge
  16.1.2 INTERCAL
  16.1.3 Whitespace
  16.1.4 Shakespeare
  16.1.5 Whirl
  16.1.6 Taxi
  16.1.7 Dathanna
 16.2 プログラミング言語リソース
  16.2.1 プログラミング言語
  16.2.2 データ構造
  16.2.3 コンパイラとインタプリタ
 16.3 エピローグ

Appendix A Fireflyによる遺伝的プログラミング
 A.1 遺伝的プログラミング入門
 A.2 遺伝的プログラミングの仕組み
 A.3 LED表示の定義
 A.4 簡易版Fireflyインタプリタ
 A.5 遺伝的アルゴリズム
 A.6 全てを1つにまとめる
 A.7 Fireflyのプログラムの発展
  A.7.1 警告サイン
  A.7.2 レーダースイープ
  A.7.3 跳ねるボール
 A.8 考察
  A.8.1 母集団の効果
  A.8.2 最終プログラムの多様性
  A.8.3 遺伝的プログラミングは最短のプログラムを見つけられるのか
 A.9 最終的な感想
詳細を表示する

カスタマーレビュー

honto本の通販ストアのレビュー(0件)

並び順:
1/1ページ

最近チェックした商品