Difference between revisions of "163: Donald Knuth"

Explain xkcd: It's 'cause you're dumb.
Jump to: navigation, search
(Explanation)
(Explanation: Pascal does not have 1-based arrays)
Line 10: Line 10:
 
{{w|Donald Knuth}} is a computer science Professor Emeritus at {{w|Stanford University}} who is famous for writing ''{{w|The Art of Computer Programming}}'' and developing the <span class="texhtml"><span style="font-family:cmr10, LMRoman10-Regular, Times, serif;">T<span style="text-transform:uppercase; vertical-align:-0.5ex; margin-left:-0.1667em; margin-right:-0.125em;">e</span>X</span></span> computerized typesetting system.
 
{{w|Donald Knuth}} is a computer science Professor Emeritus at {{w|Stanford University}} who is famous for writing ''{{w|The Art of Computer Programming}}'' and developing the <span class="texhtml"><span style="font-family:cmr10, LMRoman10-Regular, Times, serif;">T<span style="text-transform:uppercase; vertical-align:-0.5ex; margin-left:-0.1667em; margin-right:-0.125em;">e</span>X</span></span> computerized typesetting system.
  
In computer science, an array is a structure that stores multiple values in a fixed order, and the elements are accessed by their index number.  In {{w|Pascal (programming language)|Pascal}}, for instance, one writes <tt>array[1]</tt> to access the first element in the array. Most "modern" (read: descended from {{w|C (programming language)|C}}) languages use 0 as the index for the first element in the array, but it is possible (if one is careful about it) to ignore the 0th element and use 1 as the first index. In some programming languages, such as {{w|Ada (programming language)|Ada}}, it is possible to select an arbitrary range of indices for each array type, so the first index might not only be 0 or 1, but even 100000. [[Cueball]] is complaining that [[Black Hat]] was not consistent in his choice of where to start his arrays. This is a valid complaint, as a lack of such consistency can make coding errors both more likely and less easy to detect.
+
In computer science, an array is a structure that stores multiple values in a fixed order, and the elements are accessed by their index number.  In {{w|Fortran}}, for instance, one writes <tt>array(1)</tt> to access the first element in the array. Most "modern" (read: descended from {{w|C (programming language)|C}}) languages use 0 as the index for the first element in the array, but it is possible (if one is careful about it) to ignore the 0th element and use 1 as the first index. In some programming languages, such as {{w|Pascal (programming language)|Pascal}} or {{w|Ada (programming language)|Ada}}, it is possible to select an arbitrary range of indices for each array type, so the first index might not only be 0 or 1, but also -42 or 100000. [[Cueball]] is complaining that [[Black Hat]] was not consistent in his choice of where to start his arrays. This is a valid complaint, as a lack of such consistency can make coding errors both more likely and less easy to detect.
  
 
Black Hat cites Donald Knuth to support his rebuttal, but the quote he uses does not seem relevant. It turns out that Black Hat had illegally entered the professor's house in order to question him on indices. Donald Knuth's words were not an intellectual response to the question, but rather an alarmed response to the presence of an intruder. It is not clear if Black Hat is aware of this.
 
Black Hat cites Donald Knuth to support his rebuttal, but the quote he uses does not seem relevant. It turns out that Black Hat had illegally entered the professor's house in order to question him on indices. Donald Knuth's words were not an intellectual response to the question, but rather an alarmed response to the presence of an intruder. It is not clear if Black Hat is aware of this.

Revision as of 19:09, 28 February 2019

Donald Knuth
His books were kinda intimidating; rappelling down through his skylight seemed like the best option.
Title text: His books were kinda intimidating; rappelling down through his skylight seemed like the best option.

Explanation

Donald Knuth is a computer science Professor Emeritus at Stanford University who is famous for writing The Art of Computer Programming and developing the TeX computerized typesetting system.

In computer science, an array is a structure that stores multiple values in a fixed order, and the elements are accessed by their index number. In Fortran, for instance, one writes array(1) to access the first element in the array. Most "modern" (read: descended from C) languages use 0 as the index for the first element in the array, but it is possible (if one is careful about it) to ignore the 0th element and use 1 as the first index. In some programming languages, such as Pascal or Ada, it is possible to select an arbitrary range of indices for each array type, so the first index might not only be 0 or 1, but also -42 or 100000. Cueball is complaining that Black Hat was not consistent in his choice of where to start his arrays. This is a valid complaint, as a lack of such consistency can make coding errors both more likely and less easy to detect.

Black Hat cites Donald Knuth to support his rebuttal, but the quote he uses does not seem relevant. It turns out that Black Hat had illegally entered the professor's house in order to question him on indices. Donald Knuth's words were not an intellectual response to the question, but rather an alarmed response to the presence of an intruder. It is not clear if Black Hat is aware of this.

The title text suggests that Black Hat finds Knuth's books intimidating, due to perhaps their size or complexity, to the extent that he considers breaking into Knuth's house (a risky, difficult crime) to be the better option in finding his answer. Even for Donald Knuth's books, this is very exaggerated and illogical behavior.[citation needed]

Transcript

[Black Hat and Cueball are sitting back to back at two separate desks, typing.]
Cueball: Man, you're being inconsistent with your array indices. Some are from one, some are from zero.
Black Hat: Different tasks call for different conventions. To quote Stanford algorithm's expert Donald Knuth, "Who are you? How did you get in my house?"
Cueball: Wait, what?
Black Hat: Well, that's what he said when I asked him about it.


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

Discussion

In Pascal you define the lower and upper bounds of an array when you declare it, e.g.,

 anArray[-5 .. 5] OF integer

which has always struck me as a much better idea than having arrays always starting at 0. Jstout (talk) 20:41, 18 February 2014 (UTC)

Why the swipe at Ada? I don't know about "the programming language of the future", but it's not a historical footnote either. It's used in many safety critical systems such as flight control, trains, even banking, and not just because that's what was used in the past. This language is still heavily used in these areas and is still being updated under MIL-STD and ISO.--108.162.217.185 15:33, 18 January 2015 (UTC)

Wikipedia verifies your claims. Removed. Suspender guy (talk) 20:28, 9 October 2015 (UTC)
Same is true of BASIC; you can specify any range, including negative numbers (I have used this). I program in C as well though --108.162.245.140 03:29, 24 December 2015 (UTC)
Actually, it depends on your version of BASIC. Early versions of BASIC had the OPTION BASE 0 and OPTION BASE 1 commands that would change the intial index of _all_ arrays to 0 or 1 respectively. 141.101.77.182 16:41, 29 April 2020 (UTC)Jurjen

Not related to the comic, but I think this is where the comic begins to look more detailed compared to the last 161 strips. I am talking about the art style. It is starting to look like the more familiar 400-current strips.Boeing-787lover 15:25, 29 June 2018 (UTC)

🐸