[Dresden-pm] Frage zur Implementation von einer Schnittstelle
Steffen Schwigon
ss5 at renormalist.net
Di Nov 1 08:55:17 PDT 2011
"Steffen Winkler" <steffen.winkler at gmx.net> writes:
>> ... eine typenlose Programmiersprache ist.
>
> Das ist so nicht ganz richtig. Es werden nur die Datentypen, die es
> selbstverständlich gibt, nicht sofort statisch mit den Variablen
> verbunden, wie das in C oder Java ist.
>
> Perl hat Variablentypen $scalar, @array, %hash, ...
Das sind keine richtigen Datentypen, das sind Datenstrukturen.
Der Ärger mit Smartmatch z.B. resultiert aus diesem Unterschied
zu Perl6 zum Beispiel.
> und Datentypen numeric, string, ...
Das geht schon in die Richtung.
Aber auch die sind alle in einem Sack und casten/upgraden sich
kontextabhängig gegenseitig, so dass man nicht wirklich getypt
programmieren kann.
> Und den Kontext scalar, list, string, numeric, boolean ... gibt es
> natürlich auch noch.
Hmmmm, naja, Kontext ist ein orthogonales Konzept.
> Klar wird das, wenn man Variablen mit Devel::Peek anschaut. Das sollte
> man unbedingt!!! mal tun. Dann sieht man das sehr gut. Wenn man OO
> kennt und denkt, Variablen sind Spezialobjekte, dann trifft man die
> Realität eher.
Variablen sind Spezialobjekte. :-)
> Wenn man typlos denkt, schreibt man schnell schlechten Code. Die
> Vorteile von Perl erscheinen dann wie Nachteile.
Es erlaubt dynamischeren Code. Das sind 2 Welten.
Das ist ein Vorteil hier und ein Nachteil dort.
Fakt ist, dass Perl 5 nativ keine getypte Sprache ist.
Wenn Perl getypt wäre, könnte ich einer Funktion f() sagen, sie liefert
Typ Int und damit in einem Ausdruck
$x = f();
den Typ von $x (Int) zur Compilezeit bestimmen und Eingabetypen zu
anderen Funktionen prüfen, wo $x reingeht.
Mit Moose kannn man zumindest zur Laufzeit Typ-*Checks* hinbekommen,
aber auch keine Compiletime-Typ-Inferenz, AFAIK.
Syntaktisch gibt's Typdeklarationen, werden aber nicht benutzt, siehe
Reini Urban's Experimente:
http://blogs.perl.org/users/rurban/2011/02/use-types.html
Kind regards,
Steffen
--
Steffen Schwigon <ss5 at renormalist.net>
Dresden Perl Mongers <http://dresden-pm.org/>
Mehr Informationen über die Mailingliste Dresden-pm