ruby

warning: Creating default object from empty value in /htdocs/OLD_velt.de/modules/taxonomy/taxonomy.module on line 1390.

Kommentare - in Python, Perl und Ruby

Durch einen Artikel im aktuellen Linux-Magazin (04/2008) bin ich auf das Portal Ohloh aufmerksam geworden. Das schöne an diesem Portal ist, dass sie die eingestellten Software-Projekte analysieren. Je Sprache kann man sich diverse Statistiken ansehen. Besonders lachen musste ich über die Anzahl der Kommentare in den 3 angesprochenen Sprachen:

Fangen wir mal mit meiner Interpretation bei PERL an:

Der Code ist klein (durch die schon angesprochenen Sonderzeichen...), dafür muss der Code einigermaßen ausführlich kommentiert werden, damit selbst der Programmierer nach 14 Tagen noch weiss, was er denn da angestellt hat.

Bei Python wird die Kommentierung am Anfang der Methode/Funktion vorgenommen, was das Ding gesamt macht. Eine Kommentierung des Codes ist nur an besonderen Stellen notwendig, da der Code für sich selbst spricht, man kann ihn sofort sinnentnehmend lesen. (Oder wie man es auch ausdrücken könnte: "Du musst Deinen Code kommentieren, damit jemand anders weiß, was Du da tust? Dann verwende die Zeit besser darauf, Deinen Code ordentlich zu schreiben!")

Die Interpretation für Ruby spare ich mir hier mal, sonst gibbet noch mehr Haue ;-)

Weitere Zahlen: C/C++: 20,0%, PHP: 27,9% - passt auch irgendwie ;->

Re^2: Sonderzeichen, nicht nur in Perl (was: Warum ich Ruby nicht mag…)

Naja, immerhin 3 Rückmeldungen öffentlich - und einige, die sich nicht getraut haben, es öffentlich zu machen ;-)

Hier also nun der schon versprochene 2. Teil zu Ruby... Was mir als erstes entgegengehalten wurde war, dass man

@names.each do |name|
puts "Hallo, #{name}!"
end

auch so schreiben kann:

for name in names do
puts "Hallo, " + name
end

<rant>
Wenn ich eine Sprache suche, in der die einfachsten Dinge mit 27 Gazillionen verschiedenen Möglichkeiten realisierbar sind, dann nehm ich PERL. Ich will anderer Leute Code lesen können, OHNE vorher die Sonderzeichen der jeweiligen Sprache studiert zu haben. Nachwievor IMHO das Argument gegen PERL. Und Ruby ist - siehe Kommentar und Trackbacks zum ersten Eintrag - nicht wirklich besser.
</rant>

Und wenn ich dann sowas im Code sehe wie

1.upto 3 do

dann muss ich ehrlich sagen: Nein, danke! Da schreib ich lieber noch ein wenig mehr Python-Code, der ist lesbar und selbst Python-Code von ganz anderen Leute (aka praktisch jedes Script, das ich mir aus dem Netz angesehen habe) kann ich lesen - ohne mich auf des Autors Eigenheiten einstellen zu müssen.

Sonderzeichen, nicht nur in Perl (was: Warum ich Ruby nicht mag...)

Ich bin mal wieder bei einem Ruby-Tutorial hängen geblieben und musste mir das unbedingt ansehen. Doch auf der vierten (und letzten Seite) wurde mir dann wieder bewusst, warum ich Ruby nicht mag:

@names.each do |name|
puts "Hallo, #{name}!"
end

Err, jaanee, is klar. Wozu "@names" (statt "names"), wieso "|name|" (statt "name") und warum zur Hölle "#{name}"? Bei dieser Ansammlung von Sonderzeichen hier kann ich gleich wieder Perl programmieren...

Apropos Perl:

foreach my $name (@NAMES) {
print $name."\n";
}

Sieht ja in dem Fall fast noch erträglich aus (IMHO erträglicher als Ruby, wobei man sich natürlich auch nach dem Sinn und Zweck des "@" fragen muss - insbesondere im Gegensatz/Vergleich zum "$". YMMV.)

Wie würde es in Python aussehen? So:

for name in names:
print "Hallo, %s!" % name
# Alternativ: print "Hallo, " + foo + "!"

Bei der Ausgabe fällt mir auf, dass wir schon bei PHP verflucht haben, dass man einfach "$name" irgendwo in den String reinschreibt (ähnlich wie bei dem Ruby-Beispiel oben) - so von wegen saubere Trennung von Variablen und Strings... Ja, geht bestimmt bei Ruby auch anders, ich weiß. Allgemein fällt mir dazu auf, dass da jede Sprach wohl so seine Eigenheiten hat. Ich hab mich in Python auf die "Platzhalter-Syntax" eingeschossen, ist mir symaptischer als die Alternativ-Variante.

PS: Kommentare ausdrücklich erwünscht!

Inhalt abgleichen
Powered by Olark