Jul
3
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
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
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


als erstes












0 Trackbacks