Dynamische Programmiersprachen - Fachgebiet ...
Dynamische Programmiersprachen - Fachgebiet ...
Dynamische Programmiersprachen - Fachgebiet ...
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
3 DYNAMISCHE TYPISIERUNG / STATISCHE TYPISIERUNG 9<br />
Es erfolgt im Gegensatz zu einer statischen Programmiersprache wie beispielsweise Java<br />
im Quell-Code keine Typ-Deklaration der einzelnen Variablen.<br />
In einer statisch typisierten Programmiersprache wie Java ist dies, wie das folgende<br />
Beispiel zeigt, nicht möglich:<br />
Abbildung 6: Beispiel: Statische Typisierung in der Programmiersprache Java<br />
Da die Variable b bereits im Kopf des Programms statisch als integer-Variable deklariert<br />
wurde, lässt sich ihr innerhalb der main-Methode kein String-Wert mehr zuweisen.<br />
Es kommt daher zu einem Kompilierfehler. Dies lässt sich sowohl als Nachteil- aber<br />
auch als Vorteil bezüglich des Beispiels mit dynamischer Typisierung betrachten. Ein<br />
Nachteil besteht darin, daß sich der Bezeichner b nicht wiederverwerten lässt, der<br />
Vorteil, daß durch die Typprüfung verhindert werden kann, daß nicht unbeabsichtigte<br />
Wertzuweisungen auftreten können.<br />
Ein weiteres Beispiel für dynamische Typisierung findet man in der Programmiersprache<br />
Objective-C, einer hauptsächlich von Brad Cox in den 80er Jahren bei PPI, später Stepstone,<br />
um die Fähigkeit der Objektorientierung entwickelten Erweiterung der Programmiersprache<br />
C. Deren Syntax und Konzeption der objektorientierten Erweiterungen ist<br />
an Smalltalk angelehnt. Bemerkenswerte Eigenschaften von Objective-C gegenüber der<br />
Programmiersprache C++, die ebenfalls einen Ansatz einer objektorientierten Erweiterung<br />
der Programmiersprache C darstellt (der jedoch auf Simula zurückgeht), sind<br />
u.a. das späte Binden von Methoden und die Typlosigkeit, die beide auf Smalltalk<br />
zurückgehen.<br />
Im unteren Beispiel wird ein Ausschnitt einer Klasse gezeigt, die einen Knoten in einer<br />
einfach verketteten Liste darstellen soll. Dabei ist das Attribut LinkedListNode*<br />
next ein Zeiger auf das nächste Element der Liste und das Attribut id data der Inhalt