Login
Newsletter
Werbung

Thema: Ruby 2.0 veröffentlicht

16 Kommentar(e) || Alle anzeigen ||  RSS
Kommentare von Lesern spiegeln nicht unbedingt die Meinung der Redaktion wider.
0
Von ruby tuesday am Mo, 25. Februar 2013 um 17:21 #

schau in den betreff

[
| Versenden | Drucken ]
  • 0
    Von fsfs am Mo, 25. Februar 2013 um 18:24 #

    Leute, die Sinatra oder OctoPress verwenden.
    Unabhängig davon finde ich aber schon beeindruckend, was manche Leute mit Rails umsetzen, schaut man sich GitHub oder Discourse an.

    [
    | Versenden | Drucken ]
    0
    Von fsfs am Mo, 25. Februar 2013 um 18:27 #

    Ach ja: Leute, die mruby in ihre Anwendungen einbetten. Z.B. das Spiel Eversion macht davon Gebrauch.

    [
    | Versenden | Drucken ]
    0
    Von !ICKE! am Mo, 25. Februar 2013 um 19:24 #

    Ich benutz das als Allzeweckskriptsprache. Bash, Perl oder Python tu ich mir nicht mehr an.

    [
    | Versenden | Drucken ]
    • 1
      Von Bolitho am Mo, 25. Februar 2013 um 19:29 #

      Also Bash und Perl kann ich ja verstehen, aber was genau unterscheidet Ruby jetzt von Python derart, dass Du es auf eine "höhere" Stufe rückst? *wunder*

      [
      | Versenden | Drucken ]
      • 0
        Von Oha am Mo, 25. Februar 2013 um 19:48 #

        was genau unterscheidet Ruby jetzt von Python
        Mein vi ist besser als Dein Emacs.

        [
        | Versenden | Drucken ]
        • 0
          Von Bolitho am Mi, 27. Februar 2013 um 20:33 #

          Python und Ruby sind von der Ausdrucksstärke auf einem Level - die Bash sicher nicht. Gegen Perl spricht einfach das übliche Perl Gebashe :-D

          Insofern war meine Frage kein Flameanstoß, sondern durchaus ernst gemeint. Ich sehe hier nämlich keinen Unterschied, der so eine Abstufung rechtfertigte.

          [
          | Versenden | Drucken ]
        0
        Von heidideldei am Di, 26. Februar 2013 um 01:32 #

        Z. B. gibt es in Ruby nicht die sinnfreie Unterscheidung zwischen Statements und Expressions. Das führt dann in Python zu solchen Beschränkungen wie dass man keine Schleife in einem Lambda verwenden kann, weil ein Lambda immer nur einen Ausdruck enthalten kann. Ich persönlich finde auch die Sigils ganz nett, @x ist einfach kürzer als self.x und genauso klar, wenn man diese Syntax gewöhnt ist.

        [
        | Versenden | Drucken ]
        • 0
          Von LH_ am Di, 26. Februar 2013 um 19:19 #

          "@x ist einfach kürzer als self.x und genauso klar, wenn man diese Syntax gewöhnt ist."

          Aber genau das ist das Problem: Die Python-Syntax ist so gewählt, das man vieles gar nicht erst erlernen muss, man soll den Code möglichst leicht und ohne Vorwissen verstehen.
          Natürlich ist immer etwas Vorwissen nötig, aber für jemanden mit ein wenig OOP Erfahrung dürfte self.x selbsterklärend sein, @x ist es aber nicht.

          [
          | Versenden | Drucken ]
          0
          Von panzi am Mi, 27. Februar 2013 um 03:39 #

          Es gibt durchaus Aspekte an Ruby die ich mag, wie z.B. Blöcke. Aber dann gibt es sehr viele Punkte in denen ich Python bevorzuge:

          Syntax

          Auf den ersten Blick mögen so Dinge wie suffix-ifs eine nette Idee sein, ich hab aber schon öfters Code gesehen, bei dem irgendwann am Ende eines langen Blocks plötzlich so ein if steht, und somit mein mentales Modell des gerade gelesenen Codes zerstört. Ist doch alles anders. Und unless ist auch so eine Sache. Vor allem komplexere Bedingungen lesen sich leichter als if. Zuweisungen in Ausdrücke sind auch böse. Die Ambiguität zwischen Blöcken und Hash-Literalen in manchen Fällen nervt auch.

          Leaking Functions

          In Ruby ist das return Keyword optional. Der letzte Wert wird immer zurückgegeben. Wenn die Funktion nichts zurückgeben soll (also streng genommen eine Prozedur ist), muss man explizit nil am Ende schreiben. Nah das wird wer machen. Also hat man nun unzählige Funktionen, die Sachen zurück geben, bei denen man sich nicht sicher sein kann ob das nur ein unabsichtlicher Seiteneffekt ist. Da muss man hoffen, dass die Funktion ausreichend dokumentiert wurde.

          Shell Injections/Subprocesses

          In Ruby 1.8 gibt es keinen Weg Injection-sicher Subprozesse aufzurufen und gleichzeitig den Ouput zu fangen. Die ` ` Syntax ist einfach nur Horror, weil es da natürlich alle Parameter zerlegt und in 1.8 kann man IO.popen nur einen String, kein Array, übergeben. Man müsste also Parameter selber escapen. Nur ist das OS (bzw. Shell) abhängig.

          $-Variablen

          Manche Dinge setzen kryptische $-Variablen als Seiteneffekte. Manchmal sogar als Globale Variablen (z.B. system und ` `)! Glaobal state. OMG.

          Truth

          Der Numerische Wert 0 ist in Ruby true. Zumal das in allen anderen (gängigen/mir bekannten) Sprachen in denen ein Numerischer Wert als Wahrheitswert verwendet werden könne false ergibt, ist das mal wieder eine super Bug Quelle. Ich hätte nichts dagegen, dass wenn man einen nicht-boolschen Wert in einer Bedingung verwendet man eine Exception bekommt. Das währe nur konsequent und würde solche Fehler verhindern. Aber so geht das gar nicht.

          Es gibt keinen Bool(ean) Typen

          Man muss echt überprüfen, ob eine Variable den Typen TrueClass oder FalseClass besitzt. Wessen geniale Idee war das den bitte? In der Typsysteme Vorlesung gepennt?

          Redundante Methodennamen

          Was soll das? Warum gibt es z.B. size und length? Was ist der Unterschied? Keiner? Warum gibts das dann? Und manchmal (z.B. ActiveRecord) gibt es auch ein count das ohne Parameter auch das selbe macht (naja, so ca.). Das führt zu super einheitlichen Code.

          Mutable Strings

          Wessen Idee war das schon wieder? In einer OO garbage collecteden Sprache kann man Strings doch nicht mutable machen! Wenn ich irgendeinem Objekt in einen Setter einen String übergebe erwarte ich das der Wert so bleibt wie er ist, aber bei mutable Strings kann der zu jeder Zeit unabhängig geändert werden. Es gibt kein const in solchen Sprachen! Genauso sollte man Listen nicht als Hash Keys verwenden dürfen. Für sowas sollte es Tupel geben.

          Nix vergleichbares zu urllib2

          Pythons urllib(2) ist ziemlich nett zu verwenden und sehr einfach zu erweitern. Hab z.B. mit ein paar Zeilen data:-URL Support hinzugefügt. Eine vergleichbare API gibt es für Ruby zumindest nicht in der stdlib.

          Builtin Methodennamen

          Ich mag Python's __*__ Namenskonvention für builtin Methodennamen. Wenn ich dann mit dir(obj) mir die Attribute und Methoden anzeigen lasse sind die __*__ Methoden an den Anfang sortiert und ich kann sie einfach ignorieren. Mit so Methodennamen wie "instance_variable_get" geht das nicht.

          Ruby hat ein paar gute Ansätze, wurde aber mit extrem viel Müll verunstaltet, der offensichtlich von Leuten erdacht wurde, die keine Vorlesung zu Programmiersprachen/Typsysteme besucht haben.

          [
          | Versenden | Drucken ]
    0
    Von christianw am Di, 26. Februar 2013 um 10:13 #

    Nutze es als Allzwecksprache. PHP ist seit Ruby (on Rails) für mich gestorben. Python war aufgrund der Syntax nie eine Option für mich und Perl habe ich zur Seite gelegt als ich mir die Objektorientierung von Perl angeschaut habe. Ich verwende Ruby auch an Stellen wo man eher Shellscripting verwenden würde, da mir Shell in vielerlei Hinsicht auch nicht gefällt. Die Frage sollte eher lauten: Wer nutzt Ruby bitte nicht? ;)

    [
    | Versenden | Drucken ]
    • 0
      Von zettberlin am Di, 26. Februar 2013 um 11:13 #

      > Die Frage sollte eher lauten: Wer nutzt Ruby bitte nicht?

      Gute Frage -- mach doch mal ne Umfrage. Ich vermute, unter den folgenden Programmieren haben die meisten noch nie etwas praktisches mit Ruby gemacht:

      - Java Programmierer
      - Webprogrammierer, die sich an PHP gewöhnt haben, weil das so weit verbreitet ist und für alles irgendwie funktioniert
      - Leute, die Desktopsoftware in Python schreiben
      - C/C++ Leute


      Kurz: alle, die etwas anderes gelernt haben, das für sie funktioniert und die keine Zeit/Lust oder keinen Bedarf haben, etwas anderes zu lernen.
      Dass etwas gut ist und gut funktioniert bedeutet nicht, dass es auch von vielen benutzt wird.

      Dieser Beitrag wurde 2 mal editiert. Zuletzt am 26. Feb 2013 um 14:54.
      [
      | Versenden | Drucken ]
      0
      Von ms123 am Mi, 27. Februar 2013 um 17:15 #

      Leute die eine Programmiersprache für sich sterben lassen können, haben noch nichts sinnvolles programmiert!
      Auch wenn ich von Java weg wollte,
      was mache ich mit meinen, zum Teil mehr als 10 Jahre alten, Kundenprojekten?
      Neu schreiben? Das zahlt kein Mensch!

      Natürlich probiert man bei kleineren Geschichten mal was Neues.
      Aber so revolutionär sind Python,Ruby und Konsorten auch wieder nicht.

      Und ob man drei Zeichen bei einem Statement mehr oder weiniger eingeben muss, ist doch Bullshit.
      Man schreibt doch sowieso nichts aus.
      Das macht der Editor.

      [
      | Versenden | Drucken ]
      • 0
        Von christianw am Mi, 27. Februar 2013 um 17:35 #

        Bei ruby sind es vor allem die Konstruke die Möglich sind die es bei PHP nicht gibt. Außerdem ist die Möglichkeit Ruby zu erweitern dank Gems extrem einfach.

        Kann sein dass es sowas auch in Perl oder Python gibt, in PHP meines Wissens aber noch nicht:
        3.times { puts "Hello" }
        nicht sonderlich sinnvoll, aber teilweise braucht man solche Konstrukte eben doch und sind dann doch einfacher und leserlicherlicher als eine for-Schleife.

        Ruby ist sicherlich nicht perfekt und auch nicht für jedermann, aber ich denke die Aufgaben für die es verwendet wird, erfüllt es schon sehr gut und ich habe bisher keinen getroffen der mit Ruby gearbeitet hat und pauschal sagte, dass es er/sie es schlecht findet.

        [
        | Versenden | Drucken ]
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung