PHP/JavaScript Effizienz - eine kleine Revolution

03 07 2008 Creativebyte
Hi,

Ich schreibe heute morgen nachdem ich nach einer - für mich - wichtigen Entdeckung noch eine Nacht drüber schlafen musste um nicht vollends auszuflippen.

Bevor ich gleich alles verrate beginne ich mal ganz vorne und arbeite mich dann auf das Ziel hin. Ich beginne mit dem Wort Effizienz. Beim Programmieren steht das für mich für:
- Mehr Code in weniger Zeit
- Viel Code mit wenig Fehlern
Diese beiden Ziele erreicht mal hauptsächlich dadurch, dass man

a) Erfahrung hat
Mit Erfahrung mache ich weniger Fehler, mit Erfahrung kenne ich die Standard-Codestrukturen die es vielfältig gibt, mit Erfahrung hab ich v.a. die Standard-Funktionen im Kopf die man dauernd braucht ohne alle naslang ins Manual zu schauen.

b) konstant an einem Thema arbeitet und nicht zwischen lauter Kleinigkeiten springt
Ein blödes Thema. Speziell bei Web 2.0 Programmierung ist das eigentlich ein großes Problem, weil es kaum mehr "große" Scripte gibt sondern lauter Mini-Aktionen, d.h. man wird eigentlich dauernd aus dem Programmierfluss gerissen.

c) Eine Sprache benutzt
Das ist für mich ein wichtiger Punkt. Natürlich ist es toll wenn man mehrere Sprachen kann, aber wenn man nur eine richtig gut kann (oder ausschließlich eine) ist man auf jeden Fall deutlich effizienter, speziell weil man viel mehr Erfahrung hat. Allerdings ist das ein echt nice-to-have Thema. Business-Logik in PHP, DB-Abfragen in SQL, Oberflächen in HTML und CSS, client-side Aktionen in JavaScript. Der moderne Web-Programmierer muss also schon 5 Sprachen können (ohne streiten zu wollen was man als "Sprache" ansieht).

Ein Beispiel: Ich wollte gestern Abend einfach ein str_pad in Javascript haben (also eigentlich ein sprintf, aber ich dachte ein str_pad wäre leichter). In PHP kein Problem, da weiß ich aufgrund meiner jahrelangen Erfahrung dass ich str_pad brauche und die Syntax hab ich auch im Kopf. Und jetzt brauch ich das in JS. Also angefangen zu coden. Aber das frisst wieder Zeit, denn eigentlich will ich ja die Logik programmieren und nicht erstmal alle benötigten Funktionen. Egal, weiter. Aber man gemerkt: hm, eigentlich könnte ich ein str_repeat auch gleich brauchen und warum heißt das in JS immer string.length und nicht wie in PHP strlen(string)?

Das Problem ist schlicht: Sobald ich Logik in JS programmiere muss ich umdenken. Zum einen liegt es natürlich daran dass ich mit HTML-Objekten arbeite, aber auch schon so banale Dinge wie ein str_repeat, ein sprintf und ein date mit all seinen wunderbaren Parametern gehen mir total ab. Ich komm mir vor wie nach Jahren PHP wieder Standard-C programmieren müssen. Grausame Vorstellung, die eignet sich ja schon zur Folter... Da durch dass ich meine gewohnten Funktionen nicht habe, sie aber brauche, muss ich ständig mühsam drumrum programmieren oder nachprogrammieren und das kostet Zeit und damit (siehe) oben Effizienz. Schließlich ist mein Code sicher nicht perfekt, er ist voller Bugs, läuft langsam und vor lauter Hilfs-Funktionen schreiben komm ich mit der Business-Logik nicht voran die ich eigentlich schreiben wollte.

Und so kam es wie es kommen muss, die Lösung ist ja meist nur einen Google-Hupf (Hupf=Sprung in Österreich) entfernt und so gibt man nach und sucht online nach Hilfe. Und schon stoße ich auf die coolste Sache seit Langem (und da schließe ich AIR mit ein): Es gibt tatsächlich ein Projekt das sich bemüht sämtliche nützlichen PHP-Funktionen in JavaScript nachzubauen: PHP.JS Die Liste der nachgebauten Funktionen ist schon ziemlich lang (140!) und umfasst zu meinem Erstaunen auch Dinge wie require und file_get_contents (auch wenn diese "nur" auf HTTP-Basis arbeiten)

Als ich das gesehen hab hatte ich erstmal echt Gänsehaut. Denn was bedeutet das denn? Im Prinzip ist es damit möglich, dass ich alle PHP-Funktionen die ich kenne einfach in JS benutzen (sogar mit gleichen Parametern) und ich damit auch dort von meiner Erfahrung in PHP profitieren kann, d.h. die Effizienz steigt massiv weil ich mich wieder um die wesentlichen Dinge kümmern kann. Im Prinzip ist der einzige Unterschied nur noch wie ich mit Objekten umgehe, Klassen schreibe und Variablen benenne (wobei: könnte JS auch $-Zeichen vor dem Variablennamen?).

Die zweite Revolution für mich ist PHP.JS zusammen mit AIR. Ich war von der AdobeOnAIR Roadshow sehr beeindruckt, speziell von der Möglichkeit alles mittels JavaScript zu machen. Der einzige Haken den ich damals und nach ersten Versuchen gesehen habe: manche Dinge, die in PHP sehr einfach sind, machen in JS Probleme, einfach weil es die entsprechenden Funktionen entweder gar nicht gibt oder sie anders heißen und eine andere Parameterstruktur haben. Wie immer: die Effizienz leidet wenn ich die ganze Zeit umdenken muss. Along comes PHP.JS, mit der ich jetzt auch AIR-Applikationen größtenteils wie PHP-Scripte schreiben kann.

Lange Rede kurzer Unsinn: Ich bin absolut begeistert von diesem Projekt und finde es auch Klasse dass man auch nur einzelne Funktionen einbinden kann ohne gleich die große 50+ KB Datei einbinden zu müssen (alle Funktionen braucht man ja dann auch nicht). Für mich ist das ein riesiger Sprung in Richtung mehr Effizienz in der JS-Programmierung und wird mir v.a. in Richtung AIR (wenn ich mal wieder mehr Zeit dafür hab) viel Freude bereiten, wobei man dann einige Funktionen (speziell die File-Befehle) nochmal speziell auf AIR anpassen müsste. Eine entsprechende Anfrage an den Projektleiter ist schon draußen und wer weiß: vielleicht würde Adobe das sogar monetär unterstützen, schließlich ist die Hürde für PHP-Programmierer damit viel niedriger.

Zum Schluss noch der Link auf den ihr alle gewartet habt: http://phpjs.org/

Viel Spaß damit,
Michael 'Creativebyte' H

Bookmark PHP/JavaScript Effizienz - eine kleine Revolution  at del.icio.us Digg PHP/JavaScript Effizienz - eine kleine Revolution Technorati PHP/JavaScript Effizienz - eine kleine Revolution

Kommentare

Ansicht der Kommentare: (Linear | Verschachtelt)
22 07 2008
#1 Hao Wooi Lim (Antwort)

I am, erm I mean, will appreciate it if you could spell check and check your grammar before you post. "..reveal the hole thing..." just gives me a shock of my life. Spelling and grammar aside, I certainly can appreciate the effort by kevin on his port of some useful php functions to javascript. I'm a die hard fan of AJAX and I certainly can see myself using some of this functions.
Kommentar (1)
22 07 2008
#1.1 Creativebyte (Antwort)

Well, that's a bad mistake, sorry. My spell checker didn't scream because "hole" is a correct word, just not in this context ;-) I will try to change it (if this stupid blog system let me do it...)
Kommentar (1)

Kommentar schreiben


Umschließende Sterne heben ein Wort hervor (*wort*), per _wort_ kann ein Wort unterstrichen werden.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.

Um maschinelle und automatische Übertragung von Spamkommentaren zu verhindern, bitte die Zeichenfolge im dargestellten Bild in der Eingabemaske eintragen. Nur wenn die Zeichenfolge richtig eingegeben wurde, kann der Kommentar angenommen werden. Bitte beachten Sie, dass Ihr Browser Cookies unterstützen muss um dieses Verfahren anzuwenden.
CAPTCHA

Sie können [geshi lang=LANG][/lang] Tags verwenden um Quellcode abhängig von der gewählten Programmiersprache einzubinden