[7] In programming, the details matter. Computers are incredibly stupid (more on this in a minute). You can't be vague; you can't describe your program 3/4 of the way and then say "Ya know what I mean?" and have the compiler figure out the rest. You have to dot your i's and cross your t's. If the language says you have to declare variables before using them, you have to. If the language says you have to use parentheses here and square brackets there and squiggly braces some third place, you have to.
Beim Programmieren sind die Details wichtig, denn Computer sind unglaublich dumm (mehr darüber in Kürze). Wir können uns nicht vage ausdrücken; beispielsweise 3/4 eines Programmes schreiben und dann sagen "du weißt schon, was ich meine?" und dem Computer den Rest überlassen. Alles muss auf Punkt und Komma stimmen. Wenn die Programmiersprache verlangt, dass Variablen vor der Verwendung zu deklarieren sind, dann müssen wir das tun. Wenn in einem Zusammenhang runde Klammern, an anderen Stellen eckige Klammern und an einer dritten Stelle geschwungene Klammern gefordert werden, dann müssen wir dem folgen.
2. stupidity
2. Eine gewisse Form von Dummheit
[8] Computers are incredibly stupid. They do exactly what you tell them to do: no more, no less. If you gave a computer a bottle of shampoo and told it to read the directions and wash its hair, you'd better be sure it was a big bottle of shampoo, because the computer is going to wet hair, lather, rinse, repeat, wet hair, lather, rinse, repeat, wet hair, lather, rinse, repeat, wet hair, lather, rinse, repeat, ...
Computer sind geradezu unglaublich dumm. Sie tun genau das, was man ihnen sagt, nicht mehr und nicht weniger. Gäbe man einem Computer eine Flasche mit Shampoo und den Auftrag die Anweisungen zu lesen und sich die Haare zu waschen, dann sollte man sich vergewissern, dass die Flasche groß ist, denn der Computer wird sich die Haare anfeuchten, einschäumen, ausspülen, wiederholen, Haare anfeuchten, einschäumen, ausspülen, wiederholen, Haare anfeuchten, einschäumen, ausspülen, wiederholen, ...
[9] I saw an ad by a microprocessor manufacturer suggesting the "smart" kinds of appliances we'd have in the future and comparing them to "dumb" appliances like toasters. I believe they had it backwards. A toaster (an old-fashioned one, anyway) has two controls, and one of them is optional: if you don't set the darkness control, it'll do the best it can. You don't have to tell it how many slices of bread you're toasting, or what kind. ("Modern" toasters have begun to reverse this trend...) Compare this user interface to most microwave ovens: they won't even let you enter the cooking time until you've entered the power level. When you're programming, it helps to be able to "think" as stupidly as the computer does, so that you're in the right frame of mind for specifying everything in minute detail, and not assuming that the right thing will happen unless you tell it to. (This is not to say that you have to specify everything; the whole point of a high-level programming language like C is to take some of the busiwork burden off the programmer. A C compiler is willing to intuit a few things--for example, if you assign an integer variable to a floating-point variable, it will supply a conversion automatically. But you have to know the rules for what the compiler will assume and what things you must specify explicitly.)
Ich erinnere mich an die Werbung eines Microprozessor-Herstellers mit all den "intelligenten" Geräten, die es in Zukunft geben würde, im Vergleich zu "dummen" Geräten, wie z. B. Toastern. Ich sehe das anders. Ein Toaster (zumindest einer von der altmodischen Art) hat zwei Regler und einer davon ist optional: wenn man keinen Bräunungsgrad einstellt, wird er trotzdem sein Bestes geben. Man muss dem Toaster nicht sagen, welche Art von Brot oder wieviele Scheiben man toasten will (bei "modernen" Toastern scheint sich der Trend umzukehren...). Im Vergleich dazu die Bedienung von manchen Mikrowellenherden: man kann nicht einmal die Zeit einstellen, solange man nicht schon vorher die Energiestufe festgelegt hat. Beim Programmieren hilft es sehr, wenn man in der Lage ist genauso engstirnig zu "denken", wie es der Computer tut; in diesem Geisteszustand fällt es leichter, alles bis ins letzte Detail festzulegen und keinesfalls anzunehmen, dass das Richtige von selbst geschieht. (Das heißt nicht, dass man alles spezifizieren muss; der Sinn höherer Programmiersprachen wie C ist es, dem Programmierer Detailarbeit abzunehmen. Ein C Compiler macht einige Dinge intuitiv - wenn man beispielsweise einen ganzzahligen Wert in eine Gleitkommavariable speichert, dann wird er die Umwandlung automatisch durchführen. Aber man muss die Regeln kennen, denen der Compiler folgt und wissen, was man explizit spezifizieren muss.)
3. good memory
3. Ein gutes Gedächtnis
[10] There are a lot of things to remember while programming: the syntax of the language, the set of prewritten functions that are available for you to call and what parameters they take, what variables and functions you've defined in your program and how you're using them, techniques you've used or seen in the past which you can apply to new problems, bugs you've had in the past which you can either try to avoid or at least recognize by their symptoms. The more of these details you can keep in your head at one time (as opposed to looking them up all the time), the more successful you'll be at programming.
Während des Programmierens muss man vieles im Kopf haben: die Syntax der Programmiersprache, die Menge der verfügbaren Bibliotheksfunktionen und welche Parameter sie verlangen, welche Variablen und Funktionen man selbst definiert hat und wofür man sie benutzt, Vorgehensweisen - die man selbst schon eingesetzt oder von denen man gelesen hat - zur Lösung neu auftauchender Probleme, und ehemals begangene Fehler, um sie nach Möglichkeit zu vermeiden oder schnell an den Symptomen zu erkennen. Je mehr man sich von diesen Details merken kann (im Gegensatz zum ständigen, zeitraubenden Nachschlagen), umso leichter wird einem das Programmieren fallen.