007
16.01.2009, 17:28 Uhr
0xdeadbeef
Gott (Operator)
|
Ich nehme an, weil es die Syntax stark verkompliziert hätte. Man hätte zwei Funktionsspezifikationen - eine für void, eine für andere Rückgabetypen - die sich nur unwesentlich unterscheiden, schreiben und pflegen müssen. Ein Semantikfehler wäre denkbarer, aber...der Funktionsfluss ist semantisch gar nicht so einfach zu erfassen. Nimm zum Beispiel
C++: |
int foo() { if(irgendwas()) { return 1234; } else { return 5678; } }
|
...da muss der Compiler schon schlau sein. Oder
C++: |
int bar() { if(das_ist_immer_wahr()) { return 0; } }
|
...und wie verhält es sich mit exceptions?
C++: |
void foo() { throw std::runtime_error("Ha, ha!"); }
int bar() { if(irgendwas()) { return 1234; }
foo(); }
|
Ich denke, es ist schon sinnvoll, das einfach undefiniert zu lassen; hier alle Fälle erschlagen zu wollen, scheint mir nahezu unmöglich. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra |