Home Page Icon
Home Page
Table of Contents for
Understanding Computation
Close
Understanding Computation
by Tom Stuart
Understanding Computation
Preface
Who Should Read This Book?
Conventions Used in This Book
Using Code Examples
Safari® Books Online
How to Contact Us
Acknowledgments
1. Just Enough Ruby
Interactive Ruby Shell
Values
Basic Data
Data Structures
Procs
Control Flow
Objects and Methods
Classes and Modules
Miscellaneous Features
Local Variables and Assignment
String Interpolation
Inspecting Objects
Printing Strings
Variadic Methods
Blocks
Enumerable
Struct
Monkey Patching
Defining Constants
Removing Constants
I. Programs and Machines
2. The Meaning of Programs
The Meaning of “Meaning”
Syntax
Operational Semantics
Small-Step Semantics
Expressions
Statements
Correctness
Applications
Big-Step Semantics
Expressions
Statements
Applications
Denotational Semantics
Expressions
Statements
Applications
Formal Semantics in Practice
Formality
Finding Meaning
Alternatives
Implementing Parsers
3. The Simplest Computers
Deterministic Finite Automata
States, Rules, and Input
Output
Determinism
Simulation
Nondeterministic Finite Automata
Nondeterminism
Free Moves
Regular Expressions
Syntax
Semantics
Parsing
Equivalence
4. Just Add Power
Deterministic Pushdown Automata
Storage
Rules
Determinism
Simulation
Nondeterministic Pushdown Automata
Simulation
Nonequivalence
Parsing with Pushdown Automata
Lexical Analysis
Syntactic Analysis
Practicalities
How Much Power?
5. The Ultimate Machine
Deterministic Turing Machines
Storage
Rules
Determinism
Simulation
Nondeterministic Turing Machines
Maximum Power
Internal Storage
Subroutines
Multiple Tapes
Multidimensional Tape
General-Purpose Machines
Encoding
Simulation
II. Computation and Computability
6. Programming with Nothing
Impersonating the Lambda Calculus
Working with Procs
Plumbing
Arguments
Equality
Syntax
The Problem
Numbers
Booleans
Predicates
Pairs
Numeric Operations
Lists
Strings
The Solution
Advanced Programming Techniques
Infinite streams
Avoiding arbitrary recursion
Implementing the Lambda Calculus
Syntax
Semantics
Replacing variables
Calling functions
Reducing expressions
Parsing
7. Universality Is Everywhere
Lambda Calculus
Partial Recursive Functions
SKI Combinator Calculus
Iota
Tag Systems
Cyclic Tag Systems
Conway’s Game of Life
Rule 110
Wolfram’s 2,3 Turing Machine
8. Impossible Programs
The Facts of Life
Universal Systems Can Perform Algorithms
Programs Can Stand In for Turing Machines
Code Is Data
Universal Systems Can Loop Forever
Programs Can Refer to Themselves
Decidability
The Halting Problem
Building a Halting Checker
It’ll Never Work
Too good to be true
Fundamentally impossible
Other Undecidable Problems
Depressing Implications
Why Does This Happen?
Coping with Uncomputability
9. Programming in Toyland
Abstract Interpretation
Route Planning
Abstraction: Multiplying Signs
Safety and Approximation: Adding Signs
Static Semantics
Implementation
Benefits and Limitations
Applications
A. Afterword
Index
About the Author
Colophon
Copyright
Search in book...
Toggle Font Controls
Playlists
Add To
Create new playlist
Name your new playlist
Playlist description (optional)
Cancel
Create playlist
Sign In
Email address
Password
Forgot Password?
Create account
Login
or
Continue with Facebook
Continue with Google
Sign Up
Full Name
Email address
Confirm Email Address
Password
Login
Create account
or
Continue with Facebook
Continue with Google
Prev
Previous Chapter
Cover
Next
Next Chapter
Preface
Understanding Computation
Tom Stuart
Beijing • Cambridge • Farnham • Köln • Sebastopol • Tokyo
Add Highlight
No Comment
..................Content has been hidden....................
You can't read the all page of ebook, please click
here
login for view all page.
Day Mode
Cloud Mode
Night Mode
Reset