Facebook stellt Programmiersprache Hack vor



  • Shade Of Mine schrieb:

    Du kannst
    echo "Hallo $user" schreiben.
    Es hat schon seine Vorteile.

    Ich würde das Verhalten von echo als schweren Defekt in der Sprache sehen und damit als Nachteil. Außerdem ist das keine Erklärung für Dollars außerhalb von String-Literalen.

    Shade Of Mine schrieb:

    Aber mir ist klar, dass wir hier nie sinnvoll darüber diskutieren können - denn sobald gewisse Worte wie PHP oder Java oder derartiges fällt, schalten alle Leute ihr Hirn aus 😞

    Sobald man sich über PHP oder Java lustig macht, wird man als "hirnlos" bezeichnet.

    Das bisherige Nachleben von PHP bei Facebook ist ein typisches Beispiel für "too busy to fix". Man hat aber so langsam begriffen, dass PHP auf Dauer zu teuer auf der Stromrechnung ist. Das Dranklatschen von Java-Features ist vielleicht der letzte verzweifelte Versuch den Code von Zuckerberg nicht wegwerfen zu müssen.

    Mittlerweile müssten die Werkzeuge rund um PHP umfangreicher sein als der PHP-Code von Facebook selbst. Die behalten PHP nicht aus technischen Gründen, sondern aus politischen.



  • Ich persoenlich sehe das eher andersrum. Ich denke, man hat einen richtigen Schritt gesetzt, die ganzen Leute von PHP wegzubekommen. Dadurch, dass die Source-Kompatibiltaet erhalten bleibt, kann man PHP-Programmierern die Features schmackhaft machen, ohne sie dazu zu zwingen, ihren kompletten Code wegzuschmeissen.

    Sicherlich designtechnisch keine Meisterleistung, aber besser als reines PHP ists allemal.

    Edit: Uebrigens bietet Hack Unterstuetzung fuer async/await und Continuations: http://docs.hhvm.com/manual/en/hack.annotations.generators.php
    Finde ich gut 👍



  • TyRoXx schrieb:

    Shade Of Mine schrieb:

    Du kannst
    echo "Hallo $user" schreiben.
    Es hat schon seine Vorteile.

    Ich würde das Verhalten von echo als schweren Defekt in der Sprache sehen und damit als Nachteil. Außerdem ist das keine Erklärung für Dollars außerhalb von String-Literalen.

    Es ist eine Situation wo ein Dollarzeichen vor einem Variablennamen einen Vorteil hat. Bedeutet das, dass es besser ist überall $-Zeichen zu haben? Nein.

    Aber nicht alles was anders ist, ist immer nur schlecht.

    Das bisherige Nachleben von PHP bei Facebook ist ein typisches Beispiel für "too busy to fix". Man hat aber so langsam begriffen, dass PHP auf Dauer zu teuer auf der Stromrechnung ist. Das Dranklatschen von Java-Features ist vielleicht der letzte verzweifelte Versuch den Code von Zuckerberg nicht wegwerfen zu müssen.

    Ja, und?

    C++ ist genau aus dem gleichen Grund entstanden. Man wollte den ganzen C Code nicht wegwerfen.

    Mittlerweile müssten die Werkzeuge rund um PHP umfangreicher sein als der PHP-Code von Facebook selbst. Die behalten PHP nicht aus technischen Gründen, sondern aus politischen.

    Und da haben wir es. 🙂

    Das Problem mit dieser Argumentation ist, dass wenn FB die Zeit in ein neuschreiben des Codes investiert hätte, FB einen sehr langen Stillstand gehabt hätte. Du kannst nämlich nicht einfach eine fette Codebasis auf eine andere Sprache hieven. Das funktioniert so nicht. FB ist auf PHP festgelegt, die kommen da nicht mehr weg. Es ist eine technische Limitierung der FB Infrastruktur.

    FB ist einfach blöd gewachsen und hat es verpennt rechtzeitig die Infrastruktur anzupassen - Twitter hat es zB geschafft, aber Twitter hat auch nicht die Codebase von FB...



  • Shade Of Mine schrieb:

    Es ist eine Situation wo ein Dollarzeichen vor einem Variablennamen einen Vorteil hat. Bedeutet das, dass es besser ist überall $-Zeichen zu haben? Nein.

    Was willst du mir damit sagen?

    Shade Of Mine schrieb:

    Aber nicht alles was anders ist, ist immer nur schlecht.

    Fakt: Dollarzeichen vor jedem Variablennamen sind schlecht.

    Shade Of Mine schrieb:

    Mittlerweile müssten die Werkzeuge rund um PHP umfangreicher sein als der PHP-Code von Facebook selbst. Die behalten PHP nicht aus technischen Gründen, sondern aus politischen.

    Und da haben wir es. 🙂

    Das Problem mit dieser Argumentation ist, dass wenn FB die Zeit in ein neuschreiben des Codes investiert hätte, FB einen sehr langen Stillstand gehabt hätte. Du kannst nämlich nicht einfach eine fette Codebasis auf eine andere Sprache hieven. Das funktioniert so nicht. FB ist auf PHP festgelegt, die kommen da nicht mehr weg. Es ist eine technische Limitierung der FB Infrastruktur.

    Facebook ist bestimmt nicht nur in PHP geschrieben. Das HTML-Frontend von Facebook ist es. Ist es wirklich so schwierig das Bisschen HTML zu generieren? Es ist schwer nachzuvollziehen warum man eine neue Programmiersprache dafür erfinden muss.
    Es sei denn sie machen tatsächlich die Hintergrundprozesse auch in PHP. Das würde das async -Gedöns erklären. Dann ist denen allerdings nicht mehr zu helfen.



  • TyRoXx schrieb:

    Shade Of Mine schrieb:

    Aber nicht alles was anders ist, ist immer nur schlecht.

    Fakt: Dollarzeichen vor jedem Variablennamen sind schlecht.

    Beweis?



  • Zeus schrieb:

    TyRoXx schrieb:

    Shade Of Mine schrieb:

    Aber nicht alles was anders ist, ist immer nur schlecht.

    Fakt: Dollarzeichen vor jedem Variablennamen sind schlecht.

    Beweis?

    $Wie $oft $muss $ungarische $Notation $eigentlich $noch $widerlegt $werden?



  • TyRoXx schrieb:

    Zeus schrieb:

    ...

    Beweis?

    $Wie $oft $muss $ungarische $Notation $eigentlich $noch $widerlegt $werden?

    Hat damals ja nix damit zu tun...



  • Ich finde die Idee gar nicht so schlecht. Halbwegs elegant HTML zu generieren kriegt kaum eine Programmiersprache hin, ganz zu schweigen von C++. Da ist PHP so ziemlich die beste Sprache. Auch wenn es viele nicht einsehen, die Sprache ist sehr elegant und bietet viele Tricks, die man zur HTML-Generierung oft braucht.

    Wenn dann eine Sprache kommt, die grösstenteils kompatibel mit PHP ist, um ein Vielfaches schneller läuft, mehr Features anbietet und Open Source ist -- super!

    @TyRoXx: Ist ja genial, wenn du Facebook in einer Woche von Grund auf neu programmieren könntest und es dann zehnmal so schnell läuft und tausend mal wartbarer ist 👍



  • C++ ist die ungarischste Sprache überhaupt, denn es wird unterschieden ob ein Member statisch ist oder nicht:

    a::f(); // statisch
    a.b(); // nicht statisch
    

    Tod dem C++!



  • Shade Of Mine schrieb:

    asfdlol schrieb:

    was soll das rumge-dollarzeiche bringen? nur um zu indizieren ob ein bezeichner ein parameter ist? richtig mühsam, ich hab in c++ nie das problem, das nicht zu wissen / erkennen.

    Du kannst
    echo "Hallo $user" schreiben.
    Es hat schon seine Vorteile.

    Das wäre ja auch so möglich, ohne dass man das auch außerhalb von Strings so schreiben muss.

    Diese Dollarzeichen-Konvention kommt von Shell-Sprachen, die auf Substitution von Strings basieren. Jeder Text ist erstmal ein String: echo Hallo, und bestimmte Zeichen triggern Substitutionen, beispielsweise einer Variable durch ihren Inhalt. Wenn man von diesem Modell wegwill -- meines Wissens ist es in PHP nicht mehr üblich, Strings ohne "" zu schreiben -- braucht man das Dollarzeichen nicht mehr.



  • prohack schrieb:

    Ich finde die Idee gar nicht so schlecht. Halbwegs elegant HTML zu generieren kriegt kaum eine Programmiersprache hin, ganz zu schweigen von C++. Da ist PHP so ziemlich die beste Sprache. Auch wenn es viele nicht einsehen, die Sprache ist sehr elegant und bietet viele Tricks, die man zur HTML-Generierung oft braucht.

    😃 witzig. Aber kennzeichne die ironischen Teile deines nächsten Beitrages bitte. Du könntest hier noch jemanden auf Ideen bringen.



  • Bashar schrieb:

    Das wäre ja auch so möglich, ohne dass man das auch außerhalb von Strings so schreiben muss.

    Keine Frage. Aber man kann immer alles besser machen.

    Der Fakt bleibt, dass es in gewissen Situationen praktisch ist, dass Variablen keinen Kontext brauchen.
    Denn darum geht es ja. Das $ gibt Kontextlos die Variable an. Das ist nicht immer schlecht.

    Gerade was Textverarbeitung betrifft ist das einfach enorm praktisch. So Sachen wie heredocs gibt es in C++ ja garnicht.

    Weiters hat man ja auch zB
    foo>foo->bar()
    was sehr schoen dynamischen Code erlaubt. Klar geht es besser - ich will hier nicht behaupten $ vor Variablennamen ist die beste Erfindung ever. Aber sie ist nicht nur schlecht. Es hat Vorteile und Nachteile.

    Und @TyRoXx:
    Du hast keine Ahnung wie Facebook funktioniert. Wieso willst du hier mit mir darueber diskutieren?



  • Shade Of Mine schrieb:

    So Sachen wie heredocs gibt es in C++ ja garnicht.

    Bin da nicht so sicher.

    #include <iostream>
    
    int main()
    {
    	std::cout<< R"BEREICH(
    <!DOCTYPE html>
    <html>
    <body>
    
    <h1>My First Heading</h1>
    
    <p>My first paragraph.</p>
    
    </body>
    </html>
    	)BEREICH";
    }
    


  • volkard schrieb:

    Shade Of Mine schrieb:

    So Sachen wie heredocs gibt es in C++ ja garnicht.

    Bin da nicht so sicher.

    Und wie fuege ich hier Variablen ein?
    zB will ich ja
    <p>Hallo {$user->getNickname()}</p>
    haben. Das wird in C++ dann schon etwas tricky.



  • Variableneinfügen ist nicht gefordert, daß sich was heredoc nennen kann, würde ich sagen.



  • @TyRoXx
    Was soll das dumme Gebashe hier?

    Wieso ist es schlecht, wenn man etwas verbessert? Und dass Hack ne Verbesserung gegenüber PHP ist, sollte wohl klar sein.



  • volkard schrieb:

    Variableneinfügen ist nicht gefordert, daß sich was heredoc nennen kann, würde ich sagen.

    Nein, aber ohne irgendeine Form von String-Interpolation sind Heredocs viel weniger praktisch.

    Das $-Beispiel ist nicht so gut, es gibt auch massig Sprachen, die nur zur String-Interpolation irgendwelche Prefixes oä. brauchen ("#{variable} in einem Ruby-String" vs. variable in Ruby). Solche kleinen Syntax-Seltsamkeiten fallen mir aber ehrlich gesagt mittlerweile überhaupt nicht mehr auf, das sollte doch niemand mehr bemerken, der mehr als ein, zwei Programmiersprachen kennt. Syntaktische Warzen hat jede Sprache, die tatsächlich auch verwendet wird, zuhauf.

    Zum Thema: Ich mag PHP auch _wirklich_ nicht, aber Hack ist in meinen Augen durchaus sinnvoll; zumal Facebook das ja schon länger selbst verwendet. Habe den Talk zu Type Checking und Type Inference bei Facebook schon vor einiger Zeit gesehen.

    Natürlich ist Hack nicht darauf ausgelegt, eine wunderschön designte neue Sprache zu sein, sondern darauf in der Praxis PHP-Entwicklern die Arbeit an bestehendem PHP-Code zu erleichtern und den Schritt für Schritt zu Hack zu konvertieren. Alles andere wäre aber auch nicht praxistauglich oder spannend. Für Facebook (und viele andere PHP-Shops) macht sowas durchaus Sinn.



  • 80% der Anwendungsentwicklung wird in PHP erledigt. Es wäre schön wenn FB das alles der Allgemeinheit zu Gute kommen lassen würde.



  • Ist eure Kritik an dieser Sprache ernsthaft ob man jetzt ein $ vor die Variablennamen schreibt?

    Ich weiß ja nicht, aber solche Spitzfindigkeiten sind das Letzte wonach ich eine Sprache auswähle...



  • volkard schrieb:

    Variableneinfügen ist nicht gefordert, daß sich was heredoc nennen kann, würde ich sagen.

    Das stimmt natuerlich, aber wir haben im Kontext von kontextlosen Variablen darueber geredet - und ein Vorteil von kontextlosen Variablen ist eben, dass man sie in solchen Situationen wie heredocs oder sonstige Textverarbeitung einfach sehr praktisch Nutzen kann.

    Das ist auch keine Kritik an C++, sondern so ist es einfach. Das $ vor einem Variablennamen ist in vielen Situationen unnoetige Schreibarbeit, aber in manchem ist es praktisch.

    nman hat natuerlich Recht das es bessere Loesungen gibt wie es zB Ruby macht, das ist in Ruby schoener. Generell ist Ruby ein viel schoenere Sprache als PHP, das duerfte wohl Niemand bezweifeln 😉


Anmelden zum Antworten