Yorumlarımı genişletmek gerekirse, o kitabın metni belirsizdir, bu da konuyu gizlemektedir.
Yorumladığım gibi, bu kitap şöyle demeye çalışıyor: "Haydi, yazılabilecek akla gelebilecek her C ++ işlevini yazmak için sonsuz sayıda maymun bulalım. Bir değişken seçersek (maymunların yazdığı belirli bir işlev) durumlar olacaktır. kullanırsa, fonksiyonun bu değişkeni değiştirip değiştirmeyeceğini çözemeyiz. "
Elbette, herhangi bir uygulamadaki bazı (hatta birçok) işlev için bu, derleyici tarafından ve çok kolay bir şekilde belirlenebilir. Ama hepsi için değil (veya zorunlu olarak çoğu).
Bu işlev kolayca analiz edilebilir:
static int global;
void foo()
{
}
"foo" açıkça "global" i değiştirmez. Hiçbir şeyi değiştirmez ve bir derleyici bunu kolayca çözebilir.
Bu işlev bu şekilde analiz edilemez:
static int global;
int foo()
{
if ((rand() % 100) > 50)
{
global = 1;
}
return 1;
"Foo" 'nun eylemleri çalışma zamanında değişebilen bir değere bağlı olduğundan , derleme zamanında "global" i değiştirip değiştirmeyeceği açık bir şekilde belirlenemez .
Tüm bu kavramı anlamak, bilgisayar bilimcilerinin sandığından çok daha basit. İşlev, çalışma zamanında değişen şeylere bağlı olarak farklı bir şey yapabilirse, çalışana kadar ne yapacağını hesaplayamazsınız ve her çalıştığında farklı bir şey yapabilir. Kesin olarak imkansız olsun ya da olmasın, açıkça imkansız.