Warum sollte ich Ruby lernen (noch so eine Hirnrissige frage)



  • Ruby ist ja eigentlich eine Art Smalltalk++, also wozu noch Smalltalk?
    (siehe Mixins, Metaprogramming usw.)



  • user-l schrieb:

    Schleierhaft bleibt mir, wieso man nicht gleich Smalltalk nimmt, statt einen jahrzehntelangen Umweg über verschiedene dynamische Skriptsprachen zu gehen, der letztendlich ohnehin wieder dorthin führt, wo Smalltalk schon immer ist.

    Meinst du syntaktisch an Smalltalk annähern oder vom Konzept? Beim Konzept ist Java ja teilweise schon recht nahe, mit Garbage Collector, Zwischencode und was-weiß-ich-nicht-was-alles. Ich denke syntaktisch hat sich über die letzten 20 Jahre klar die C-Syntax etabliert, kann sich aber natürlich auch noch ändern.



  • ich meine syntaktisch und konzeptuell, denn das hängt ja bei echter Objektprogrammierung stark voneinander ab.

    Wenn man die OO-Prinzipien "alles ist ein Objekt" und "alle Befehle sind Nachrichten an Objekte" streng beachtet, dann kann das Ergebnis eigentlich nur ähnlich wie Smalltalk aussehen, syntaktisch wie konzeptuell - die Syntax von Smalltalk besteht doch aus kaum mehr als dem Senden von Nachrichten, aus Blocks und aus einigen wenigen Syntaxelementen für die Vereinbarung von Konstanten.

    @smalltalk: finde ich nicht, eher --Smalltalk + 1/Perl + e^(-Python) 🙂



  • user-l schrieb:

    Mit "klar definierten Prinzipien" meine ich Dinge wie:
    Lisp: "alles ist eine Liste"; Smalltalk: "alles ist ein Objekt und jeder Befehl eine Nachricht"; usw.

    Wenn du hier einen Gegensatz zu Ruby siehst, behaupte ich, dass du dich mit dieser Sprache nicht hinreichend auseinander gesetzt hast.

    Übrigens liegen auch Python einige festgeschriebene Prinzipien zugrunde, darunter das Prinzip, für jeden Zweck ein (und nur ein) syntaktisches Element zu benutzen ("the Pythonic way of doing something").

    Und ich finde dieses Prinzip ist scheiße. Wenn du eine Zwangsjacke beim Programmieren brauchst, bitte. Ich zieh mir das nicht an.

    Zur Relevanz von Smalltalk, die du offenbar anzweifelst:

    Smalltalk ist das Resultat der Sprachenentwicklung, wenn man dynamische, objektorientierte Programmierung - eigentlich besser: Objektprogrammierung - zuende denkt.

    Ich bezweifle nicht den Verdienst von Smalltalk im Hinblick auf die Entwicklung von OO. Mit Relevanz meine ich die allgemeine Popularität und Präsens am Markt (was nichts über die Sprachqualität aussagt). Und hier kann Smalltalk nicht mithalten.

    Schleierhaft bleibt mir, wieso man nicht gleich Smalltalk nimmt, statt einen jahrzehntelangen Umweg über verschiedene dynamische Skriptsprachen zu gehen, der letztendlich ohnehin wieder dorthin führt, wo Smalltalk schon immer ist.

    Ein ewiges Mysterium....



  • jetzt machst du mich aber neugierig darauf, welche einfachen Prinzipien das sein könnten, die Ruby zugrundeliegen.

    "the Pythonic way" ist keine "Zwangsjacke", sondern die Einsicht, daß Lesbarkeit von Code wichtiger ist als syntaktische Finessen, vor allem, wenn der Code in einigen Jahren gewartet oder erweitert werden muß. Code wird nur einmal geschrieben, aber mehrmals gelesen.

    Aber es geht hier doch eigentlich gar nicht um "Ruby vs Python". Die Frage lautete "warum sollte ich Ruby lernen", und meine Meinung ist: Entweder wegen Rails oder gar nicht.



  • Leider habe ich weder Zeit noch Lust, dir Ruby-Nachhilfe zu geben, zumal mir die Erfolgsaussichten auch ziemlich beschränkt zu sein scheinen.



  • die Erfolgsaussichten wären eher schmal, das gebe ich zu. Schließlich hast Du weder meine Frage nach den 7 Ruby-Konstrukten für Closure-Ähnliches noch meine Frage nach den Ruby-eigenen "einfachen Prinzipien" beantworten können.

    Ruby ist nämlich alles Andere als einfach. Ruby ist ein syntaktisches Monster, wenn man es mal mit anderen dynamischen Skriptsprachen vergleicht.



  • Syntaktisches Monster? Ich glaube, du hast einfach nicht grade viel Ahnung wovon du redest. Wenn du Ruby die Daseinsberechtigung absprechen willst, dann kannst du das genauso auf Python umwälzen. Über Lesbarkeit kann man sich immer streiten, ich persönlich finde Ruby besser lesbar als Python. Aber wenn sich Ruby nur wegen Rails lohnt, für was lohnt sich denn dann Python? Django?
    Wenn Ruby so kompliziert und obsolet ist, warum hat sich dann innerhalb der Java-Plattform eine Sprache wie Groovy entwickelt und etabliert, die Ruby zum Vorbild hat und versucht, ein Brücke von Java zu Ruby zu schlagen?



  • wie heißt es so schön: "Es gibt zwei Sorten Programmiersprachen: die einen werden gelobt, die anderen werden verwendet."



  • user-l schrieb:

    wie heißt es so schön: "Es gibt zwei Sorten Programmiersprachen: die einen werden gelobt, die anderen werden verwendet."

    Smalltalk fällt dann wohl eher in Kategorie 1. Ruby allerdings definitv in Kategorie 2.



  • genau genommen verläuft die Trennlinie ja ein bischen woanders: solche Sprachen, die die Verkörperung eines (oder einiger weniger) vorgegebene(n/r) Prinzip(s/ien) sind, und solche, die das nicht sind.

    Die erste Sorte sind diejenigen Programmiersprachen, die nie verschwinden, obwohl sie nicht immer in Mode sind, da sie ähnlich wie mathematische Theoreme aus theoretischen Überlegungen heraus nunmal existieren - der Satz des Pythagoras verschwindet ja auch nicht, wenn sich niemand für ihn interessiert. Hierzu gehören Sprachen wie Forth, Lisp, Smalltalk, Tcl, Self, womöglich auch Algol, C und Python (obwohl dort die Prinzipen schon nicht mehr ganz so leicht zu erkennen sind), ...

    Die zweite Sorte ist der große Rest: Misch-Sprachen. Die können in Mode sein und aus der Mode kommen oder auch ganz verschwinden.

    Womit ich nicht sagen will, daß die zweite Gruppe schlechter als die erste ist. Sie enthält aber u.a. auch überflüssige Sprachen, die gegenüber den prinzipien-reinen Sprachen kaum oder nichts Neues bieten, oft mit übermäßig komplizierter Syntax.



  • user-l schrieb:

    ...womöglich auch Algol, C und Python (obwohl dort die Prinzipen schon nicht mehr ganz so leicht zu erkennen sind)

    für C findest du sie hier: http://www.artima.com/cppsource/spiritofc.html
    🙂


Anmelden zum Antworten