Frage

Was auch immer seine Verdienste, Adobes Actionscript 3 präsentiert, was eine einmalige Gelegenheit sein, um die Folgen von typisierten gegen untypisierten Sprachen zu erforschen, weil es ziemlich strenge Obermenge von JavaScript ist, mit all dem syntaktischen Vorteilen / Overhead von strengen Typdeklarationen, deklarative Guss, etc.

Was dies ermöglicht wird, den gleichen Code vergleicht beiden Weisen geschrieben, während wesentliche Sprachsyntax Ausklammerung.

Dies führt mich zu fragen, ob es eine quantitative Aussage über den wirklichen Nutzen der starken Typisierung insbesondere für Fehler während der Kompilierung Überprüfung in Bezug auf Fehlerraten, Programmierung Produktivität und Codevolumen; oder ganz unsere Perspektiven basierend auf Spekulation und Vermutung? Gibt es noch andere Sprachen, die in beiden Richtungen verwendet werden können (nicht altmodisch VB zählen -. Nicht eine hoch angesehene Sprache oder so zu sein)

Ich habe viel Zeit mit beiden Sprachen ausgegeben, aber noch nicht endgültig entschieden, welchen Weg ich es bevorzugen, und ich möchte lieber nicht auf die anekdotische Evidenz hinzufügen. - Ich bin für objektive Informationen suchen

War es hilfreich?

Lösung

Dies ist einer der großen Religionskriege in der Programmierung, überschritt nur vielleicht durch den Konflikt zwischen den einem wahren Editor Emacs, und die böse Ausgeburt der Satan vi.

Grundsätzlich, wenn ein Programm in einer dynamischen Sprache geschrieben korrekt ist, dann kann es zu einer statisch typisierte Sprache und immer noch richtig sein umgewandelt werden und umgekehrt. Der Vorteil eines wirklich statisch typisierte langfuage ist, dass Fehler, die während der Laufzeit in einer dynamischen Sprache können bei der Kompilierung in einer statisch typisierte Sprache.

identifiziert werden zeigen würden

Was oft in diesen Situationen vernachlässigt wird, ist jedoch, dass statisch typisierten Sprachen Notluken im Allgemeinen (wie Typumwandlungen) haben, und scheinbar dynamischen Sprachen können Typinferenz verwenden zu schließen, und so zu behandeln, als statisch typisiert, die Typen von scheinbar dynamischen Ausdruck .

Was ist wirklich wichtig, unter der Decke, ist der Programmierer. Wenn der Programmierer das Programm für richtig hält, dann wird es entweder in einer statischen oder einer dynamischen Sprache richtig sein. Ich bin mir nicht bekannt, dass gute experimentelle Hinweise darauf, dass entweder ein produktiver oder anfälliger für Fehler in der Praxis ist.

Andere Tipps

Meiner Meinung nach ist stark typisierten Sprachen wie C # können viele während der Kompilierung identifizieren Fehler übersehen, die nicht in einer lockeren typisierten Sprache gefangen werden und würden daher dazu führen, später einen Laufzeitfehler. Ich glaube nicht, denkt, das ist nur eine Spekulation, da strikte Kompilierung Probleme antizipieren, die später Fehler während der Laufzeit verursachen würde. Dies kann möglicherweise die meisten der Art beseitigen erros der Codierung, die Sie bei der Implementierung übersehen, aber das leicht zu finden und durch den Compiler festgelegt werden kann.

Der Wert der statische Typisierung scheint mir ziemlich begrenzt, wenn Sie glauben, wie ich, dass Sie nicht etwas wahr ist über ein Stück Software sagen kann, es sei denn, Sie einen Test haben demonstriert es der Fall zu sein. Wenn Sie das akzeptieren und üben, dann ist es weitgehend unerheblich, ob Fehler bei der Kompilierung festgestellt werden oder bei Testzeit.

An diesem Punkt würde ich lieber die knappere die beiden Arten von Sprachen, die in meiner Erfahrung dynamische Sprachen gewesen sind.

Die Kehrseite ist, dass statische Typisierung nur wirklich hilft Ihnen, wenn Sie nicht das Schreiben von Tests werden. Wenn das der Fall ist, wahrscheinlich statische Typisierung ist nicht genug, um das ordnungsgemäße Funktionieren der Software zu gewährleisten.

Die OP und felipecsl sind verwirrt über die Terminologie verwendet, wenn es um die Eingabe Disziplinen zu sprechen.

statische Typisierung bedeutet Typen während der Kompilierung Zeit (was auch immer die Kompilierung bedeutet in der Sprache) überprüft werden. Dynamische Typisierung bedeutet Typen geprüft als Ausdruck / Anweisungen ausgeführt werden. Starke Typisierung bedeutet, dass man nicht unterlaufen kann (CAST) einen Zeiger in eine ganze Zahl, zum Beispiel. Schwache Typisierung ist das Gegenteil von Strong Typing.

Es gibt keine „strikte Typisierung“, soweit ich weiß.

Jetzt für jemanden anderen die eigentliche Frage zu beantworten; -)

Schwach typisierte erfordert mehr Wartungszeit. Da die Programme komplexer werden, ergeben sich mehrere Probleme aufgrund der dort kein Compiler zu holen offensichtliche Probleme zu sein. Nicht für große, komplexe Projekte zu empfehlen. Ich spreche aus Erfahrung.

Statistisch TYPD lang. Haben ihre Variablen und xpressions als festen Typen, die vom Programmierer explizit angegeben werden oder infered durch. Die compiler.using dies. Info, geben Sie hier Scheck wird bei der Kompilierung durchgeführt werden. Während lang dynamisch typisiert haben ihre Werte festgelegt, sondern Variablen und xxpressions Arent fixed..due zum facct, dass, wenn überhaupt ein Operand berechnet wird, ist es wahrscheinlich, unterschiedliche Werte zurück, wird Typprüfung dann perfomed nach dem Operanden computed.ie gewesen nach der Berechnung, aber vor der Operation zur Laufzeit durchführt

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top