Difference between revisions of "Talk:2200: Unreachable State"

Explain xkcd: It's 'cause you're dumb.
Jump to: navigation, search
(Created by dgbrtBOT)
 
(Added link to Dr. Dobbs journal article about rezrov interpreter, with unreachable state message from Planetfall.)
 
(20 intermediate revisions by 16 users not shown)
Line 1: Line 1:
 
<!--Please sign your posts with ~~~~ and don't delete this text. New comments should be added at the bottom.-->
 
<!--Please sign your posts with ~~~~ and don't delete this text. New comments should be added at the bottom.-->
 +
When I tried to go here originally, it was unreachable. [[Special:Contributions/162.158.107.61|162.158.107.61]] 03:54, 11 September 2019 (UTC)
 +
:Yes that was really a funny coincidence, although it lasted a bit too long. --[[User:Kynde|Kynde]] ([[User talk:Kynde|talk]]) 09:37, 11 September 2019 (UTC)
 +
::Any relation to the user database breach & DDOS attacks that hit some other xkcd community this week?[[User:ProphetZarquon|ProphetZarquon]] ([[User talk:ProphetZarquon|talk]]) 15:00, 11 September 2019 (UTC)
 +
 +
Nothing about the comic suggests a website. it looks more like the error message of a program. also, i don't think CB is typing it, just reading. [[Special:Contributions/172.68.50.124|172.68.50.124]] 06:20, 11 September 2019 (UTC)
 +
:Im positive you are right, Cueball's hands are hovering over the keyboard while he reads this message. The caption is a note to programers not to leave this kind of message to users by writing them when tired. I will correct the explanation and the transcript. --[[User:Kynde|Kynde]] ([[User talk:Kynde|talk]]) 09:45, 11 September 2019 (UTC)
 +
 +
;"Can't happen"
 +
This comic is not about "a problem that the programmers did not anticipate", but rather a situation that the programmer rules out as impossible, which is technically called "Can't happen" or "Impossible Error" in the hacker/programmer's jargon. See http://catb.org/jargon/html/C/can-t-happen.html
 +
 +
For example:
 +
<source lang=php>
 +
for ($i=1;$i<=5;++$i) {echo $i." - ";}
 +
if ($i<10) {echo "Bye!";} else {echo "Can't happen!";}
 +
</source>
 +
[[User:ElfQrin|ElfQrin]] ([[User talk:ElfQrin|talk]]) 07:14, 11 September 2019 (UTC)
 +
 +
Also it helps not to be too cute even with impossible error messages. A colleague left a message along the lines of <q>Application rubbish bin has broken.</q> once. Cue a somewhat perplexed user call several years later&hellip;
 +
<blockquote>
 +
“Scientists have calculated that the chances of something so patently absurd actually existing are millions to one.
 +
But magicians have calculated that million-to-one chances crop up nine times out of ten.”
 +
 +
Who is genuinely surprised that Cueball managed to reach the unreachable error condition?
 +
 +
― Terry Pratchett, Mort
 +
</blockquote>
 +
 +
--[[User:Kventin|Kventin]] ([[User talk:Kventin|talk]]) 07:51, 11 September 2019 (UTC)
 +
: Do you mean "garbage collector"? Because that's not being cute, that's the actual technical term. [[Special:Contributions/162.158.122.30|162.158.122.30]] 13:24, 11 September 2019 (UTC)
 +
 +
The "anything can happen" may be reference to undefined behavior in some programming languages (most famous are C and C++) https://en.wikipedia.org/wiki/Undefined_behavior. And the error message is rather about assertion failure https://en.wikipedia.org/wiki/Assertion_(software_development) [[Special:Contributions/162.158.92.54|162.158.92.54]] 08:03, 11 September 2019 (UTC)
 +
 +
:Undefined behaviour [https://devblogs.microsoft.com/oldnewthing/?p=633 can even result in time travel]! [[User:Ahiijny|Ahiijny]] ([[User talk:Ahiijny|talk]]) 18:44, 11 September 2019 (UTC)
 +
 +
I rewrote the intro from a developer's perspective, since I'm pretty sure this is more about coding than about websites. Would be nice to add something about assertions there too. [[User:Hawthorn|Hawthorn]] ([[User talk:Hawthorn|talk]]) 12:37, 11 September 2019 (UTC)
 +
 +
It's relatively common to include assertions for certain invariants because it can potentially allow compilers to make better optimizations, though this is usually a sign of premature optimization. [[User:Probably not Douglas Hofstadter|Probably not Douglas Hofstadter]] ([[User talk:Probably not Douglas Hofstadter|talk]]) 15:11, 11 September 2019 (UTC)
 +
 +
In the picture, Cueball seem to be writing the comment, instead of reading it, which seems to me a bit more logical (the surprise of someone finding such comment is less funny than the weird state of mind of the tired develloper that takes the time to put such an elaborate and self describing as useless message, but that may just be me) [[Special:Contributions/172.68.198.130|172.68.198.130]] 11:36, 12 September 2019 (UTC)
 +
:I think the image does not support this interpretation. The presence of the !Alert suggests that this is a dialog or warning that has popped up, and the speech lines suggest that the computer is "saying" (ie. displaying) the error message to Cueball. I also think that Randall would have made it more clear that Cueball is typing, if that was the case. [[User:Hawthorn|Hawthorn]] ([[User talk:Hawthorn|talk]]) 11:51, 12 September 2019 (UTC)
 +
 +
I want to clarify on why one would write an "impossible" error message. This isn't because one sits around thinking of conditions the program could be in and writing messages for them. It's because one can add a sort of "try/fail" condition to any line of code one is adding, and pass along a message in case it fails. Some programmers will do this constantly. So it's not that they anticipated the conditions of an impossible state the program is in when it fails, they simply wrote a "try/fail" around a line of code even though they think could never fail. This is also why the programmer can't suggest anything useful to the end-user: When writing it, he simply can't imagine why that "try" would ever fail. — [[User:Kazvorpal|Kazvorpal]] ([[User talk:Kazvorpal|talk]]) 16:22, 12 September 2019 (UTC)
 +
 +
Should this be added to the list of Cueball computer problems? [[Special:Contributions/108.162.219.40|108.162.219.40]] 19:51, 9 December 2019 (UTC)
 +
 +
I seem to recall reading that some of the classic interactive fiction games from Infocom contained descriptions of unreachable locations. If so, there may be some entertaining "Unreachable State" messages in this archive: https://github.com/historicalsource - [[User:Hotwebmatter|Hotwebmatter]] ([[User talk:Hotwebmatter|talk]]) 19:37, 10 December 2019 (UTC)
 +
 +
'''UPDATE:''' I found ''exactly'' what I was thinking of: https://www.drdobbs.com/the-rezrov-infocom-game-interpreter/199101705
 +
 +
The linked article, written in 1999 by Michael Edmonson, describes how he used the Perl programming language (see also https://xkcd.com/519/) to write an Infocom game interpreter called "rezrov" which supported various cheat commands including "teleport" and "pilfer". As Edmonson explains:
 +
 +
: Besides its obvious nefarious uses, the pilfer command raises the possibility of revealing Easter eggs in old Infocom games. I remember a maddening puzzle from the game Planetfall, involving a room that you could enter, but not see anything in. There was a lantern in the game, but it was located in a lab full of deadly radiation. You could enter the room and take the lamp, but would die of radiation poisoning in a few moves, just out of reach of where you needed it. In this way the player's natural curiosity was denied even if they sacrificed their life to get a peek. And as it turned out, you didn't need to see inside that room to finish the game. In fact, as pilfering the lamp and entering the room reveals, you were never meant to:
 +
 +
Transportation Supply
 +
You have just located a serious bug.
 +
 +
[[User:Hotwebmatter|Hotwebmatter]] ([[User talk:Hotwebmatter|talk]]) 15:45, 12 December 2019 (UTC)

Latest revision as of 15:45, 12 December 2019

When I tried to go here originally, it was unreachable. 162.158.107.61 03:54, 11 September 2019 (UTC)

Yes that was really a funny coincidence, although it lasted a bit too long. --Kynde (talk) 09:37, 11 September 2019 (UTC)
Any relation to the user database breach & DDOS attacks that hit some other xkcd community this week?ProphetZarquon (talk) 15:00, 11 September 2019 (UTC)

Nothing about the comic suggests a website. it looks more like the error message of a program. also, i don't think CB is typing it, just reading. 172.68.50.124 06:20, 11 September 2019 (UTC)

Im positive you are right, Cueball's hands are hovering over the keyboard while he reads this message. The caption is a note to programers not to leave this kind of message to users by writing them when tired. I will correct the explanation and the transcript. --Kynde (talk) 09:45, 11 September 2019 (UTC)
"Can't happen"

This comic is not about "a problem that the programmers did not anticipate", but rather a situation that the programmer rules out as impossible, which is technically called "Can't happen" or "Impossible Error" in the hacker/programmer's jargon. See http://catb.org/jargon/html/C/can-t-happen.html

For example:

for ($i=1;$i<=5;++$i) {echo $i." - ";}
if ($i<10) {echo "Bye!";} else {echo "Can't happen!";}

ElfQrin (talk) 07:14, 11 September 2019 (UTC)

Also it helps not to be too cute even with impossible error messages. A colleague left a message along the lines of Application rubbish bin has broken. once. Cue a somewhat perplexed user call several years later…

“Scientists have calculated that the chances of something so patently absurd actually existing are millions to one. But magicians have calculated that million-to-one chances crop up nine times out of ten.”

Who is genuinely surprised that Cueball managed to reach the unreachable error condition?

― Terry Pratchett, Mort

--Kventin (talk) 07:51, 11 September 2019 (UTC)

Do you mean "garbage collector"? Because that's not being cute, that's the actual technical term. 162.158.122.30 13:24, 11 September 2019 (UTC)

The "anything can happen" may be reference to undefined behavior in some programming languages (most famous are C and C++) https://en.wikipedia.org/wiki/Undefined_behavior. And the error message is rather about assertion failure https://en.wikipedia.org/wiki/Assertion_(software_development) 162.158.92.54 08:03, 11 September 2019 (UTC)

Undefined behaviour can even result in time travel! Ahiijny (talk) 18:44, 11 September 2019 (UTC)

I rewrote the intro from a developer's perspective, since I'm pretty sure this is more about coding than about websites. Would be nice to add something about assertions there too. Hawthorn (talk) 12:37, 11 September 2019 (UTC)

It's relatively common to include assertions for certain invariants because it can potentially allow compilers to make better optimizations, though this is usually a sign of premature optimization. Probably not Douglas Hofstadter (talk) 15:11, 11 September 2019 (UTC)

In the picture, Cueball seem to be writing the comment, instead of reading it, which seems to me a bit more logical (the surprise of someone finding such comment is less funny than the weird state of mind of the tired develloper that takes the time to put such an elaborate and self describing as useless message, but that may just be me) 172.68.198.130 11:36, 12 September 2019 (UTC)

I think the image does not support this interpretation. The presence of the !Alert suggests that this is a dialog or warning that has popped up, and the speech lines suggest that the computer is "saying" (ie. displaying) the error message to Cueball. I also think that Randall would have made it more clear that Cueball is typing, if that was the case. Hawthorn (talk) 11:51, 12 September 2019 (UTC)

I want to clarify on why one would write an "impossible" error message. This isn't because one sits around thinking of conditions the program could be in and writing messages for them. It's because one can add a sort of "try/fail" condition to any line of code one is adding, and pass along a message in case it fails. Some programmers will do this constantly. So it's not that they anticipated the conditions of an impossible state the program is in when it fails, they simply wrote a "try/fail" around a line of code even though they think could never fail. This is also why the programmer can't suggest anything useful to the end-user: When writing it, he simply can't imagine why that "try" would ever fail. — Kazvorpal (talk) 16:22, 12 September 2019 (UTC)

Should this be added to the list of Cueball computer problems? 108.162.219.40 19:51, 9 December 2019 (UTC)

I seem to recall reading that some of the classic interactive fiction games from Infocom contained descriptions of unreachable locations. If so, there may be some entertaining "Unreachable State" messages in this archive: https://github.com/historicalsource - Hotwebmatter (talk) 19:37, 10 December 2019 (UTC)

UPDATE: I found exactly what I was thinking of: https://www.drdobbs.com/the-rezrov-infocom-game-interpreter/199101705

The linked article, written in 1999 by Michael Edmonson, describes how he used the Perl programming language (see also https://xkcd.com/519/) to write an Infocom game interpreter called "rezrov" which supported various cheat commands including "teleport" and "pilfer". As Edmonson explains:

Besides its obvious nefarious uses, the pilfer command raises the possibility of revealing Easter eggs in old Infocom games. I remember a maddening puzzle from the game Planetfall, involving a room that you could enter, but not see anything in. There was a lantern in the game, but it was located in a lab full of deadly radiation. You could enter the room and take the lamp, but would die of radiation poisoning in a few moves, just out of reach of where you needed it. In this way the player's natural curiosity was denied even if they sacrificed their life to get a peek. And as it turned out, you didn't need to see inside that room to finish the game. In fact, as pilfering the lamp and entering the room reveals, you were never meant to:
Transportation Supply
You have just located a serious bug.

Hotwebmatter (talk) 15:45, 12 December 2019 (UTC)