Re: [OT] Python oder Perl
Thorsten Haude <debian@thorstenhau.de> wrote:
>>import os
>>list = os.listdir('/tmp')
>>for filename in list:
>> print filename,
>> if os.path.isdir(filename):
>> print "is a directory"
>> else:
>> print "is a regular file"
>
> Wenn ich mal raten darf, was Python macht, sieht das in Ruby so aus:
>
> dir = Dir.new('/tmp')
> dir.each { |filename|
> print filename
> if filename.stat.directory?
> print "is a directory"
> else
> print "is a regular file"
> end
> }
>
> Hm. Auch nicht groß anders. Die Unterschiede kommen wahrscheinlich
> eher bei größeren Sachen raus.
Naja, ich kenne keine der beiden Sprachen, finde aber trotzdem gleich
einige Unterschiede:
- Python verwendet die in tausend Sprachen geläufige Syntax "for <name>
in <liste> <separator> <body>", während Ruby offenbar sowas macht:
"<Kommando_das_liste_produziert> { | <name> | <body> }, das finde ich
schwer lesbar (vor allem wenn ich mir vorstelle wie ich das dann von
while, until, etc. unterscheiden soll).
- Python verwendet zum Erstellen der Liste ein Kommando mit intuitiv
verständlichem Namen (os.listdir('<directory>'), Ruby dagegen offenbar
ein Suffix .each hinter dem Namen der Variable, die auf das
Verzeichnis zeigt. Das finde ich schon in diesem Fall ungewohnt, und
wenn ich mir vorstelle, dass das Verzeichnis nicht in "dir" steckt,
sondern in "newplace" oder "wget_target" oder so, wird es noch
schwerer. Zumal dann, wenn .each auch auf anderen Dingen als
Verzeichnissen agieren kann (z.B. URLs oder Datenbank-dingsens).
- und schließlich finde ich das Fragezeichen hinter .stat.directory
(oder steht es hinter if <test>?) irgendwie albern, aber vielleicht
ist das etwas, was man sehr schätzen lernt: Kommandos, die einen
Wahrheitswert zurückliefern, haben hinten ein Fragezeichen.
Allerdings nur wenn man akzeptiert, dass es Kommandos gibt, die keinen
Wahrheitswert zurückliefern. Ich finde in Perl sehr praktisch dass es
die nicht gibt.
Gruß, Frank
--
Frank Küster
Inst. f. Biochemie der Univ. Zürich
Debian Developer
Reply to: