Ersetzt Node.js PHP, Ruby und co?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Ersetzt Node.js PHP, Ruby und co?

    Hallo,

    ich weiß, ein sehr provokanter Titel für diesen Beitrag. Aber ich finde ihn irgendwie passend.

    Mir geht es hier um Node.js und das Potential, welches es besitzt. Ich stehe nämlich vor der Frage, ob ich mich nicht intensiver mit Node.js beschäftigen sollte. Gründe dafür gibt es einige: Neulich habe ich ein Support-Chat umsetzen dürfen. Dabei habe ich festgestellt, dass es nicht nur schneller (in der Entwicklung) und sparsamer (für die Serverressourcen) ist, sondern auch eleganter einen solchen Chat via Node.js zu realisieren. Daneben bin ich aber etwas unsicher was die Auslieferung von statischen Dateien angeht. Und wenn ich ehrlich bin, ich hab PHP echt gerne, da es so schön simpel ist. Aber man muss mit der Zeit gehen und auch wenn durch die Skalierbarkeit der Webserver fast immer ein passender Rahmen für die Applikation auf PHP-Basis zur Verfügung steht, ist es einfach wirtschaftlicher weniger Ressourcen zu veranschlagen.

    Ich habe angefangen mal in den Guide vonFelix Geisendörfer zu schauen (nodeguide.com/). Und auch wenn mir gefällt was ich lese, kann ich nicht restlos alle Zweifel ablegen. Darum würde ich gerne mal Feedback von euch haben. Habt ihr Node.js im Einsatz? Was wurde, wenn so passiert, mit Node.js ersetzt? Welche Art von Applikationen habt ihr schon realisiert? Welche Frameworks habt ihr da ggf. genutzt?

    Und warum findet ihr, könnten PHP oder Ruby gegen Node.js verlieren?

    Zu PHP: Ich glaube, es liegt zu großen Teilen an PHP (bzw. den Entwicklern) selbst (oder am Core), dass es mehr und mehr kritisiert wird. Es fehlt einfach an einer Dynamik innerhalb der Sprache. Man müsste sich von den Altlasten befreien und den Schritt zu einer besseren Sprache wagen. Aber solange das nicht passiert, sehe ich irgendwie schwarz. Man muss sich wirklich mal die Benchmarks ansehen. Und wenn wir ehrlich sind, Applikationen wie Typo3 (und teils auch Wordpress) verlangen für den Funktionsumfang und für die Aufgabe (die sie erfüllen sollen) einfach viel zu viel Rechenleistung.

    Ruby ist da schon etwas anders. Die großen Leistungsdefizite wie PHP haben wir hier nicht. Jedoch werden auch hier die Prozesse geblockt bzw. werden sie bis zum Abschluss des Lese/Schreibvorgangs gesperrt (abgesehen davon, brauchen wir hier halt auch einen Webserver als Gateway). Das macht Node.js halt zu einem Killer-Feature.

    Einen sehr sehenswerten Beitrag dazu findet ihr hier: youtube.com/watch?v=4iFBC-xbE9I

    Kritik (it-republik.de/php/news/Ist-Node.js-schlecht-061730.html) gibt es natürlich auch (also an Node.js).

    Ich bin, wie man sicherlich aus meinen Beitrag entnehmen kann, nicht ganz überzeugt von Node.js. Geht es euch anders? Oder genauso? Oder wisst ihr warum PHP sterben wird? Oder könnte ihr sagen, wieso PHP eben nicht wegen Node.js eingehen wird?

    Und jetzt bin ich auf Kommentare gespannt.

    Edit: Eine andere Frage: Angenommen ihr würdet einen Blog erstellen wollen (also Serverseitig), in welcher Sprache würdet ihr das machen?

    Edit2: Hier noch ein Nachtrag bezüglich der Bedeutung von Javascript (und somit auch zu Teilen node.js): sitepoint.com/best-programming-language-of-2013/
    =O

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von bastey ()

  • Prinzipiell habe ich ähnliche Zweifel an PHP. Die Performance ist suboptimal, die ganzen globalen Funktionen sind nervig und es gibt keine Perspektive, dass sich einiges verändert (auch wenn die Performance jeden PHP Release besser wird).

    Gibt es eine Application Server Integration bei der ich Objekte persistent im Speicher halten kann?
    Node.js bringt den Application Server Stack gleich mit. Check!

    Was ist mit Threads im Web Context?
    Node.js predigt wie toll Event Driven Programmierung ist, weil man so Prozesse parallelisieren kann. Aber letztendlich erlaubt die Syntax (JavaScript) auch ohne Event Driven Programmierung zu arbeiten. Wie finden wir das?
    Naja, einerseits steht es für Flexibilität, andererseits heißt dass für mich, dass ich nicht sicher sein kann wie gut die Software parallelisiert.
    Warum also nicht gleich eine Programmiersprache verwenden in denen die Sprache vorgibt, dass alles parallelisiert werden kann? Clojure kennt keine Zustände, es kennt keine Variablen, sondern nur Funktionen.

    Ich bin ein großer Fan der JVM geworden.
    Alle JVM Sprachen wie Scala, Groovy, Clojure haben das JVM als kleinsten gemeinsamen Nenner. Sie können alle miteinander kommunizieren und können von den vielen vorhandenen Java Bibliotheken Gebrauch machen.

    Ich kann problemlos Recommender Frameworks oder exotische Datenbank Backends einbinden.
    Für Node.js ist mir diese Auswahl einfach zu klein.
  • Hab hier noch einen netten Blogpost zum Thema gefunden: community.oreilly.de/blog/2013…-und-stabiles-javascript/

    Gibt es eine Application Server Integration bei der ich Objekte persistent im Speicher halten kann?
    PHP bringt zwar Memcache bzw. APC mit, das ist aber auch nicht unbedingt etwas womit ich eine Enterpriseapplikation realisieren würde. Das ändert nämlich nichts am Kernproblem von PHP. Aber PHP wurde halt (damals) nicht unbedingt für Arbeiten im Filesystem oder mit Datenbanken konzipiert. Da ist es sehr unterhaltsam, was mit PHP heute alles gemacht wird.

    Node.js predigt wie toll Event Driven Programmierung ist, weil man so Prozesse parallelisieren kann. Aber letztendlich erlaubt die Syntax (JavaScript) auch ohne Event Driven Programmierung zu arbeiten. Wie finden wir das?
    Naja, einerseits steht es für Flexibilität, andererseits heißt dass für mich, dass ich nicht sicher sein kann wie gut die Software parallelisiert.

    Man sollte halt, besonders bei Prozessen die eine gewisse Abhängigkeit voneinander haben und doch parallel laufen, nicht vergessen, welche Auswirkungen der eine Prozess auf den anderen haben könnte (oder eben das Ausbleiben eben diesen Prozesses). Ich glaube dass besonders im Loop viel falsch gemacht werden kann. Wenn man beim Durchlauf einen kleinen Overhead von wenigen Byte erzeugt, summiert sich dieser bei schlechter Konstruktion und entsprechender Anzahl von Durchläufen zu einer mehreren (G)MB großen Trashdatei. Das muss man halt immer beachten.

    Ich glaube aber auch, dass man aus Gründen der Attraktivität für Einsteiger non-Event-Driven-Anwendungen ermöglichen muss. Auch wenn eine solche Haltung den Kern der einer Sprache ad absurdum führt.

    Mit JVM habe ich mich bisher noch nicht beschäftigt. Liegt eventuell an meiner angeborenen Furcht vor Java (wobei dies ja auch mittlerweile unberechtigt ist). Eventuell kannst da noch etwas mehr zu den Vorteilen sagen. Und gibt es eigentlich ausgereifte Software (die Klassiker wie CMS, Blog oder Forum) für Webanwendungen?

    Ich kann problemlos Recommender Frameworks oder exotische Datenbank Backends einbinden.
    Für Node.js ist mir diese Auswahl einfach zu klein.
    Wächst aber sehr schnell und beständig. Wenn man sich ansieht, welchen Umfang Node.js in der kurzen Zeit angenommen hat, dies mit PHP vergleicht, sieht man wo mehr Aktivität vorherrscht.

    Edit: Hier noch bekanntes Feuer gegen PHP
    helmbold.de/it/php/
    verplant.org/perl.vs.php.shtml
    =O

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von bastey ()