Skip to Content
アンダースタンディング コンピュテーション ―単純な機械から不可能なプログラムまで
book

アンダースタンディング コンピュテーション ―単純な機械から不可能なプログラムまで

by Tom Stuart, 笹田 耕一, 笹井 崇司
September 2014
Intermediate to advanced
336 pages
7h 53m
Japanese
O'Reilly Japan, Inc.
Content preview from アンダースタンディング コンピュテーション ―単純な機械から不可能なプログラムまで
274
8
章 不可能なプログラム
puts output
でもなぜ、このプログラムは必ず停止するのでしょうか。簡単な構文上の理由によるものでないのは
間違いありません。解説してみると「
IO#read
は必ず
String
を返し、
String#length
は必ず非負
Integer
を返します。そして、非負の
Integer
に対して
-(1)
を繰り返すと、必ず最終的には
#zero?
メソッドが
true
を返すオブジェクトを生成するためです」となります。この推論の連鎖はも
ろく、小さな変更に対して非常に敏感です。もしループ内の
n = n - 1
n = n - 2
に代わると、
プログラムは入力の長さが偶数のときにのみ停止します。停止性チェッカーがこのようなRubyと数に
関する事実をすべて知っているのはもちろんのこと、この種のプログラムについて正確な判定を下すた
めに、どのように事実をつなぎ合わせればよいかを知っているとしたら、それはかなり巨大で複雑なも
のになってしまうでしょう。
根本的な難しさは、プログラムを実際に動かすことなく、プログラムがやることを予測しよう
としているところにあります。
#evaluate
を使ってプログラムを実行することで、プログラ
ムが停止するかどうかを確かめたくなりますが、それだとまずいことが起こります。プログラ
ムが停止しなかった場合、
#evaluate
は永久に実行し続け、どれだけ待っても
#halts?
ら答えが返らないためです。信頼できる停止性検出アルゴリズムのためには、単にプログラ
ムを ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

行動を変えるデザイン ―心理学と行動経済学をプロダクトデザインに活用する

行動を変えるデザイン ―心理学と行動経済学をプロダクトデザインに活用する

Stephen Wendel, 武山 政直, 相島 雅樹, 反中 望, 松村 草也
マスタリング・イーサリアム ―スマートコントラクトとDAppの構築

マスタリング・イーサリアム ―スマートコントラクトとDAppの構築

Andreas M. Antonopoulos, Gavin Wood, 宇野 雅晴, 鳩貝 淳一郎, 中城 元臣, 落合 渉悟, 落合 庸介, 小林 泰男, 土屋 春樹, 祢津 誠晃, 平山 翔, 三津澤 サルバドール将司, 山口 和輝
Pythonによるデータ分析入門 第2版 ―NumPy、pandasを使ったデータ処理

Pythonによるデータ分析入門 第2版 ―NumPy、pandasを使ったデータ処理

Wes McKinney, 瀬戸山 雅人, 小林 儀匡, 滝口 開資

Publisher Resources

ISBN: 9784873116976Other