Thread Neugkeiten!? Modern OOP bald in Perl dank Ovids Cor (9 answers)
Opened by GwenDragon at 2022-01-24 14:08

hlubenow
 2022-01-26 13:31
#194212 #194212
User since
2009-02-22
875 Artikel
BenutzerIn
[default_avatar]
Gibt ja mehrere solcher Ansätze, wie z.B. "Moose". Ich denke, in den Core sollte es erst, wenn man sich wirklich sicher sein kann, daß es auch das Richtige ist. Nicht, daß es eine Verschlimmbesserung wird. Die anderen Ansätze sind ja in Modulen. Das wäre zum Ausprobieren wohl erstmal besser. Und dann sehen, wie es in der Community so ankommt.

Wichtig wäre halt, daß die Dinge dadurch nicht komplizierter und langsamer werden, so daß man das Gefühl hat, daß die alte Perl-OOP immer noch schneller und direkter ist. Dann wird die nämlich weiterhin bevorzugt.

Ich finde Perls alte OOP grundsätzlich gar nicht so schlecht (hab' ja auch einen Text dazu geschrieben).
Was mich stört, sind die vielen "$self->{beispiel}", die man schreiben muß. Da ist das Pendant "self.beispiel" in Python doch sehr viel einfacher zu schreiben, und es macht die Programme auch angenehmer zu lesen.
Das Zweite ist der AoA-Mechanismus mit Referenzen, der schon sehr gewöhnungsbedürftig ist. "$self" selbst ist ja eine "Referenz auf einen anonymen Hash". Da muß man erstmal begreifen, was das überhaupt ist und wie man damit umgeht. Das ist wohl das eigentliche Problem. Wenn man schon in den Core eingreifen würde, dann sollte man das wohl grundsätzlich überarbeiten, damit auch solche Verrenkungen wie
Code (perl): (dl )
1
2
3
for $i (@{$self->{beispiel}}) {
    print "$i\n";
}

nicht mehr nötig wären. Aber wahrscheinlich geht das nicht, denn dafür ist Perl eben Perl.
Wäre ja auch schön, wenn man den Punkt "." hätte, um auf Attribute zuzugreifen, aber der ist ja leider für die Stringverkettung belegt. "Perl 6" hat das wohl umdefiniert, aber dann bricht man halt die Abwärtskompatibilität.
Ansonsten, ob da nun "class" statt "package" steht, und "method" statt "sub", wäre (obwohl's schon schöner ist) nicht so wichtig, wenn die anderen Probleme nicht gelöst werden können.
Na, schau'n wir mal, was das (wieder) wird. :)

In Python sind diese Punkte seit langem alle sehr gut gelöst, da steht dann nur:
Code (python): (dl )
1
2
for i in self.beispiel:
    print i

Das ist praktisch optimal, aber dafür ist Python insgesamt sehr dogmatisch, und die Community leider auch. Perl ist - bisher - offener, freier, und das schätze ich. Heute mehr denn je.

View full thread Neugkeiten!? Modern OOP bald in Perl dank Ovids Cor