Die erste Sache Ich möchte erwähnen, dass Bruce Eckel einen sehr interessanten Artikel geschrieben hat, der den Titel Starke Typisierung vs. starke Prüfung (der Link ist im Moment leider nicht verfügbar, aber ich hoffe, er ist bald wieder da).
Seine Idee ist, dass bei kompilierten Sprachen der Compiler lediglich als erster, automatischer Schritt der automatischen Prüfung fungiert. Wenn man zu einer dynamischen Sprache übergeht, verliert man diese erste Stufe des automatischen Testens. Aber in beiden Fällen ist diese erste, automatische Stufe nur ein Teil des Testens, und nicht einmal ein sehr wichtiger Teil.
Sein Punkt ist, dass, wenn Sie Programme richtig entwickeln, d.h. eine Form von Tests und Regressionstests durchführen, das Fehlen eines Compilers Sie nur dazu zwingen wird, einige weitere, eher grundlegende Tests hinzuzufügen, weshalb es kein großer Verlust ist.
Ich denke, die erste Antwort, die ich Ihnen geben würde, ist: Konzentrieren Sie sich auf Ihre Tests, was Sie ohnehin tun sollten, und solche Änderungen sollten Sie nicht allzu sehr beeinträchtigen.
Die zweite Sache Ich möchte erwähnen, dass viele dynamische Sprachen, die ich gesehen habe (z. B. Python), viel bessere Möglichkeiten haben, die Methoden/Klassen zu ändern, ohne den bestehenden Code zu zerstören.
Wenn Ihre Methode in Python beispielsweise früher zwei Parameter akzeptierte, jetzt aber einen dritten benötigt, können Sie immer einen Standardparameter hinzufügen, ohne den bestehenden Code zu verändern, den Sie jetzt aber verwenden können. Dies ist eine sehr einfache Technik, aber im Fall von Python (und ich nehme an, auch bei den meisten anderen dynamischen Sprachen) können diese Techniken viel interessanter werden; da sie dynamisch sind, können Sie die Implementierung von Funktionen für bestimmte Module ziemlich genau ändern, die Bedeutung von Variablen ändern, usw.
Ich würde vorschlagen, zu schauen, welche Techniken Clojure hat, die ähnliche Dinge ermöglichen, und zu entscheiden, ob sie in Ihrer Situation gelten.
4 Stimmen
Wie geht ihr damit um? Meiner Erfahrung nach lautet die richtige Antwort: "Nicht sehr gut".