[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: