Schwach, Dynamisch, Stark, Streng, Statisch, hää?

Tags:

Schaffen wir erst mal Ordnung im Wortewirrwarr und gruppieren die Begriffe:

Static/Dynamic Typing

Bei static und dynamic typing (statische und dynamische Typisierung) geht es um die Frage...

Wann stehen die Datentypen im Quellcode fest?

Bei den meisten Programmiersprache (nicht so beim Gros der Skriptsprachen) erhält jede Variable bei der Deklaration einen festen Datentyp zugeordnet. So steht bereits bei der Kompilierung des Quellcodes fest, welcher Datentyp wo verwendet wird. Das nennt sich dann statisch-typisiert und hat zur Folge, dass fehlerhafter Quellcode (auf Typsicherheit bezogen) gar nicht erst kompiliert werden kann.

// C
int zahl;

Bei einer dynamisch-typisierten Programmier-, bzw. meist Skriptsprache, wiederum, stehen die Datentypen erst zur Laufzeit fest. Variablen haben also bei der Deklaration keinen festen Datentyp.

// PHP
$zahl;

Strong/Weak Typing

Bei strong und weak typing (starke/strenge und schwache Typisierung) geht es um die Frage...

Wie stark unterscheidet eine Programmiersprache die Datentypen?

Und da seht ihr auch schon das Problem dieser Frage: Es gibt keine allgemeingültige Skala, die man einfach so anwenden könnte, um die Frage zu beantworten.

Wird eine Sprache als schwach-typisiert bezeichnet, ist diese Aussage einigermassen nachvollziehbar; die Sprache unterscheidet die Datentypen halt kaum. Die Skala nach unten ist klar definiert.

Andererseits eine Sprache als stark-typisiert zu bezeichnen ist eine sehr relative Aussage: Die Skala nach oben hat kein definiertes Ende. So gibt es z.B. auch viele statisch-typisierte Programmiersprachen, die aber Type-Casting (Typumwandlung) erlauben. Also das Umformen eines Wertes von einem Datentyp in einen anderen. Zum Beispiel in C geschieht dies teilweise sogar implizit (automatisch vom Compiler).

int a = 2;
short int b = 4;

// b wird zur Addition nach 'int' gecastet
int c = a + b;

Merkmale von stark-typisierten Sprachen

Ein Sprache gilt als eher (das Zauberwort) stark-typisiert, wenn sie möglichst viele der folgenden Eigenschaften aufweist:

Sprachen die als eher stark-typisiert bezeichnet werden sind z.B. Haskell, Lisp oder Java.

Wikipedia Glossar

Ähnliche Artikel

Kommentare