...может снабдить свой
стих примечанием: "Notice that reading it aloud works best in southern British standard English: the rhyme of the first two lines of the third stanza call for a non-rhotic dialect."
А стих, между прочим, называется так:
SCOOPING THE LOOP SNOOPER
A proof that the Halting Problem is undecidable
Geoffrey K. Pullum
(School of Philosophy, Psychology and Language Sciences, University of Edinburgh)
Математическое доказательство в стихахNo general procedure for bug checks will do.
Now, I won’t just assert that, I’ll prove it to you.
I will prove that although you might work till you drop,
you cannot tell if computation will stop.
For imagine we have a procedure called P
that for specified input permits you to see
whether specified source code, with all of its faults,
defines a routine that eventually halts.
You feed in your program, with suitable data,
and P gets to work, and a little while later
(in finite compute time) correctly infers
whether infinite looping behavior occurs.
If there will be no looping, then P prints out ‘Good.’
That means work on this input will halt, as it should.
But if it detects an unstoppable loop,
then P reports ‘Bad!’ — which means you’re in the soup.
Well, the truth is that P cannot possibly be,
because if you wrote it and gave it to me,
I could use it to set up a logical bind
that would shatter your reason and scramble your mind.
Here’s the trick that I’ll use — and it’s simple to do.
I’ll define a procedure, which I will call Q,
that will use P’s predictions of halting success
to stir up a terrible logical mess.
For a specified program, say A, one supplies,
the first step of this program called Q I devise
is to find out from P what’s the right thing to say
of the looping behavior of A run on A.
If P’s answer is ‘Bad!’, Q will suddenly stop.
But otherwise, Q will go back to the top,
and start off again, looping endlessly back,
till the universe dies and turns frozen and black.
And this program called Q wouldn’t stay on the shelf;
I would ask it to forecast its run on itself.
When it reads its own source code, just what will it do?
What’s the looping behavior of Q run on Q?
If P warns of infinite loops, Q will quit;
yet P is supposed to speak truly of it!
And if Q’s going to quit, then P should say ‘Good.’
Which makes Q start to loop! (P denied that it would.)
No matter how P might perform, Q will scoop it:
Q uses P’s output to make P look stupid.
Whatever P says, it cannot predict Q:
P is right when it’s wrong, and is false when it’s true!
I’ve created a paradox, neat as can be —
and simply by using your putative P.
When you posited P you stepped into a snare;
Your assumption has led you right into my lair.
So where can this argument possibly go?
I don’t have to tell you; I’m sure you must know.
A reductio: There cannot possibly be
a procedure that acts like the mythical P.
You can never find general mechanical means
for predicting the acts of computing machines;
it’s something that cannot be done. So we users
must find our own bugs. Our computers are losers! И это снова отжёг Джеффри Паллам, автор порадовавшего меня в своё время эссе "Пунктуация и свобода человека".
А нашла я этот стих, читая по работе его
статью о AAVE. Какой там прекрасный разбор ошибок!
По-моему, у меня образовался иррационально-любимый лингвист. Надо будет ещё его почитать.
Оффтоп: я буду в Эрфурте примерно через месяц, и думаю ещё недельку после этого пошататься по Германии. У вас какие планы куда-то на это время?
У Мерлина ничего не понятно пока, а я с 25 мая по 12 июня включительно буду в Украине. Потом планирую быть дома, в Бад Хомбурге, ну или в окрестностях. Ты ты же свяжешься с нами, если что?
А, чёрт! Ну ладно, тогда попробую в ваших краях задержаться на подольше - или приехать отдельно. Короче, у меня намечается мотательный месяц...
Надеюсь, всё как-то срастётся
Да, я тоже! Слишком давно не виделись!
У нас весело, по большей части
Согласна! Пора бы исправить!
На том и порешили!