Facebook stellt Programmiersprache Hack vor





  • Wow, Java mit Dollarzeichen. Revolutionär!

    EDIT: Ich habe mal einen Teil des Textes überflogen.

    https://code.facebook.com/posts/264544830379293/hack-a-new-programming-language-for-hhvm/ schrieb:

    During development, a PHP programmer typically goes back and forth rapidly between the source code and the browser. Engineers can iterate as quickly as they need, testing and tuning an experience until it's perfect.

    Traditionally, a type checker would disrupt this feedback loop as it takes time to analyze the source code. We didn't want to slow the PHP workflow, so we came up with a new approach to reconcile instantaneous feedback with type safety.

    Our solution was to architect the type checker as a local server that watches the filesystem. The server keeps all information about the source code in memory and automatically updates itself when a file changes on disk. This approach has paid off: the type checker typically runs in less than 200 milliseconds and rarely takes more than a second, making it easy to integrate into the development workflow without introducing a noticeable delay.

    Was für ein BS. "PHP workflow". Tss.



  • 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.



  • 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.

    Facebook ist an PHP gefesselt, die stecken da jetzt eben viel Arbeit hinein. HipHop ist ja auch langsam ansehnlich geworden.

    Das Problem ist halt nur, wer will mit einer Sprache Entwickeln die einer Firma gehört? Das ist IMHO immer ein riesen Risiko.

    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 😞



  • 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.


Anmelden zum Antworten