Thema:
Re:Vergiss beides flat
Autor: mike_za
Datum:29.03.08 15:47
Antwort auf:Re:Vergiss beides von hellbringer

>Aus dem Grund müssen (oder sollten zumindest) ständig die Variablen darauf geprüft werden, was sie wirklich sind. Und aus einem leicht verständlichen Code wie oben wird plötzlich:
>
>if (!$maniac_forum instanceof Forum)
>    throw new Exception('Objekt vom Typ Forum erwartet');
>elseif ($maniac_forum->is_down === true)
>    echo "Sorry";
>
>DAS ist das eigentlich Nervige am Programmieren, und nicht dass man vielleicht ein paar Klammern oder $-Zeichen hinzuschreiben muss.
>
>Ich hab zu wenig Ahnung von Ruby oder Python um zu wissen wie sowas dort gelöst ist. Aber ich glaube nicht, dass dort diese Probleme deutlich besser gelöst sind. Oder liege ich falsch?


Auf dieses Problem stößt man bei allen untypisierten Sprachen, also auch Ruby und Python. Die Freiheit bei der Typisierung und Konvertierung von einem in den anderen Typ bezahlt man halt mit einer gewissen "Unsicherheit". Hier muss man als Programmierer gewissenhaft darauf achten, nicht ständig eine Variable zu missbrauchen. Andernfalls muss man halt den Typ überprüfen. Bei einer typisierten Sprache würdest Du dann jedoch früher einen Fehler bekommen und hättest bei der Zuweisung des falschen Wertes ein Problem...

Die "Dynamik" in den dynamischen Programmiersprachen ist halt das, was sie dynamisch macht. *hust* Ich kann Variablentypen ändern, Klassen und Objekte zur Laufzeit erweitern, "Duck Typen", "Reflektion", "method_missing"... etc. Wenn ich das alles hemmungslos missbrauche ist es klar, dass ich vor Probleme stoße. Wenn ich diese Methodiken jedoch sinnvoll einsetze, dann kann ich dennoch sichere Programme schreiben... mit sehr viel weniger Code.

Generell ist aber nichts perfekt und alles hat seine Vor- und Nachteile. Momentan liebe ich Ruby für die Freiheit (in Sachen Syntax und Sprachkonstrukte). Vielleicht gelange ich aber auch tatsächlich mal an den Punkt, wo ich das alles verteufle... und wehmütig den Weg zurück antrete. Ich wage das aber irgendwie zu bezweifeln... :-)


< antworten >