NavigationBenutzeranmeldungWer ist onlineZur Zeit sind 0 Benutzer und 6 Gäste online.
|
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: 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: 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: 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! Trackback URL for this post:http://www.velt.de/trackback/201 In the german Blog of a colleague of mine i found an entry about Ruby and non-alphanumeric chars. @names.each do Tja lieber Sven,
|
Da hast du etwas nicht ganz verstanden
Wenn du so drauf stehst, warum schreibst du nicht einfach
for name in names do
puts "Hallo, " + name
end
Ich komme aus der Rubyecke und gucke mir Python seit einiger Zeit an, und muss sagen das die *wirklichen* Unterschiede minimal sind. Ob ich jetzt self schreibe oder ein @ um eine Klassenvariable zu kennzeichen ist doch eigentlich schnuppe. Pythons ständige self.__sonstwas__ sind auch nicht besonders hübsch. Die unnötigen selfs halten sich ungefähr mit den unnötigen ends die Waage.
Ruby hat ein paar schöne Kniffe die mir fehlen, z.b. das ich die Kontrollbedingung nach hinten schieben kann, das Keywort unless (für if !=), die oder gleich schreibweise (@kontostand ||=0 anstatt @kontostand = 0 unless @kontostand), die Symbole (weil mein editor die anders darstellen kann als strings)... Dafür gefällt mir die Einrückung bei Python tausendmal besser als bei Ruby.
Das folgende Beispiel ist leider keine Seltenheit und wird durch die - meines Erachtens nach leichtsinnige - Konvention von nur zwei Leerzeichen pro Einrückungslevel noch verschärft
module Foo
class bar
attr_accessor :foobars
def foobar
@foobars.each do |foobar|
puts foobar
end
puts "barFoo!!!"
end
end
end
Ich finde allerdings, dass der Lernaufwand der benötigt wird um die Blocksyntax zu beherrschen, geringer ist als der Lernaufwand der erforderlich ist um Decorators, Listennotation und die anderen Techniken zu verstehen, die in Ruby allesamt mit den Block-Continuations realisiert werden. Trotz der sehr viel besseren Pythondoku ist Ruby besser strukturiert - die Objektorientierung ist so konsequent durchgezogen das man zumindest sehr schnell weiß wo man suchen muss - will ich etwas mit dateien machen gucke ich in der File class. Will ich etwas mit arrays machen gucke ich zuerst was ein Array-Objekt so kann. Von dem Standpunkt aus finde ich es ziemlich schade das Funktionen wie map() in Python nicht als Methoden von Collections implementiert sind.
Kommentar hinzufügen