Schrift
[thread]8345[/thread]

Erklärung zu wantarray (Seite 2)

Leser: 1


<< |< 1 2 3 >| >> 29 Einträge, 3 Seiten
Gast Gast
 2006-09-19 19:16
#70042 #70042
Quote
also, ich finde, das sind mutige Worte. Wantarray ist broken by deisgn, bzw. durfte dann auch als ein Beispiel für schlechtes API-Design in Damians Vortrag auf der EuroOSCON 2006 in Brüssel herhalten.


a) Find ich garnicht so "mutig," in dem Sinne wie due es darstellst.
Ich verwende wantarray() auch oft, und es hat mir nie Probleme
bereitet.

b) Nicht alles was Damien sagt, ist heilig. Seine Implementationen
haben auch genug Fehler, und die PBP sind auch nur Damiens Best
Practices. Cargo-Culting doesn't proof.
pq
 2006-09-19 19:42
#70043 #70043
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=Guest,19.09.2006, 17:16]b) Nicht alles was Damien sagt, ist heilig. Seine Implementationen
haben auch genug Fehler, und die PBP sind auch nur Damiens Best
Practices. Cargo-Culting doesn't proof.[/quote]
nein, die PBP sind nicht Damian's PBP. zumindest wenn ich mich recht
erinnere, hat er das auch im buch so geschrieben, dass es eine ansammlung
von best practices aus der perl-community ist.
ich denke nicht, dass relais damian für heilig hält. aber eine funktion, die
'wantarray' heißt und dann aber noch skalaren und void kontext
unterscheidet, finde ich auch unglücklich benannt.
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
renee
 2006-09-19 19:46
#70044 #70044
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=Relais,19.09.2006, 16:46][quote=renee,19.09.2006, 15:36]Das Verhalten von wantarray ist dokumentiert (perldoc -f wantarray) und ist somit ok.[/quote]
also, ich finde, das sind mutige Worte. Wantarray ist broken by deisgn, bzw. durfte dann auch als ein Beispiel für schlechtes API-Design in Damians Vortrag auf der EuroOSCON 2006 in Brüssel herhalten.

[...][/quote]
Ich wollte damit auch gar nicht sagen, dass es nicht verbesserungswürdig ist. Ich wollte damit nur ausdrücken, dass es kein unerklärliches Verhalten gibt. Jeder Zustand ist wohldefiniert (auch wenn der Rückgabe wert undef ist *fg*)
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Relais
 2006-09-19 19:52
#70045 #70045
User since
2003-08-06
2244 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=pq,19.09.2006, 17:42]ich denke nicht, dass relais damian für heilig hält.[/quote]
Korrekt, er sitzt gerade hinter mir in einer Art Kiste (oder zu klein geratenem Schrank, aber er ist ja nicht so groß). Soll ich ihn da mal hervorholen?

wantarray() ist auch nicht deshalb kaputt, weil Damian das sagte, es war schon kaputt, bevor ich je von Damian hörte. Es tut nicht das, was der Name impliziert, und es ist nicht so einfach nachzuvollziehen, warum es genau das tut, was es tut.
Das es genau so dokumentiert ist, ändert da auch nichts daran.
Erst denken, dann posten --
26. Deutscher Perl- u. Raku -Workshop 15. bis 17.04.2024 in Frankfurt/M.

Winter is Coming
sid burn
 2006-09-19 19:52
#70046 #70046
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Quote
nein, die PBP sind nicht Damian's PBP. zumindest wenn ich mich rechterinnere, hat er das auch im buch so geschrieben, dass es eine ansammlung von best practices aus der perl-community ist.

Im Buch schreibt er das dies seine Erfahrung der letzten 20 jahre als Perl Programmierer seien. Jedenfalls in der Deutschen Übersetzung.

@vayu
Das verhalten von wantarray() kannst du auch an den eingebauten Funktionen erkennen.

grep gibt im Skalarkontext die Anzahl der matches zurück, im Listenkontext die erfolgreichen Treffer.

Ein Array im Skalaren Kontext gibt seine Anzahl zurück, im Listenkontext halt seine Werte.

localtime gibt im Skalarkontext einen String mit dem Aktullen Datum/Zeit zurück, und im Listenkontext die einzelnen Werte der zeit.

u.s.w.

Perl macht doch ziemlich großen gebrauch davon. Mit wantarray() kannst du solche Kontextabhängigen Funktionen selber entwickeln.\n\n

<!--EDIT|sid burn|1158681201-->
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
renee
 2006-09-19 20:13
#70047 #70047
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=Relais,19.09.2006, 17:52][quote=pq,19.09.2006, 17:42]ich denke nicht, dass relais damian für heilig hält.[/quote]
Korrekt, er sitzt gerade hinter mir in einer Art Kiste (oder zu klein geratenem Schrank, aber er ist ja nicht so groß). Soll ich ihn da mal hervorholen?

wantarray() ist auch nicht deshalb kaputt, weil Damian das sagte, es war schon kaputt, bevor ich je von Damian hörte. Es tut nicht das, was der Name impliziert, und es ist nicht so einfach nachzuvollziehen, warum es genau das tut, was es tut.
Das es genau so dokumentiert ist, ändert da auch nichts daran.[/quote]
Was macht er denn in der Kiste?

Dass der Name unglücklich oder schlecht ist, da sind wir uns einig. Aber ich halte die Funktion nicht für kaputt. Wie heißt es so schön: Wenn's dokumentiert ist, ist es kein Bug sondern ein Feature...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Gast Gast
 2006-09-19 20:25
#70048 #70048
@tinita:
Quote
nein, die PBP sind nicht Damian's PBP. zumindest wenn
ich mich recht erinnere, hat er das auch im buch so geschrieben,
dass es eine ansammlung von best practices aus der
perl-community ist.


Die aber wohl zumindest er ausgewählt hat. Jedenfalls kann man
einige davon schon fraglich finden. Ich persönlich tue das
jedenfalls.

Quote
aber eine funktion, die 'wantarray' heißt und dann aber
noch skalaren und void kontext unterscheidet, finde ich auch
unglücklich benannt.


Über den Namen könnte man noch reden, auch wenn ich
persönlich denke, dass 90% aller Perl-Entwickler keine Ahnung
haben, was void-Context ist. Eine schlechte Benennung macht
aber eine Funktion noch nicht "broken by design."

@Relais
Quote
Es tut nicht das, was der Name impliziert, und es ist
nicht so einfach nachzuvollziehen, warum es genau das tut, was
es tut.

Doch, es ist ganz einfach nachzuvollziehen. Einfach in die
Dokumentation schauen. :)
Relais
 2006-09-19 21:33
#70049 #70049
User since
2003-08-06
2244 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=Guest,19.09.2006, 18:25]Doch, es ist ganz einfach nachzuvollziehen. Einfach in die
Dokumentation schauen. :)[/quote]
Genau, deshalb wird es auch so häufig ganz intuitiv verwendet.
Nee, es DWIMt einfach nicht, das ist schlecht, und das als Folge von schlechtem Design.

Schau mal die genannten Module an. Wenn wantaray bereits toll wäre, dann gäbe es die nicht.
Erst denken, dann posten --
26. Deutscher Perl- u. Raku -Workshop 15. bis 17.04.2024 in Frankfurt/M.

Winter is Coming
sid burn
 2006-09-19 23:27
#70050 #70050
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Quote
Die aber wohl zumindest er ausgewählt hat. Jedenfalls kann man einige davon schon fraglich finden. Ich persönlich tue das
jedenfalls.

Er schreibt aber auch direkt am anfang das man nicht jede Regel übernehmen muss. Problem ist halt das viele einfach Code schreiben ohne über ihr geschriebenes nachzudenken. Und das Buch soll einem klar machen, dass man mehr über seinem Code nachdenken soll. Was du ja letztendlich auch tust, und somit ein besserer Coder wirst. Ich denke nicht das man ein besserer Coder wird indem man einfach 1:1 die Regeln übernimmt. Man muss halt auch verstehen wann man es macht, und wann es besser ist, es nicht zu benutzen. Ich meine, wir Programmieren ja nicht in Python wo uns alles vorgekaut wird. ;)

Quote
Schau mal die genannten Module an. Wenn wantaray bereits toll wäre, dann gäbe es die nicht.

Naja obwohl ich dazu sagen muss das ich die benutzung von wantarray() nicht so schlimm finde, dass ich da unbedingt ein Modul benutzen muss.

Zum anderen bedeutet die existenz eines Moduls nicht das etwas schlecht ist. Es gibt auch Module womit man Lateinisch Coden kann, oder in einer Ruby Syntax. Oder das man den Punkt "." als Methodenaufruf anstatt "->" benutzt. Dies bedeutet ja auch nicht gleich das die komplette Syntax deswegen schlecht ist, und man gleich zu Ruby wechseln sollte.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
pq
 2006-09-20 01:59
#70051 #70051
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=Guest,19.09.2006, 18:25]Die aber wohl zumindest er ausgewählt hat. Jedenfalls kann man
einige davon schon fraglich finden. Ich persönlich tue das
jedenfalls.[/quote]
das überrascht mich nicht =)
mir geht es genauso. aber es war ja auch nicht sinn und zweck des
buches, dem leser zu sagen, was er zu tun oder zu lassen oder zu
denken hat, sondern es wurden bei jeder empfehlung die gründe
aufgezeigt, so dass zumindest ich beim programmieren häufiger
darüber nachdenke, *warum* eine schreibweise vielleicht besser
sein könnte als die andere. so habe ich einige gewohnheiten
geändert, ganz ohne 'zwang'.
Quote
Über den Namen könnte man noch reden, auch wenn ich
persönlich denke, dass 90% aller Perl-Entwickler keine Ahnung
haben, was void-Context ist.

pech. 'void' an sich ist nicht perl-spezifisch. wenn man ordentlich mit
einem buch oder guten tutorial prorammieren lernt, sollte man das
kennen.
das einzige, was da bei perl vielleicht anders ist, ist, dass man hier
keine funktionen als void deklariert, sondern erst beim aufruf
klarmacht: 'du bist jetzt im void context, also bemüh dich erst
gar nicht, mir einen sinnvollen return-wert zu geben.'

noch eine erfahrung dazu, die ich gerade erst auf der arbeit gemacht habe:
mehrere verschachtelte funktionsaufrufe, die alle wantarray benutzen,
können sehr verwirrend sein, da der kontext hier über mehrere
stufen weitergegeben wird. deswegen bin ich da relativ sparsam in der benutzung.\n\n

<!--EDIT|pq|1158703634-->
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
<< |< 1 2 3 >| >> 29 Einträge, 3 Seiten



View all threads created 2006-09-19 17:04.