Reale Welt/Mathematik | Datenverarbeitung |
Beliebig viele Zahlen | Beschränkte Zahlenmenge |
z.B. -32768 bis 32767 | |
a <= x+y evtl. falsch | |
Beliebig genaue Zahlen | Wenige Dezimalstellen |
z.B. 10*pi = 31.41591 | |
Rundungsfehler | |
Beliebig große Zahlen | Kleine Exponenten |
z.B. 10^78 | |
(10^-50)/2 = 0 | |
Dezimalzahlen | Dualzahlen |
z.B. Umwandlung notwendig | |
(1/5)*5 != 1 | |
Kommutativ-, Assoziativgesetz | Abarbeitungsreihenfolge wichtig |
z.B. (1-1) + 10^-7 | |
1 - (1-10^-7) | |
Eindeutigkeit | Fehler in jedem Rechenschritt |
z.B. Aus cos(a) = cos(b) | |
folgt nicht a = b |
Unnatürliche Denkweisen | ||
C | Feldindizes von 0 bis N-1 | |
PL/1 | Feldabarbeitung: a = a/SUM(a) | |
APL | Abarbeitung von rechts nach links: 2*3+4 => 14 | |
Keine einheitlichen Schreibregeln | ||
FORTRAN | x = 1 | aber DATA x/1/ |
PL/1 | IF a=3 ... | aber WHILE(a=3) ... |
ISPF | FIND X 1 | aber FIND Y 1 |
Schlechte Lesbarkeit | ||
APL | 4 + 2*i5 | gerade Zahlen von 6 bis 14 |
viele | A(k) | für Felder und Funktionen |
Unerwartete Wirkungen | ||
BASIC | PRINT SQRT(4) => 0 | |
FORTRAN | CALL UP(1) | überschreibt Konstante 1 |
C | if (a=b==5 && c=d==0) ... | |
Zuweisung an c nur, wenn a wahr ist | ||
Beschränkungen | ||
FORTRAN (66) | A(k+m) | nicht erlaubt |
PL/1 | Stringindizes nur bis 32767 | |
Fehlinterpretationen | ||
JCL | //X DD DSN=A, DISP=(NEW,KEEP), |
Beschränkungen durch | |
Speicherplatz | MS-DOS: 640 KB |
Laufzeit | Programmiertricks |
Erstellungzeit | Termindruck: "Bananensoftware" |
Kosten | Manpower |
Hardware | Zeichensatz, Farben, Auflösung |
Anforderungen | Realzeitprogramme: Timing |
Tools (Editor, Compiler, Debugger, System) | |
Editor/Compiler | Zusammenarbeit |
Compilerfehler | Funktionen; Optimierung |
Sprachdesignfehler | Falsche Abfragedefinition |
Laufzeitprobleme | Indexüberschreitung; Initialisierung |
Debugger | Neue Sprache |
Betriebssystem | Neue Sprache |
Algorithmus | |
Formulierungsfehler | a <= b <= c |
Denkfehler | (a+b+c)/3 = a statt a=b=c |
Vereinfachungsfehler | Linearisierung |
Abbruchfehler | |
Auslöschung | |
Fehlerfortpflanzung |