2013-12-13 15 views

Antwort

16

statische Typisierung

Statische Typisierung bedeutet, dass Typen sind bekannt und auf Korrektheit geprüft, bevor Ihr Programm ausgeführt wird. Dies geschieht oft durch den Compiler der Sprache. Zum Beispiel würde die folgende Java-Methode einen Compiler-Fehler, , bevor Sie Ihr Programm ausführen:

public void foo() { 
    int x = 5; 
    boolean b = x; 
} 

dynamische Typisierung

Dynamische Typisierung bedeutet, dass Arten nur bekannt sind, wie Ihr Programm ausgeführt wird. Zum Beispiel kann die folgende Python (3, wenn es darauf ankommt) Skript ohne Probleme ausgeführt werden:

def erroneous(): 
    s = 'cat' - 1 

print('hi!') 

Es wird in der Tat Ausgang hi!.Aber wenn wir erroneous nennen:

def erroneous(): 
    s = 'cat' - 1 

erroneous() 
print('hi!') 

A TypeError wird bei Laufzeit erhöht werden wennerroneous genannt wird.

-1

Statisch typisierte Sprache:

  • Sie müssen zuvor den 'Typ' der Variable deklarieren.
NSString *string = @"Hello"; 
  • Sie können nicht Gegenstand (entweder Beton oder primitiven) anderer Art in den Variablen gleichen Namen
NSString *string = @"Hello"; 
int string = 9; // Not legal, compile type warning 

zB statisch speichern Programmiersprache: Ja va, Objective-C, usw.

dynamisch typisierte Sprache:

  • Keine Notwendigkeit Objekttyp zu erklären. es wird in Runtime herausgefunden werden.

string = 'Hallo'

  • Wir dürfen Objekttyp für gleiche Variable ändern, als Name für ein Objekt mit Zuweisungsoperator gebunden ist.
string = 'Hello' 
    string = 9 // Allowed 

z.B. dynamisch typisierte Sprache: Python etc.

+5

-1 Statische und dynamische Typisierung haben nichts mit Annotation/Inferenz des Typs zu tun. Es kommt vor, dass viele alte statisch typisierte Sprachen auf Typ-Anmerkungen bestehen, aber das ist irrelevant. Es gibt statisch typisierte Sprachen ohne Typanmerkungen. (Haskell zum Beispiel.) – sleeparrow