From ss5 at renormalist.net Tue Nov 1 08:37:33 2011 From: ss5 at renormalist.net (Steffen Schwigon) Date: Tue, 01 Nov 2011 15:37:33 +0000 Subject: [Dresden-pm] Frage zur Implementation von einer Schnittstelle In-Reply-To: <4EAD9764.4060800@gmx.de> (Hans-Dietrich Kirmse's message of "Sun, 30 Oct 2011 19:28:52 +0100") References: <000201cc96e7$5b5942d0$db23df5c@bigunix> <4EAD9764.4060800@gmx.de> Message-ID: <87ehxronuq.fsf@renormalist.net> Hans-Dietrich Kirmse writes: > Hallo Torsten, Steffen & Steffen, > > ich bitte schon im Vorab um Entschuldigung, das ich als Gast (in > Thüringen gibt es keine Perl-Mongers Gruppe) und Laie (beschäftige > mich erst seit ca. 5 Jahren als Autodidact mit Perl) euren > alternativen Vorschlag anzweifel und vielleicht fällt auf Grund meines > Alters (noch 10 Jahre bis zur Rente) der Groschen manchmal sehr > langsam, aber ich kann mir einfach nicht vorstellen, dass OOP hier > überhaupt als Lösung in Betracht kommt. a) Bitte keine Entschuldigungen, Du bist hier willkommen. b) Ich glaube auch nicht, dass OOP Dein Problem löst. :-) b1) Du willst mutmaßlich nicht den ganzen New-School-OOP-Kram nachholen, der bis zu Roles führt. Roles sind IMHO jener Teil OOP, der in Deiner klassischen OO-Darstellung fehlt, damit ist durchaus dynamisches Erweitern in einer plugin-artigen Weise möglich. Aber wie gesagt, dazu muss man sich den ganzen modernen Kram einverleiben. Das muss man nicht. Falls Du mal ein neues Programm anfängst, schau Dir aber Moose an, der Start ist leicht und Du lässt Dir diese OO-Möglichkeiten alle offen. b2) TIMTOWTDI. Happy hacking. Steffen -- Steffen Schwigon Dresden Perl Mongers From ss5 at renormalist.net Tue Nov 1 08:55:17 2011 From: ss5 at renormalist.net (Steffen Schwigon) Date: Tue, 01 Nov 2011 15:55:17 +0000 Subject: [Dresden-pm] Frage zur Implementation von einer Schnittstelle In-Reply-To: <20111030121024.137510@gmx.net> (Steffen Winkler's message of "Sun, 30 Oct 2011 13:10:24 +0100") References: <000201cc96e7$5b5942d0$db23df5c@bigunix> <20111030121024.137510@gmx.net> Message-ID: <87aa8fon16.fsf@renormalist.net> "Steffen Winkler" 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 Dresden Perl Mongers From ss5 at renormalist.net Thu Nov 3 09:16:31 2011 From: ss5 at renormalist.net (Steffen Schwigon) Date: Thu, 03 Nov 2011 16:16:31 +0000 Subject: [Dresden-pm] Heute: theoretisch ja Message-ID: <87hb2ltc4g.fsf@renormalist.net> Hi! Ich hab kein announcement geschickt, sorry. Ich guck nachher ab 20.30 Uhr in der Terasse am Bischofsplatz vorbei, ob noch einer außer mir eine funktionierende Kalenderapplikation hat? Kind regards, Steffen -- Steffen Schwigon From seidel at webit.de Thu Nov 3 09:49:53 2011 From: seidel at webit.de (Alexander Seidel) Date: Thu, 3 Nov 2011 17:49:53 +0100 Subject: [Dresden-pm] Heute: theoretisch ja In-Reply-To: <87hb2ltc4g.fsf@renormalist.net> References: <87hb2ltc4g.fsf@renormalist.net> Message-ID: <20111103164953.GA30836@kabelbinder.hob> On Thu, Nov 03, 2011 at 04:16:31PM +0000, Steffen Schwigon wrote: > > Ich hab kein announcement geschickt, sorry. > Ich guck nachher ab 20.30 Uhr in der > > Terasse am Bischofsplatz > > vorbei, ob noch einer außer mir eine funktionierende Kalenderapplikation > hat? bin dabei und jetzt weiß ich auch wo ;) Alex. From create-soft at freenet.de Sat Nov 5 05:27:29 2011 From: create-soft at freenet.de (Torsten Knorr) Date: Sat, 5 Nov 2011 13:27:29 +0100 Subject: [Dresden-pm] Frage zur Implementation von einer Schnittstelle - Message-ID: <000201cc9bb6$4a7cfc80$2c22df5c@bigunix> Hallo Hans-Dietrich > From hd.kirmse at gmx.de Sun Oct 30 13:39:34 2011 > From: hd.kirmse at gmx.de (Hans-Dietrich Kirmse) > Date: Sun, 30 Oct 2011 21:39:34 +0100 > Subject: [Dresden-pm] Frage zur Implementation von einer > Schnittstelle -Nachtrag > Damit habe ich für mein (einfaches) Problem eine Schnittstelle. Ich > bedanke mich bei allen fürs Mitdenken. Bei den oben gezeigten Code handelt es sich nicht um eine Schnittstelle sondern um einen Funktionszeiger der je nach bedarf auf unterschiedliche Funktionen zeigt. Ich glaube das Problem läßt sich mit Vererbungspolymorphismus besser lösen. #/usr/bin/perl -w #*** main.pl ***# #------------------------------------------------ use strict; use AddonFormat; my $object = new AddonFormat; print($object->MyFunction()); #------------------------------------------------ #*** AddonFormat.pm ***# #------------------------------------------------ package AddonFormat; use MyDefaultFormat; @ISA = qw(MyDefaultFormat); # Ist diese Funktion vorhanden wird sie aufgerufen. # Wenn nicht wird in der Basisklasse danach gesucht. # sub MyFunction # { # return "Hello From Addon Function\n"; # } 1; #------------------------------------------------ #*** MyDefaultFormat.pm ***# #------------------------------------------------ package MyDefaultFormat; sub new { my ($class) = @_; my $self = {}; bless($self, $class || ref($class)); return $self; } sub MyFunction { return "Hello From Default Function\n"; } 1; #------------------------------------------------ Gruß Torsten From hd.kirmse at gmx.de Sat Nov 5 13:51:29 2011 From: hd.kirmse at gmx.de (Hans-Dietrich Kirmse) Date: Sat, 05 Nov 2011 21:51:29 +0100 Subject: [Dresden-pm] Frage zur Implementation von einer Schnittstelle - In-Reply-To: <000201cc9bb6$4a7cfc80$2c22df5c@bigunix> References: <000201cc9bb6$4a7cfc80$2c22df5c@bigunix> Message-ID: <4EB5A1D1.6070707@gmx.de> Hallo Torsten, Am 05.11.2011 13:27, schrieb Torsten Knorr: > > Hallo Hans-Dietrich > >> From hd.kirmse at gmx.de Sun Oct 30 13:39:34 2011 >> From: hd.kirmse at gmx.de (Hans-Dietrich Kirmse) >> Date: Sun, 30 Oct 2011 21:39:34 +0100 >> Subject: [Dresden-pm] Frage zur Implementation von einer >> Schnittstelle -Nachtrag > >> Damit habe ich für mein (einfaches) Problem eine Schnittstelle. Ich >> bedanke mich bei allen fürs Mitdenken. > > Bei den oben gezeigten Code handelt es sich nicht um eine Schnittstelle doch. Zweifellos ist das eine Schnittstelle, wenn auch eine sehr einfache. > sondern um einen Funktionszeiger der je nach bedarf auf unterschiedliche > Funktionen zeigt. nö. es wird ja der Quelltext einer neuen Funktion (im Normalfall von einem anderen Programmierer) mit require reingeholt und damit diese Funktion statt der ursprünglichen verwendet wird, wird eben zum Umschalten/Umlenken einfach eine Referenz auf diese Funktion gelenkt. > Ich glaube das Problem läßt sich mit > Vererbungspolymorphismus > besser lösen. hm, ich bin Laienkünstler ;) Ich habe mich noch nie mit bless & Co abgegeben und werde das ganz bestimmt auch nicht machen, weil es ja Moose gibt (wenn ich das richtig verstanden habe). Aber Polymorphismus wird letzlich auch mit Pointern/Referenzen umgesetzt, auch wenn man das als Programmierer nicht mitbekommt. Ich sehe hier für mich keinen Vorteil, außer dass die Hürde für mich einfach zu hoch gelegt wäre. Was mir noch nicht gefällt ist, dass ich 'require' benutzen muss und nicht 'use' verwenden kann. Letzteres habe ich nicht hinbekommen. :( Viele Grüße Hans-Dietrich From create-soft at freenet.de Sun Nov 6 01:37:26 2011 From: create-soft at freenet.de (Torsten Knorr) Date: Sun, 6 Nov 2011 09:37:26 +0100 Subject: [Dresden-pm] Frage zur Implementation von einer Schnittstelle - Message-ID: <000201cc9c5f$51f61650$4722df5c@bigunix> Hallo Hans-Dietrich, > From hd.kirmse at gmx.de Sat Nov 5 13:51:29 2011 > From: hd.kirmse at gmx.de (Hans-Dietrich Kirmse) > Date: Sat, 05 Nov 2011 21:51:29 +0100 > Subject: [Dresden-pm] Frage zur Implementation von einer Schnittstelle - > Zweifellos ist das eine Schnittstelle, wenn auch eine sehr einfache. muß zugeben das meine Auffassung von Schnittstellen eine andere ist. Schnittstellen sind ein modernes Konzept aus der .NET-Programmierung und der Begriff hatt in den letzten Jahren dadurch zumindest für mich eine anderer Bedeutung bekommen. > Moose gibt (wenn ich das richtig verstanden habe). Aber Polymorphismus > wird letzlich auch mit Pointern/Referenzen umgesetzt, auch wenn man das > als Programmierer nicht mitbekommt Das obige Beispiel nutzt die Vererbungshierarchie, also keine Zeiger. Ein Ansatz mit Zeigern währe der folgende. #!/usr/bin/perl -w #*** main.pl ***# #------------------------------------------------ use strict; use Format; #------------------------------------------------ my $format = new Format(); print($format->{ref_function}()); #------------------------------------------------ #*** Format.pm ***# #------------------------------------------------ package Format; use AddOn; #------------------------------------------------ sub new { my ($class, %args) = @_; my $self = \%args; $self->{ref_function} = AddOn->can('UserNameFormat') || sub { return "Default Format\n"; }; bless($self, $class || ref($class)); return $self; } 1; #------------------------------------------------ #*** AddOn.pm ***# #------------------------------------------------ package AddOn; #------------------------------------------------ # sub UserNameFormat # { # return "AddOn Format\n"; # } 1; #------------------------------------------------ > hm, ich bin Laienkünstler ;) Ich habe mich noch nie mit bless & Co > abgegeben und werde das ganz bestimmt auch nicht machen, weil es ja > Moose gibt Moose ist natürlich vollkommen o.k. Aber gibst du deinen Schülern die rechnen lernen wollen gleich einen Taschenrechner? Gruß Torsten From ss5 at renormalist.net Tue Nov 29 01:55:13 2011 From: ss5 at renormalist.net (Steffen Schwigon) Date: Tue, 29 Nov 2011 09:55:13 +0000 (GMT) Subject: [Dresden-pm] Dresden Perl Mongers Treffen Dezember 2011 Message-ID: <20111129095513.3FDDA3F215B@h132974.serverkompetenz.net> It's easy to solve the halting problem with a shotgun. :-) -- Larry Wall Hi! Am Donnerstag treffen sich wieder die Dresden Perl Mongers. Achtung: Location rotation! Donnerstag, den 01. Dezember 2011 20.30 Uhr Kneipe "Terasse am Bischofsplatz" Bischofsweg 2 01097 Dresden Wir reden und hacken üblicherweise an unserem eigenen Kram rum und bieten ernsthaften Support rund um Perl-Einstiegsthemen wie * Code-Reviews * erstes CPAN-Modul bauen * Updates zu Perl[56], Parrot, Rakudo, Perlworkshop, YAPC und für Fortgeschrittene * Trost * Folklore * misc & etc Anfahrt, Termine, Themen manchmal auch hier: * http://dresden-pm.org/PM/TermineTreffen Jeder ist eingeladen. Grüße, Steffen -- Steffen Schwigon Dresden Perl Mongers From joerg.westphal at gmx.de Wed Nov 30 11:28:50 2011 From: joerg.westphal at gmx.de (=?iso-8859-1?q?J=F6rg_Westphal?=) Date: Wed, 30 Nov 2011 20:28:50 +0100 Subject: [Dresden-pm] Dresden Perl Mongers Treffen Dezember 2011 In-Reply-To: <20111129095513.3FDDA3F215B@h132974.serverkompetenz.net> References: <20111129095513.3FDDA3F215B@h132974.serverkompetenz.net> Message-ID: <201111302028.50688.joerg.westphal@gmx.de> > Donnerstag, den 01. Dezember 2011 > 20.30 Uhr Ich bin leider in München. Können wir noch ein kleines Dezembertreffen nachschieben? Gruß Jörg From ss5 at renormalist.net Wed Nov 30 11:35:05 2011 From: ss5 at renormalist.net (Steffen Schwigon) Date: Wed, 30 Nov 2011 19:35:05 +0000 Subject: [Dresden-pm] Dresden Perl Mongers Treffen Dezember 2011 In-Reply-To: <201111302028.50688.joerg.westphal@gmx.de> (=?utf-8?Q?=22J?= =?utf-8?Q?=C3=B6rg?= Westphal"'s message of "Wed, 30 Nov 2011 20:28:50 +0100") References: <20111129095513.3FDDA3F215B@h132974.serverkompetenz.net> <201111302028.50688.joerg.westphal@gmx.de> Message-ID: <87fwh5tndi.fsf@renormalist.net> Jörg Westphal writes: >> Donnerstag, den 01. Dezember 2011 >> 20.30 Uhr > > Ich bin leider in München. Können wir noch ein kleines Dezembertreffen > nachschieben? Kriegen wir sicher hin. Ich komm morgen trotzdem in die Schenke. Kind regards, Steffen -- Steffen Schwigon Dresden Perl Mongers