Schrift
[thread]8012[/thread]

Wann sind Prototypen sinnvoll

Leser: 2


<< |< 1 2 3 >| >> 27 Einträge, 3 Seiten
bloonix
 2006-05-23 14:33
#66491 #66491
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
Hallo Leute,

wie der Titel schon aussagt, stelle ich mir die allgemeine Frage,
wann Prototypen wirklich sinnvoll sind. Wie seht ihr das? Was
sind eure Meinungen?

Mein aller erster Gedanke war - das Kapitel Prototypen habe
ich gerade erst zu Ende gelesen -, dass Prototypen eigentlich
sehr nützlich sind, wenn man schon während der Kompilierung
auf Fehler hinweisen möchte und nicht erst beim Funktions-
aufruf aus einem Modul, denn dann sind eventuell schon einige
andere "Dinge" erzeugt und ausgeführt worden.

Natürlich gibt es dann Einschränkungen! Bei der Deklaration von

Code: (dl )
sub myfunc (\%) {}


sind Konstrukte wie diese hier

Code: (dl )
myfunc(x=>1,y=>2,z=>3);


nicht mehr möglich, aber genau darauf möchte ich hinaus.
Ich kann dann "Perl" die Suche nach Fehlern überlassen und
muss nicht mehr in meinem Modul die Prüfung übernehmen.
Der Autor des Moduls müsste sich nur noch über Inhalte
kümmern - nein, ich bin nicht faul :)

Wie seht ihr das?

Viele Grüße,
opi\n\n

<!--EDIT|opi|1148380650-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
Thorium
 2006-05-23 14:55
#66492 #66492
User since
2003-08-04
232 Artikel
BenutzerIn
[Homepage] [default_avatar]
Also ich persönlich finde Prototypen im allgemeinen Sinnvoll - nur benutze ich sie nie, weil ich dazu zu faul bin. ;)
Ich kann dir jetzt keine Faustregel nennen, wann sie Sinn machen und wann nicht. Wenn man die Schnittstellen seiner Programme jedoch sinnvoll aufbaut, und das Konzept auch durchzieht, dann sind Prototypen sicherlich hilfreich.
Es empfiehlt sich dann auch gleichzeitig, nur mit referenzen auf Arrays zu arbeiten.
aus deinem Code wird dann also
Code: (dl )
myfunc({x=>1,y=>2,z=>3});


Mehr hab ich dazu nicht zu sagen
Per|li|nist der; -en, -en <zu ↑...ist>: a) Anhänger, Vertreter der radikalen Perlinisten die Perl als die einzig wahre Sprache ansehen; b) Mitglied einer perlinistischen Community.
Linuxer
 2006-05-23 14:59
#66493 #66493
User since
2006-01-27
3875 Artikel
HausmeisterIn

user image
Hi,

Quote
... das Kapitel Prototypen habe ich gerade erst zu Ende gelesen ...


Hmm, auf welches Kapitel beziehst Du Dich hier?

Zu Deiner Frage kann ich Dir (noch) nichts konkretes sagen, da ich sie (Prototypen) bisher zu selten eingesetzt habe und noch nicht (für mich) über sie philosophiert habe ;)\n\n

<!--EDIT|Linuxer|1148381984-->
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
bloonix
 2006-05-23 15:34
#66494 #66494
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=Linuxer,23.05.2006, 12:59]
Quote
... das Kapitel Prototypen habe ich gerade erst zu Ende gelesen ...


Hmm, auf welches Kapitel beziehst Du Dich hier?[/quote]
Aus der Perlbibel:

Programmieren mit Perl, O'Reilly, 2. Auflage, Prototypen (S.233) werden in Kapitel 6, Subroutinen behandelt.\n\n

<!--EDIT|opi|1148384122-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
GwenDragon
 2006-05-23 16:11
#66495 #66495
User since
2005-01-17
14554 Artikel
Admin1
[Homepage]
user image
Sicher kannst du auch ohne Prototypen arbeiten.
Mit P. findest du schneller falsch übergebene Parameter, finde ich.
Zudem freuen sich andere, denn die Angabe von P. macht den Code besser lesbar und verständlich.

P. sind eben ein paar Sicherheitsgurte oder Airbags mehr ;)\n\n

<!--EDIT|GwenDragon|1148386420-->
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

Linuxer
 2006-05-23 16:23
#66496 #66496
User since
2006-01-27
3875 Artikel
HausmeisterIn

user image
[quote=opi,23.05.2006, 13:34]Aus der Perlbibel:

Programmieren mit Perl, O'Reilly, 2. Auflage, Prototypen (S.233) werden in Kapitel 6, Subroutinen behandelt.[/quote]
Hm, OK, danke für die Info. Jenes Buch, was ich bis dato noch nicht gelesen habe ...
Irgendwann wird sich das auch nochmal in meinem Besitz wiederfinden.
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
sri
 2006-05-23 16:51
#66497 #66497
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
Bei meinem neuesten Projekt (Mojo) benutze ich sehr exzessiv Prototypen.
Allerdings nicht um Fehler zu finden sondern um den Perl Compiler zu beeinflussen.

Die beiden folgenden Beispiele sehen sehr aehnlich aus, verhalten sich aber komplett unterschiedlich.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package Foo;
print "Example 1\n";

sub on  { print "on $_[0]\n" }
sub run { print "run $_[0]\n" }

on foo => run { print "foo!\n" };

package Bar;
print "Example 2\n";

sub on ($@)  { print "on $_[0]\n" }
sub run (&@) { print "run $_[0]\n" }

on foo => run { print "foo!\n" };
Ronnie
 2006-05-23 20:15
#66498 #66498
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
@sri: Danke, schönes Beispiel - auch wenn ich mir noch das Hirn zermatere wozu es alles nützlich sein kann. Du verwendest es um domain-specific-languages zu erzeugen, richtig?
sri
 2006-05-23 23:32
#66499 #66499
User since
2004-01-29
828 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=Ronnie,23.05.2006, 18:15]Du verwendest es um domain-specific-languages zu erzeugen, richtig?[/quote]
Genau, die meisten sagen dazu uebrigens "Deklarative Syntax".
ptk
 2006-05-24 00:20
#66500 #66500
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Ich benutze es gerne, um die sub { ... }-Syntax auf { ... } zu verkürzen. Also z.B.:
Code: (dl )
1
2
3
save_pwd {
...;
};

statt
Code: (dl )
1
2
3
save_pwd(sub {
...;
});

Leider ist das abschließende Semikolon weiterhin notwendig.
<< |< 1 2 3 >| >> 27 Einträge, 3 Seiten



View all threads created 2006-05-23 14:33.