<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://www.explainxkcd.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Somebody42</id>
		<title>explain xkcd - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://www.explainxkcd.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Somebody42"/>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php/Special:Contributions/Somebody42"/>
		<updated>2026-04-07T22:38:46Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https://www.explainxkcd.com/wiki/index.php?title=1755:_Old_Days&amp;diff=129980</id>
		<title>1755: Old Days</title>
		<link rel="alternate" type="text/html" href="https://www.explainxkcd.com/wiki/index.php?title=1755:_Old_Days&amp;diff=129980"/>
				<updated>2016-11-04T11:02:40Z</updated>
		
		<summary type="html">&lt;p&gt;Somebody42: change &amp;quot;floppy disc&amp;quot; to &amp;quot;floppy disk&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{comic&lt;br /&gt;
| number    = 1755&lt;br /&gt;
| date      = November 4, 2016&lt;br /&gt;
| title     = Old Days&lt;br /&gt;
| image     = old_days.png&lt;br /&gt;
| titletext = Lot of drama in those days, including constant efforts to force the &amp;quot;Reflections on Trusting Trust&amp;quot; guy into retirement so we could stop being so paranoid about compilers.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Explanation==&lt;br /&gt;
{{incomplete|More explanation required on computer programming. Fill out the explanation column in the [[#Table of statements|table]] that lists all the statements.}}&lt;br /&gt;
This comic is showing a conversation between (young) [[Cueball]] and (old) [[Hairbun]] about computer programming in the past specifically the {{w|compilers}}. Hairbun explains how tough it was for programmers to write and create code back then and as usual in xkcd, conversation becomes more and more improbable.&lt;br /&gt;
&lt;br /&gt;
While her initial explanation that code needed to be compiled for multiple architectures is correct, Hairbun's claims rapidly grow ridiculous to the point where the improvement from {{w|C (programming language)|C}} to {{w|C++}} was the C++ finally supported {{w|floppy disks}} but just used them to punch holes in rather than using {{w|punch cards}} &amp;quot;like C used&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In the title text Hairbun continues her musings on the old compiler days, stating that there where ''a lot of drama in those days''. Specifically the references ''[http://www.win.tue.nl/~aeb/linux/hh/thompson/trust.html Reflections on Trusting Trust]'' a famous 1984 paper by {{w|UNIX}} co-creator {{w|Ken Thompson}} in which he described a way to hide a virtually undetectable backdoor in the UNIX login code via a second backdoor in the C compiler.  &lt;br /&gt;
&lt;br /&gt;
Using the technique in his paper, it would be impossible to discover the hacked login by examining the official source code for either the login or the compiler itself.  Ken Thompson may have actually included this backdoor in early versions of UNIX, undiscovered.&lt;br /&gt;
&lt;br /&gt;
Ken Thompson's paper demonstrated that it was functionally impossible to prove that any piece of software was fully trustworthy.  &lt;br /&gt;
&lt;br /&gt;
Hairbun claims that one of the dramas she refers to was that people tried to force Ken Thompson to retire, so everyone could stop being so paranoid about compilers.  In reality, any coder who created the first version of a compiler (or a similar critical component) could inject a similar backdoor into software, so it would be false safety. Even if no one else would have thought of this, then Thomson's paper was there for any future hacker to see. Though the problem was (claimed to) be solved in {{w|David A. Wheeler}} PhD dissertation &amp;quot;[http://www.dwheeler.com/trusting-trust/ Fully Countering Trusting Trust through Diverse Double-Compiling (DDC)]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Table of statements==&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Statements&lt;br /&gt;
!Explanation&lt;br /&gt;
|-&lt;br /&gt;
|Compile things for different processors||Many popular modern programming languages are either interpreted - meaning that they run directly from source code - or compile to an intermediate bytecode, like Java or common Python implementations. Programs written in such languages are portable across processor architectures - x86 to ARM, for example. Lower-level languages must take into account the features available on a given processor architecture and operating system. Before that, even, programs needed to compile directly into the native machine language for each processor they were intended to run on.&lt;br /&gt;
|-&lt;br /&gt;
|To compile your code, you had to mail it to IBM. It took 4-6 weeks.||While IBM has released multiple compilers, they sent the compiler to you, you did not send the code to them.&lt;br /&gt;
|-&lt;br /&gt;
|Before garbage collection, data would pile up until the computer got full and you had to throw it away. ||Garbage collection is a form of memory management that generally destroys objects or frees up memory once a program no longer needs it. In languages without automatic memory management, like C, the program must keep track of what memory has been allocated, and free it once it is no longer needed. If the program does not, it can end up trying to use more memory than the computer has, and may crash. This was, however, a temporary condition. In the worst case, a simple reboot will clear the computer's memory. &lt;br /&gt;
|-&lt;br /&gt;
|Early compilers could handle code fine, but comments had to be written in assembly.||Comments, in code, are portions of one or more lines that are ignored by the compiler. They are commonly used to explain or comment on the code itself. Generally speaking, even the earliest compilers only scanned comments for one thing - the end of the comment.&lt;br /&gt;
|-&lt;br /&gt;
|C could only be written on punch cards.You had to pick a compact font, or you'd only fit a few characters per card.||Punch cards were an early way of storing data in machine-readable form. One punched out specific locations to denote particular letters, numbers, or symbols. You did not, however, pick a font - punch positions were defined by rows and columns, much like the Scantrons that many students are familiar with. (C is not limited to punch cards.)&lt;br /&gt;
|-&lt;br /&gt;
|C++ was big because it supported floppy disks. It still punched holes in them, but it was a start||C++ was an object-oriented refinement of C, allowing data to be bundled together with the functions that operated on it. Floppy disks were irrelevant, and no programming language punched holes in them.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Transcript==&lt;br /&gt;
:[Cueball and Hairbun are standing together and Cueball is talking to her.]&lt;br /&gt;
:Cueball: What were things like in the old days?&lt;br /&gt;
:Cueball: I hear that you had to ... compile things for different processors?&lt;br /&gt;
:Hairbun: Yeah&lt;br /&gt;
&lt;br /&gt;
:[Same setting in a slimmer panel, now Hairbun is replying.]&lt;br /&gt;
:Hairbun: To compile your code, you had to mail it to IBM.&lt;br /&gt;
:Hairbun: It took 4-6 weeks.&lt;br /&gt;
&lt;br /&gt;
:[Close-up of Hairbun from the waist up.]&lt;br /&gt;
:Hairbun: Before garbage collection, data would pile up until the computer got full and you had to throw it away.&lt;br /&gt;
&lt;br /&gt;
:[Same setting as in the first panel with Hairbun gesturing toward Cueball raising one hand  palm up.]&lt;br /&gt;
:Hairbun: Early compilers could handle code fine, but comments had to be written in assembly.&lt;br /&gt;
&lt;br /&gt;
:[In a frame-less panel Hairbun is seen from the front, with both arms out to the side with both hands held palm up.]&lt;br /&gt;
:Hairbun: '''C''' could only be written on punch cards.You had to pick a compact font, or you'd only fit a few characters per card.&lt;br /&gt;
&lt;br /&gt;
:[Exactly the same setting as the first panel, but with Hairbun doing the talking.]&lt;br /&gt;
:Hairbun: '''C++''' was big because it supported floppy disks.&lt;br /&gt;
:Hairbun: It still punched holes in them, but it was a start.&lt;br /&gt;
:Cueball: Wow.&lt;br /&gt;
&lt;br /&gt;
{{comic discussion}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Comics featuring Cueball]]&lt;br /&gt;
[[Category:Comics featuring Hairbun]]&lt;br /&gt;
[[Category:Programming]]&lt;/div&gt;</summary>
		<author><name>Somebody42</name></author>	</entry>

	</feed>