| フォーマット | 書籍 |
| 発売日 | 2024年02月16日 |
| 国内/輸入 | 国内 |
| 出版社 | 秀和システム |
| 構成数 | 1 |
| パッケージ仕様 | - |
| SKU | 9784798069746 |
| ページ数 | 604 |
| 判型 | B5変形 |
構成数 : 1枚
序文
謝辞
日本語版のためのまえがき
監訳者まえがき
訳者まえがき
イントロダクション
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...
本書は、「難解プログラミング言語」(エソラング)と呼ばれる言語について、さまざまな角度から解説したものです。「難解プログラミング言語」とは何でしょうか。本書では、「プログラミング言語とはどのようなものになりうるのか、どのように創造的でエレガントな方法で思考やプロセスを表現することができる、一風変わった言語」と定義しています。つまり、役に立たない言語ということでしょうか。そうではありません。多くの難解プログラミング言語は趣味的なものであり、中には冗談のようなものもありますが、実用的に使われている言語もあるのです。そういった「実用的な」言語から、「冗談のような」言語まで、本書は区別なく取り上げます。
本書は4つのパートに分かれています。パート1は、背景資料として、コンピュータサイエンスの課程で扱われるようなプログラミング言語のトピックについて取り上げます。プログラミング言語の歴史を古生物学になぞらえて説明しています。コンピュータの黎明期に現れた言語は、現代から見ると難解プログラミング言語に思えても、当時は必然性があったのです。さしずめ、カンブリア爆発に相当するでしょう。そういった歴史的背景を押さえておきます。そして、もう1つ、難解プログラミング言語に関して重要な点である「チューリング完全」についても学びます。
パート2は、道具としてのプログラミング言語と、パート3とパート4で見ていく難解プログラミング言語との架け橋となる言語を取り上げます。実用的でありながら、本流から外れている言語です。筆者は、これらを「非定型」言語と呼んでいます。
そして、パート3では、「ABC」「FRACTRAN」「Piet」「Brainfuck」「Befunge」という5つの難解プログラミング言語を解説しています。それぞれ異なる方向に難解ですが、きっと、どの言語でもコードを書いてみたくなるはずです。
パート4では、パート4では、本書のためのオリジナルの難解プログラミング言語「Filska」と「Firefly」について、言語設計、実装、拡張方法まで、詳細に説明しています。難解言語に限らない、「新しく言語を作る全て」が詰まっています。さらに、付録では、Fireflyを使った遺伝的プログラミングについても説明しています。言語を拡張するという好例です。
本書では、いくつかの難解プログラミング言語の実装にPythonを利用するので、Pythonに関する知識があれば役立ちます。なくても問題はありません。本書で最も重要なのは「好奇心」です。あなたがプログラミングが好きで、いろいろなことに「なぜ?」と疑問に思う気持ちを持っているなら、必ず本書を楽しめるはずです。ようこそ、この奇妙で素晴らしき、変態言語の世界へ。

※ショッピングカートおよび注文内容の確認画面にてフラゲのお届けになるかご確認ください。
※各種前払い決済をご利用の場合、フラゲは保証しておりません。
※フラゲは配送日時指定なしでご注文いただいた場合に限ります。
読み込み中にエラーが発生しました。
画面をリロードして、再読み込みしてください。
