CakePHP vs. Ruby on Rails – Teil 3: Runde 2 – Die Basis: Ruby und PHP

25. Jun 2008

Will man Frameworks erlernen, sollte man sich zumindest rudimentär (besser natürlich sehr gut) mit der dahinterliegenden Sprache auskennen. Da ein großes Rundumschlag den Rahmen einer Serie sprengen würde, gibt es an dieser Stelle einen kleinen Vergleich der nackten Zahlen sowie ein Beispiel, wie man ein kleines Programm mit Ruby und PHP erstellt.

Zuerst zu den Zahlen:

PHP:

  • Erscheinungsjahr: 1995
  • Aktuelle Version: 5.2.6
  • Einflüsse: Perl, C, C++, Java
  • Betriebssystem: plattformunabhängig
  • Webseite: www.php.net

Ruby:

  • Erscheinungsjahr: 1995
  • Aktuelle Version: 1.8.7
  • Einflüsse: Smalltalk, Perl, Python und andere
  • Betriebssystem: plattformunabhängig
  • Webseite: www.ruby-lang.org

(Quelle: Wikipedia)

Nun ein paar Zahlen zur Verbreitung (Grobe Schätzung nach Google)
Suchergebnisse:
PHP: 11.100.000.000 bei dem Suchwort php
Ruby: 119.000.000 bei dem Suchwort ruby

Diese Zahlen sind natürlich wenig aussagekräftig, da bei php alle Seiten, die auf .php enden, in das Ergebnis mit einfließen und bei ruby natürlich noch viele andere Rubine versteckt sind.

gtrends
Die Google Trends Anzeige spricht sich auch für PHP aus, es ist also durchaus möglich, dass PHP weiter verbreitet ist. Da Ruby zwar im gleichen Jahr “geboren” wurde wie PHP, sich aber aufgrund der Dokumentation und der fehlenden Fixierung auf das Internet nicht wie PHP zur Standardsprache im Netz aufschwingen konnte, hat PHP inzwischen die Nase deutlich vorne, jedenfalls für Webanwendungen (dessen Frameworks wir ja in dieser Serie vergleichen).

Der Code:
Guter Code steigt und fällt mit der Lesbarkeit. Es bringt nichts, den performantesten Code der Welt zu haben, wenn man Jahre braucht, um ihn zu lesen. Ein kleiner Vergleich des Lesbarkeit:
Zuerst das PHP Beispiel:

  1. <?php
  2.         if ($leser == "blog") {
  3.                 echo "Hallo Blogleser";
  4.         } else {
  5.                 echo "Hallo Welt";
  6.         }
  7. ?>

Und nun das Äquivalent in Ruby

if leser == “blog”
puts “Hallo Blogleser”
else
puts “Hallo Welt”
end

(Ruby Highlighting im Blog sollte bald funktionieren)

An diesem wirklich einfachen Beispiel können wir bereits einen Hauptunterschied in der Lesbarkeit des Codes feststellen. Während PHP stark auf Klammern, Semikolons und co setzt, liest sich die Ruby Anwendung viel eleganter, obwohl man dort auch Klammern zum Einsatz bringen kann (und in vielen Fällen auch sollte).

Was steckt dahinter
Ruby ist eine objektorientierte Sprache. Alles in Ruby ist ein Objekt, es gibt keine primitiven Datentypen (wie etwa Zahlen in PHP). Hier liegt der große Vorteil von Ruby, denn durch die konsequente Objektorientiertheit passt sich Ruby an den Programmierer an. Man kann die vielen Vorteile der Objektorientiertheit nutzen, muss es aber nicht zwangsläufig tun. Dies macht auch einen Umstieg von anderen Sprachen auf Ruby zeitweise sehr einfach. PHP dagegen setzt erst seit der Version 5 auf eine gute objektorientierte Umgebung und hat noch viel aufzuholen, da oft auch alte PHP Projekte, die noch auf Version 4 laufen, am Leben gehalten werden müssen.

Was ist schneller
Es gibt ja den Spruch “Twitter can’t scale”, der vor allem in Amerika populär ist, wo Twitter viel genutzt wird. Twitter basiert auf Rails und stürzt häufig unter der Userlast ab. So könnte man meinen, PHP sei schneller und belastbarer wie Ruby, dies ist jedoch ein Trugschluss (Ich verweise hier auf diesen Eintrag: Ruby on Rails: scaling to 1 billion page views per month). Die Geschwindigkeit hängt von einem entscheidenden Kriterium ab: dem Programmierer. Ohne einen guten Programmierer werden ruby und php langsamer.

Was lässt sich leichter erlernen?
Dies ist auch eine Frage, die man so nicht ohne weiteres beantworten kann, es kommt auf die Vorkenntnisse des Programmierers an. Kommt dieser aus der C Ecke ist ihm wohl PHP näher, Smalltalk Programmierer fühlen sich bei Ruby wohl. Viele Bücher, die sich mit “Webprogrammierung für Anfänger” beschäftigen, beginnen mit PHP, was sich aber inzwischen fast als Schimpfwort für echte PHP Entwickler etabliert hat.

Fazit:
In dieser Runde ist es schwer, ein Fazit zu ziehen. PHP ist weiter verbreitet, Ruby hat die bessere Lesbarkeit und eine automatische Dokumentation, “Twitter can’t scale” und andere Programme schaffen doch 1 Milliarde Pageviews mit Rails. Ich (als Schiedsrichter im Ring) entscheide mich hier allerdings für Ruby, da man, wenn man häufig zwischen PHP und Ruby wechselt, sich leichter wieder in Ruby wie in PHP reinfindet. Ruby lässt sich durch die konsequente Objektorientierung und die fehlenden Klammern und Pfeile leichter und schneller schreiben. Damit steht es:

CakePHP 0 : 2 Ruby on Rails

Ruby on Rails mit einem kleinen Vorsprung. Doch wie geht es weiter?

Morgen ist aufgrund der Termindichte leider kein neuen Kapitel geplant, daher wird es wohl am Freitag den dritten Teil der Serie geben.

Kategorie: Cake vs Rails | 7 Kommentare »


Veröffentlicht am Mittwoch, den 25. Juni 2008 um 14:21 Uhr veröffentlicht

Du kannst einen Kommentar schreiben, oder einen Trackback auf deiner Seite einrichten.

7 Reaktionen zu “CakePHP vs. Ruby on Rails – Teil 3: Runde 2 – Die Basis: Ruby und PHP”

 

  1. Patrick Am 26. Juni 2008 um 09:04 Uhr

    Der oben gezeigte Code ist meiner Meinung nach ein schlechtes Beispiel um die Unterschiede der Syntax aufzuzeigen, da man das in PHP auch ohne Klammern haette schreiben koennen.

    Greetings

  2. dievo Am 26. Juni 2008 um 09:12 Uhr

    Hmm, also wenn ich in dem PHP Beispiel die Klammern weglasse, meckert er rum, dass er keine Klammern findet. Man kann das Beispiel zwar mit einem tenary operator auch fast ohne Klammern schreiben, allerdings ging es ja in diesem Beispiel explzit um die Darstellung von Sourcecode. Und eine if/else Anweisung finde ich für diesen Zweck sehr deutlich. Aber wenn du diese if else Anweisung in PHP ohne klammern schreiben kannst, ich lerne gerne dazu :-)

  3. Patrick Am 26. Juni 2008 um 10:46 Uhr

    Ich weiss ja nicht wie du dein PHP konfiguriert hast, aber bei einzeiligen if-else-Anweisungen braucht man eigentlich keine Klammern.

    Hab’s grad extra noch mal auf mehreren Domains und lokal getestet und bei mir funktioniert das auch ohne Klammern.

  4. dievo Am 26. Juni 2008 um 10:59 Uhr

    Ah, wir reden aneinander vorbei. Natürlich kann man einzelne If/Else Anweisungen ohne GESCHWEIFTE Klammern schreiben, allerdings nicht ohne einfache Klammern. Hab das ganze zum besseren Verständnis noch einmal in ein NoPaste gepackt.
    http://phpfi.com/327047

  5. Patrick Am 26. Juni 2008 um 11:22 Uhr

    Ok, wir haben wirklich ein wenig aneinander vorbeigeredet… ;)

    Die normalen Klammern find’ ich jetzt auch gar nicht so schlimm, im Gegenteil, sie bringen meiner Meinung nach ein wenig mehr Ordnung in den Code.

  6. Martin Am 29. Oktober 2008 um 00:51 Uhr

    Ich würde mich freuen wenn ihr eure Serie weiterführen würdet.
    Habe schon öfters zu Rails ‘rübergeschaut’ aber einen detailierten Vergleich habe ich noch nicht gelesen.
    Grüße

  7. dievo Am 29. Oktober 2008 um 08:38 Uhr

    Wir arbeiten dran :) Demnächst gibts neue Folgen dieser Serie, sobald diese verfluchte Messe rum ist… *grins*

Einen Kommentar schreiben

Du mußt angemeldet sein, um kommentieren zu können.