Schrift
[thread]11513[/thread]

Ein paar Programmiertricks (Seite 2)

Leser: 1


<< |< 1 2 3 4 >| >> 40 Einträge, 4 Seiten
pq
 2008-03-23 19:55
#107405 #107405
User since
2003-08-04
12209 Artikel
Admin1
[Homepage]
user image
roooot+2008-03-23 17:33:16--
"Objektorientiert Programmieren mit Perl . Konzepte und Techniken" ist ja bei Amazon nicht mehr gut lieferbar und außerdem soll die Übersetzung grottig sein.

versuchs doch auf dem marketplace, da gibts grad zwei angebote, eins für 15,90.
ich würds aber auch eher im original lesen.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
murphy
 2008-03-23 21:03
#107411 #107411
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
KurtZ+2008-03-23 16:02:23--
[...] Verstehe deinen Schluss nicht, nur weil die Vererbung prototypisch ist hat JS doch wohl trotzdem Klassen. [...]


Das ist schlicht falsch. ECMA-262 konformes JavaScript kennt das Konzept einer Klasse im Sinne der objektorientierten Programmierung nicht. In dem gesamten Text des Standarddokumentes taucht dieses Konzept kein einziges Mal auf. "class" ist zwar ein reserviertes Wort in JavaScript, aber nur deswegen, weil damit gerechnet wurde, dass spätere Versionen vielleicht auch einmal Klassen unterstützen. Da wo das Standarddokument überhaupt den Begriff Klasse erwähnt, meint es damit einen String, der für Menschen lesbar den ungefähren Typ eines Objektes angibt; und selbst diese "Klasse" ist eine interne, für den Programmierer nicht notwendigerweise zugängliche, Eigenschaft von JavaScript-Objekten und dient lediglich Präsentationszwecken.

Man kann nun allerdings mit prototypenbasierter Objektorientierung, welche in gewissem Sinne mächtiger als klassenbasierte ist, Klassen emulieren, was gerade bei JavaScript in aller Regel auch getan und zum Beispiel durch die einfache Definition konstruktorähnlicher Funktionen noch erleichtert wird.

Dennoch gibt es ganz wesentliche Unterschiede zwischen klassenbasierter und prototypenbasierter Objektorientierung: Während bei einer klassenbasierten Sprache in aller Regel sowohl die Codebestandteile einer Klasse als auch die Datenstruktur ihrer Instanzen zur Kompilationszeit festgelegt werden können, ist das bei prototypenbasierten Sprachen inhärent unmöglich. In einem gewissen Sinne ist bei JavaScript jedes einzelne Objekt die Instanz einer Singletonklasse. Die Struktur und Methoden eines Objektes sind immer Teil seiner Laufzeitdaten. Man kann stets für jedes JavaScript-Objekt einzeln zur Laufzeit die Menge seiner Eigenschaften und Methoden modifizieren. Und man kann jedes beliebige Objekt als Prototyp auffassen und neue Objekte von ihm ableiten. Diese beiden Eigenschaften sind auch in Skriptsprachen bei klassenbasierter Objektorientierung nicht gegeben.

Da nun aber die wenigsten Menschen wissen, dass JavaScript prototypenbasiert ist und was das bedeutet, lässt auch die Implementation des standardkonformen Verhaltens der Sprache in vielen Browsern zu wünschen übrig, zumal die oben erwähnten Eigenschaften schwierig zu realisieren sind. Wenn z.B. JavaScript-Objekte einer Dokumentenobjektmodellimplementation intern durch Instanzen von Klassen der Implementationssprache des Browsers repräsentiert werden, ist es oft nicht möglich, ihnen beliebige zusätzliche Eigenschaften und Methoden zu verpassen, oder wenn es möglich ist gehen diese Eigenschaften oftmals bei bestimmten Operationen wieder verloren, weil sich die Identität der Objekte verändert, ohne dass das auf der JavaScript-Seite sofort offensichtlich wäre. Wird das Marshalling der Objekte dann noch durch Techniken wie ein Komponentenobjektmodell zusätzlich kompliziert, so blickt endgültig niemand mehr durch und man muss an einigen Stellen auf all die coolen Features von JavaScript verzichten wenn man noch funktionierenden Code erhalten will ;-)
When C++ is your hammer, every problem looks like your thumb.
lichtkind
 2008-03-23 21:17
#107412 #107412
User since
2004-03-22
5703 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
klar ist HOP kein anfängerbuch aber er wollte fortgeschrittenentricks und manches davon ist einfach perl anders zu nutzen. so wie es eher in haskell oder lisp üblich ist.
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
Gast Gast
 2008-03-23 21:30
#107413 #107413
Danke erstmal für eure Infos. Habe mir jetzt Perl Best Practices bestellt.

Wie ich das jetzt so aus ein paar Sätzen erkannt hab läuft OO mehr oder weniger über dieses Class::Std Modul? Das wird ja anscheinend auch in PBP verwendet?
KurtZ
 2008-03-23 21:53
#107414 #107414
User since
2007-12-13
411 Artikel
BenutzerIn
[default_avatar]
murphy+2008-03-23 20:03:48--
KurtZ+2008-03-23 16:02:23--
[...] Verstehe deinen Schluss nicht, nur weil die Vererbung prototypisch ist hat JS doch wohl trotzdem Klassen. [...]


Das ist schlicht falsch. ECMA-262 konformes JavaScript kennt das Konzept einer Klasse im Sinne der objektorientierten Programmierung nicht. ...


du hast die unterschiede sehr gut beschrieben, aber das hängt doch alles von der Definition von Klasse ab. Und da die Terminologie von OOP für mich ziemlich inkoherent ist (manche bezeichnen z.B. mit "Objekte" die "Instanzen" andere die "Klassen") und diverse quasistandards einander beißen (smalltalk, Java, ...) würde mich doch interessieren wo du diese spezielle Definition für "Klasse" herholst.

Wurde das etwa mittlerweile standardisiert?

BTW: IMHO kann man das JS-Modell weitestgehend mit Perl-Closures nachbauen (Prototyping ist zugegeben aufwändig), weswegen Perl im grunde doch zwei Objektmodelle hat.
TMTOWTDYOG (there's more than one way to dig your own grave)
KurtZ
 2008-03-23 22:02
#107415 #107415
User since
2007-12-13
411 Artikel
BenutzerIn
[default_avatar]
Gast+2008-03-23 20:30:59--
Danke erstmal für eure Infos. Habe mir jetzt Perl Best Practices bestellt.

Wie ich das jetzt so aus ein paar Sätzen erkannt hab läuft OO mehr oder weniger über dieses Class::Std Modul? Das wird ja anscheinend auch in PBP verwendet?


IMHO ist Class::Std der Teil von PBP wo sich die meisten Geister scheiden.
Ich find den Syntax unheimlich aufwändig, Moose ist mir sympatischer.

Aber ich habe da zugegebenermaßen wenig Praxis, da ich in 95% aller Fälle keine Vererbung sondern nur Kapselung und Instanziierung brauche[1], und da sind für mich Closures DAS schlanke Mittel der Wahl.

EDIT: [1] und weitere 4% lassen sich mit Aggregierung statt Vererbung erschlagen.

TMTOWTDYOG (there's more than one way to dig your own grave)
KurtZ
 2008-03-23 23:16
#107416 #107416
User since
2007-12-13
411 Artikel
BenutzerIn
[default_avatar]
roooot+2008-03-22 22:16:17--
Dann möchte ich anfangen meine eigenen Klassen zu schreiben, sprich Objektorientiertes Programmieren. Gibts da gute Sachen im Netz dazu oder gute Bücher? Dabei muss es am Anfang anfangen. Ich habe null Ahnung was das Thema Objektorientierung in Perl betrifft. In Javascript habe ich schon ein paar Klassen selbst erstellt, in Perl aber eben nicht.


Weißt du ich habe den Eindruck unsere Tips sind oversized. Du fragst nach nem Buch wie man "Bahnhöfe findet" udn wir empfehlen dir den Generalatlas aller Europäischen Großstädte.

Tatsächlich bräuchtest du nur nen aktuellen Stadtplan -> perlobj,perltootperlbootoder solltest einfach hier direkt nach dem Weg fragen :)

NACHTRAG: ich merke gerade das perlboot im Grunde die ersten 20 seiten zu OOP im erwähnten O'Reilly-Buch von Schwartz sind.
TMTOWTDYOG (there's more than one way to dig your own grave)
murphy
 2008-03-24 07:01
#107418 #107418
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
KurtZ+2008-03-23 20:53:21--
[...] Und da die Terminologie von OOP für mich ziemlich inkoherent ist (manche bezeichnen z.B. mit "Objekte" die "Instanzen" andere die "Klassen") und diverse quasistandards einander beißen (smalltalk, Java, ...) würde mich doch interessieren wo du diese spezielle Definition für "Klasse" herholst. [...]


Hmm, einen offiziellen Standard gibt's dafür wohl nicht. Ich bin aber einfach mal davon ausgegangen, dass der Begriff Klasse recht einheitlich im Sinne von "Kombination aus Datenstruktur und Methoden" verwendet wird – jedenfalls ist das die Bedeutung wie sie in der Wikipedia steht und wie ich sie aus den Sprachen / Objektsystemen .NET, Ada (95), C++, CLOS, D, Dylan, Eiffel, FORTRAN (95), GObject, Inform, Java, Nemerle, Objective-C, OCaml, (Turbo / Object) Pascal, Perl 6, PHP 5, Python, Ruby und Scala kenne. (Ich gebe aber zu, dass ich nicht alle diese Sprachen gut beherrsche).

Wenn Du anmerkst, dass zum Beispiel die Terminologien von Java und Smalltalk unterschiedlich sind, so ist das eigentlich auch kein Wunder, denn Java gehört zur klassenbasierten Familie objektorientierter Sprachen und Smalltalk zur prototypenbasierten.

Dass irgendwo Klassen Objekte genannt werden, habe ich eigentlich noch nie gesehen. Da fallen mir höchstens noch zwei Sprachen ein, die eine spezielle Syntax zur Deklaration von Singletonobjekten haben, nämlich Inform und Scala. Weißt Du noch, wo Dir diese andere Bezeichnungsweise begegnet ist?

Bei einigen wenigen Sprachen heißt noch das Schlüsselwort zur Definition von Klassen nicht "class" sondern "type".
When C++ is your hammer, every problem looks like your thumb.
MisterL
 2008-03-24 12:46
#107422 #107422
User since
2006-07-05
334 Artikel
BenutzerIn
[default_avatar]
Quote
Gibts da gute Sachen im Netz dazu oder gute Bücher?

http://books.google.de
Einfach nur nach Perl suchen lassen erschlägt einen förmlich mit Büchern. Zum Bleistift "Einführung in Perl-objekte, Referenzen und Module" http://books.google.de/books?id=ES5aKeFNbooC&print...
(natürlich kann diese Vorgehensweise die Buchform nicht ersetzen ;-) )
“Perl is the only language that looks the same before and after RSA encryption.”
roooot
 2008-03-24 14:36
#107425 #107425
User since
2008-03-03
276 Artikel
BenutzerIn
[default_avatar]
KurtZ+2008-03-23 22:16:11--
roooot+2008-03-22 22:16:17--
Dann möchte ich anfangen meine eigenen Klassen zu schreiben, sprich Objektorientiertes Programmieren. Gibts da gute Sachen im Netz dazu oder gute Bücher? Dabei muss es am Anfang anfangen. Ich habe null Ahnung was das Thema Objektorientierung in Perl betrifft. In Javascript habe ich schon ein paar Klassen selbst erstellt, in Perl aber eben nicht.


Weißt du ich habe den Eindruck unsere Tips sind oversized. Du fragst nach nem Buch wie man "Bahnhöfe findet" udn wir empfehlen dir den Generalatlas aller Europäischen Großstädte.

Tatsächlich bräuchtest du nur nen aktuellen Stadtplan -> perlobj,perltootperlbootoder solltest einfach hier direkt nach dem Weg fragen :)

NACHTRAG: ich merke gerade das perlboot im Grunde die ersten 20 seiten zu OOP im erwähnten O'Reilly-Buch von Schwartz sind.
Ich glaube du hast recht. Diese Tutorials sind im Grunde das was ich erstmal gesucht habe. Ich muss mir erstmal ein paar Basics aneignen.
Viele Grüße :)
<< |< 1 2 3 4 >| >> 40 Einträge, 4 Seiten



View all threads created 2008-03-22 23:16.