Thread Perl OO Artikel (17 answers)
Opened by lichtkind at 2023-12-01 14:05

rosti
 2023-12-04 15:56
#195612 #195612
User since
2011-03-19
3243 Artikel
BenutzerIn
[Homepage]
user image
Ich auch. Ich poste es direkt mal hier. Also Denkanstoß für weitere Vorträge:

OOP mit Perl 5

Kritiker der mit Perl seit Major-Release 5 implementierten Objektorientierung haben den Entwicklern stets vorgeworfen, daß die OO-Implementierung mangelhaft sei. Perl würden wichtige Schlüsselworte fehlen die es in anderen Sprachen längst gibt und Perl-Objekte seien nur Referenzen auf Datenstrukturen die mit dem Namen einer Klasse gesegnet sind. Des Weiteren sei es ein großer Mangel daß man in Perl-Objekten keine versteckten bzw. schreibgeschütze Eigenschaften festlegen kann und alle Eigenschaften eines Perl-Objekts von außen zugänglich seien, ebenso wie sämtliche in einer Klasse definierten Methoden allesamt nur public sind und von daher nicht privat sein können. Und darüber hinaus natürlich immer wieder die Leier von der fehlenden Typisierung.

Auf diese z.T. fragwürdigen Argumente eingehend, sei zunächst einmal gesagt, daß man gerade in OOP kein Schlüsselwort static braucht und package sehr wohl ein Schlüsselwort ist. Daß mit man mit package auch den Namen einer Klasse definiert und und nicht mit class ist in Perl eben so und nicht etwa ein Mangel. Genauso wie eine Methode eben mit dem Schlüsselwort sub deklariert wird. Und ganz sicher muß ein Objekt mit dem Namen einer Klasse gesegnet sein (blessed) denn nur so ist dieses Objekt eine Instanz dieser Klasse und dazu berechtigt Methoden auszuführen die in ebendieser Klasse definiert sind. Ob eine allen Klassen übergeordnete Methode new diese Segnung vornimmt oder der Programmierer selbst Hand anlegt mit bless tut doch der OOP gar keinen Abbruch, geschweige denn ist wirklich ein Mangel.

Und überhaupt kann Perl sehr wohl mit Datentypen umgehen sogar plattformübergreifend. So kann man mit Perl beispielsweise einen Floating-Point-Value unzerknittert wiederherstellen aus einer Bytesequenz die mit c, Java, PHP, JavaScript oder einer beliebig anderen Programmiersprache erzeugt wurde. Und selbstverständlich kann man mit Perl auch derartige Bytesequenzen erzeugen, siehe pack()-Funktion. Und wer seine Methoden verstecken will, bitteschön: Mit Perl XS kann man seinen ganzen Source-Code verstecken. Welcher Anwender hätte da ein Interesse daran herauszufinden ob es noch weitere Methoden gibt die nach außen hin nicht dokumentiert sind außer wenn es darum geht, den Code weiterzuentwickeln? Also mal ehrlich, das ist doch kein Mangel. Sämtliche Kritiken dieser Art sind einfach nur lächerlich.

View full thread Perl OO Artikel