Difference between revisions of "379: Forgetting"

Explain xkcd: It's 'cause you're dumb.
Jump to: navigation, search
m (fix date according to http://www.xkcd.com/archive/)
Line 11: Line 11:
  
 
==Transcript==
 
==Transcript==
:[Cueball sits at computer, coding]
+
:[Cueball sits at computer, coding.]
:Text on computer: prev->next = toDelete->next;
+
prev->next = toDelete->next;
:delete toDelete;
+
delete toDelete;
:// if only forgetting were  
+
//if only forgetting were  
:// this easy for me
+
//this easy for me
  
:Cueball at computer: <sniff>
+
:Cueball: <sniff>
  
:[Man at computer lowers his head into his hands and cries]
+
:[Cueball lowers his head into his hands and cries.]
  
:[Cueball types again]
+
:[Cueball types again.]
:Text on computer: assert "It's going to be okay.";
+
assert "It's going to be okay.";
  
 
{{comic discussion}}
 
{{comic discussion}}
 
[[Category:Comics featuring Cueball]]
 
[[Category:Comics featuring Cueball]]
 
[[Category:Programming]]
 
[[Category:Programming]]

Revision as of 15:19, 31 July 2013

Forgetting
Of course, the assert doesn’t work.
Title text: Of course, the assert doesn’t work.

Explanation

Cueball is writing a piece of code (probably in the programming language C++) which removes an item from a data structure called a Linked list (the first two lines of the text). Then, he writes a comment (which is delimited by the double slashes) relating the code to his personal life. Finally, he adds an assertion, which is normally a formal specification of a condition which should always be true (with which the programmer ensures that e.g. mass is not negative). But in this case, instead of asserting a software-related predicate, he asserts that “it’s going to be okay.”

Transcript

[Cueball sits at computer, coding.]
prev->next = toDelete->next;
delete toDelete;
//if only forgetting were 
//this easy for me
Cueball: <sniff>
[Cueball lowers his head into his hands and cries.]
[Cueball types again.]
assert "It's going to be okay.";


comment.png add a comment! ⋅ comment.png add a topic (use sparingly)! ⋅ Icons-mini-action refresh blue.gif refresh comments!

Discussion

The syntax for pointers in C++ is &pointer and *pointer. The arrow syntax is used e.g. in PHP. So this explain does need a review. And furthermore it should focus on the assert joke, understandable for non programmers.--Dgbrt (talk) 18:48, 31 July 2013 (UTC)

Actually this works in C++ too. (*pointer).property is the same as pointer->property -- 17:58, 31 july 2013 (Time in Florida)
Do you have a code snippet, maybe this could help me to explain this comic for non programmers.--Dgbrt (talk) 22:43, 31 July 2013 (UTC)
At the moment I don't have a computer, just my phone, but I'll try (so i appologize for any typos in advance, you may correct them)

pair<int, int>* pntr = make_pair(5, 8); cout << (*pntr).first << endl; cout << pntr->first << endl; // the same as above

The arrow operator -> is a valid way to access object members using smart ptrs in C++

-- 22:12, 31 July 2013 (Florida)

I removed PHP as a possible language since PHP variable names start with a $. Zetfr 09:24, 20 May 2015 (UTC)
IT IS A COMBINACION EN C++/ANOTHER LENGUAGE IN THE FOURTH PANEL ASSERT HAS NOT PARENTHESES. IN C++ THE ASSERT MUST HAVE THE PARENTHESES AND SO CANNOT BE A C++ PROGRAM. PLEASE ADVISE 108.162.210.219 (talk) (please sign your comments with ~~~~)
I think he meant it as c++. Higher level languages that forego the parens tend to also forego the semicolon. Probably just a typo on Randall's part since he had recently learned Python relative to this. -- Flewk (talk) (please sign your comments with ~~~~)

man this one made me cry...

if i could at least forget what happened to sally... i wish it was as easy as "del filename".

this one, sadly, is too relatable for me. An user who has no account yet (talk) 15:56, 5 September 2023 (UTC)