Gibt es wesentliche architektonische Unterschiede beim Entwerfen von Anwendungen, die auf statischen Sprachen (wie C # oder Java) und dynamischen Sprachen (wie Ruby oder Python) basieren?
Nein.
Es ist etwas einfacher, ausgefallene Frameworks für dynamische Sprachen zu schreiben. Aber das ist keine Anwendungssache.
Welche Gestaltungsmöglichkeiten bieten sich für einen Typ an, der für den anderen schlecht ist?
Wirklich keine.
Sie können gute Dinge in jeder freundlichen Sprache schreiben.
Gibt es nützliche Funktionen, die mit einem Typ erzielt werden können, der nicht mit dem anderen übereinstimmt (natürlich in Bezug auf Design und Architektur)?
Nein.
Der Unterschied besteht darin, dass dynamische Sprachen "Schreiben, Ausführen, Reparieren" sind. Sie können schnell experimentieren und reparieren.
Statische Sprachen sind "Schreiben, Kompilieren, Erstellen, Ausführen, Reparieren". Sie können nicht so einfach experimentieren.
Davon abgesehen sind sie in ihren Fähigkeiten nahezu identisch.
Gibt es dynamikspezifische Entwurfsmuster?
Vielleicht. Python eval()
und execfile()
Funktionen weisen auf eine dynamische Sprachfunktion hin, die in einer statischen Sprache nur schwer (aber keineswegs unmöglich) zu handhaben ist. Es wären viel mehr Codezeilen, um Code im selben Prozessraum zu kompilieren und auszuführen.
Es ist nicht sprachdynamisch. Es ist einfach einfacher.