2010-11-21 20 views
5

Warum sind die meisten Skriptsprachen nicht richtig geschrieben? zum BeispielWarum werden die meisten Skriptsprachen falsch eingegeben?

Javascript, Python, etc?

+0

Ich denke, Sie würden bessere Antworten erhalten, wenn dies ein Community-Wiki wäre (aber ich glaube nicht, dass Sie es jetzt tun können, Sie haben es gepostet; Sie könnten mit rep> 100). Das hat wirklich keine richtige Antwort. –

Antwort

1

Ich verstehe Ihre Frage nicht ganz. Abgesehen von PHP, VBScript, COMMAND.COM und der Unix-Shell (s) kann ich mir keine wirklich geschriebenen Skriptsprachen vorstellen.

Einige Beispiele für Skriptsprachen, die nicht lose typisiert sind Python, Ruby, Mondrian, JavaFXScript, Powershell, Haskell, Scala, elisp, Schema, AutoLisp, Io, Ioke, Seph, Groovy, Fantom, Boo, Kobra, Guile , Schiefer, Smalltalk, Perl, & hellip;

+0

Sind Python und Perlo nicht getippt? – nbrogi

12

Zunächst einmal gibt es einige Probleme mit Ihrer Terminologie. Es gibt keine lose typisierte Sprache und der Begriff Skriptsprache ist auch vage, am häufigsten Bezug auf so genannte dynamische Programmiersprachen.

Es ist schwach vs. starke Typisierung Eingabe wie rigoros unterscheidet zwischen verschiedenen Arten (d.h. wenn 1 + "2" Ausbeuten 3 oder ein Fehler).

Und es gibt dynamische vs. statische eingeben, die ist etwa, wenn Typinformationen bestimmt wird - während oder vor der Ausführung.

Also, was ist eine dynamische Sprache? Eine Sprache, die interpretiert statt übersetzt wird? Sicher nicht, da die Art, wie eine Sprache ausgeführt wird, niemals eine inhärente Eigenschaft der Sprache ist, sondern ein reines Implementierungsdetail. In der Tat kann es Dolmetscher und Compiler für ein und dieselbe Sprache geben. Es gibt GHC und GHCi für Haskell, sogar C hat den Ch-Interpreter.

Aber was sind dynamische Sprachen? Ich würde gerne definieren, wie man mit ihnen arbeitet.

In einer dynamischen Sprache möchten Sie Ihr Programm schnell prototypieren und es einfach irgendwie funktionieren lassen. Was Sie nicht tun möchten, ist formell Angabe das Verhalten Ihrer Programme, Sie wollen nur, dass es sich wie beabsichtigt verhält.

Wenn Sie also

foo = greatFunction(42) 
foo.run() 

in einer Skriptsprache, schreiben werden Sie einfach davon ausgehen, dass es einige greatFunction ist eine Zahl nehmen, die Ihnen einige Objekt zurückgibt können Sie run. Sie beweisen dies für den Compiler in keiner Weise - keine vordefinierten Typen, nein IRunnable .... Dies bringt Sie automatisch in die Domäne dynamische Eingabe.

Aber es gibt Typ Inferenz zu. Typinferenz bedeutet, dass in einer statisch typisierten Sprache der Compiler automatisch die Typen für Sie ermittelt. Der resultierende Code kann extrem knapp sein, ist aber immer noch statisch getippt.Nehmen Sie zum Beispiel

square list = map (\x -> x * x) list 

in Haskell. Haskell ermittelt hier vorab alle beteiligten Typen. Wir haben list ist eine Liste von Zahlen, map einige Funktion, die eine andere Funktion auf jedes Element einer Liste und square, die eine Liste von Zahlen aus einer anderen Liste von Zahlen erzeugt.

Trotzdem kann der Compiler beweisen, dass alles im Voraus funktioniert - die Operationen, die alles unterstützt sind formell angegeben. Daher würde ich Haskell nie eine Skriptsprache nennen, obwohl es ähnliche Ausdrucksstärken erreichen kann (wenn nicht mehr!).


So alles in allem Skriptsprachen sind getippt dynamisch da, dass Sie ohne Angabe eines laufenden Systems zum Prototypen ermöglicht, aber jede einzelne Operation existiert beteiligt vorausgesetzt, das ist, was Skriptsprachen verwendet werden, zum.

Verwandte Themen