Ich habe gelesen, dass Facebook in PHP gestartet ist. Um schneller zu werden, kompilieren sie PHP jetzt als C ++ - Code. Wenn das der Fall ist, warum tun sie es dann nicht:
Einfach in c ++ programmieren? Sicherlich muss es EINIGE Fehler / Bugs geben, wenn man eine magische Compiler-Schaltfläche drückt, die PHP in C ++ - Code portiert, oder?
Wenn dieser beeindruckende Konverter so gut funktioniert, warum sollte man sich überhaupt an PHP halten? Warum nicht so etwas wie Ruby oder Python verwenden? Hinweis - Ich habe diese beiden zufällig ausgewählt, aber meistens, weil fast jeder sagt, dass das Codieren in diesen Sprachen eine "Freude" ist. Warum also nicht in einer super tollen Sprache entwickeln und dann den Magic C ++ - Kompilierungsbutton drücken?
<snark>
(Soweit JS jemals als "lesbar" bezeichnet werden kann.)</snark>
Antworten:
Sie tun es nicht. Zumindest nicht mehr. Es stellt sich heraus, dass diese Vorgehensweise zu viele Probleme verursacht, z. B. Probleme bei der Bereitstellung und die Beseitigung eines der Hauptvorteile der Verwendung einer Skriptsprache - sie können Skripts ändern, ohne dass sie neu kompiliert werden müssen -, sodass das HipHop-System überarbeitet wurde eine VM-Architektur mit einer transparenten JIT-Phase und veraltetem C ++ - Compiler.
Interessanterweise ist diese Methode anscheinend auch doppelt so schnell (wie performant) wie der ursprüngliche C ++ - Transkompilierungsansatz.
quelle
Der leitende Ingenieur von Facebook, Haiping Zhao, beantwortet Ihre Fragen wahrscheinlich am besten.
Der Rest des Blogposts ist eine gute Lektüre und ich empfehle es. Es gibt einen Einblick in die Programmierherausforderungen, mit denen Facebook umgeht, und wie sie versuchen, diese Probleme zu lösen.
quelle
Richtig, aber das Programmieren in C ++ würde bedeuten, dass die gesamte vorhandene Codebasis ersetzt wird - eine Idee, die weltbekannt dafür ist, absolut dumm und verheerend zu sein.
Denn dies würde wiederum bedeuten, dass die vorhandene PHP-Codebasis ersetzt wird.
In einer idealen Welt würden sie einfach von Grund auf in C ++ codieren. Leider ist dies nicht möglich, da sie eine Unmenge an vorhandenem Code in PHP haben. Also hacken sie stattdessen um das Problem herum. Es ist einfach so viel billiger.
quelle
they hack around the problem
? Die Optimierung von Code mithilfe von C ++ oder gar Assembly ist nicht neu. Dies geschah bereits, bevor es einen PC gab.„Warum nicht direkt in der Assembly arbeiten, da der C ++ - Code letztendlich in Maschinencode-Anweisungen übersetzt wird?“
- Darauf reduziert sich das Argument im Wesentlichen. Und das macht hoffentlich klar, warum es nicht gemacht wird:
quelle
Ich bin nicht bei Facebook, aber ich rate nach besten Kräften, "signifikante Risiken zu vermeiden". Ab diesem Zeitpunkt ist der Wechsel zu einer anderen Sprache keine technologische Entscheidung mehr, sondern vor allem eine geschäftliche Entscheidung.
Wenn Sie ein großes Unternehmen sind, das organisch auf die Größe von FB gewachsen ist, ziehen Sie langsam Leute an, die dann Fachwissen über Ihre Programmierplattform erwerben (im Fall von FB ist das PHP). Einer nach dem anderen bekommt ein paar tausend Mitarbeiter mit großem Fachwissen bei PHP. Zu diesem Zeitpunkt wird der Wechsel zu einer anderen Sprache sehr gefährlich: Ihre Ingenieure sind mit dem neuen Ökosystem nicht vertraut und benötigen möglicherweise viel Zeit, um das für ihre aktuellen Jobs erforderliche Fachwissen zu erreichen, geschweige denn, um ihre Fähigkeiten zu verbessern.
Abgesehen von den relativen Vorzügen von PHP und den alternativen Sprachen wäre es angesichts des Umfangs der Investitionen, die der FB in die PHP-Technologie getätigt hat, zu arrogant zu glauben, dass ein Wechsel schmerzlos und zu dumm wäre, um ihn auszuprobieren. In der Wirtschaft ist Technologie ein Mittel zum Zweck, so dass die "Freude" am Programmieren nicht einmal in Diskussionen gerät.
quelle
Ich kann mir nur eine große Website vorstellen, die in C ++ implementiert wurde. H2G2
Selbst dann ist die aktuelle Implementierung tatsächlich ein Interpreter mit einer großen Anzahl eingebauter Text- und Datenbankmanipulationsfunktionen (klingt das nicht ein bisschen wie und frühes PHP :-)).
Facebook ist sehr zufrieden mit der Funktionalität ihrer Website. Sie sind gerade so weit gewachsen, dass Vanilla PHP die von ihnen verarbeiteten Volumes nicht mehr unterstützt. Daher das Kompilieren von PHP in C ++ und von dort in Maschinencode. Sie hätten einen vollständigen Compiler für PHP schreiben können, aber sie hätten die 20 Jahre subtiler Optimierung verpasst, die in den gcc-Compiler-Stack geflossen sind. Der Punkt ist, dass der "C ++" - Code nicht für den Menschen lesbar oder wartbar sein soll, sondern nur ein Zwischenschritt auf dem Weg zum Maschinencode.
Wie viele Programmierer auf dieser Website sind Sie der Meinung, dass Sie den Arbeitsaufwand für die Geschäftslogik und -funktionalität, die in vorhandene Anwendungen eingebettet sind, und den Wertcode für sich selbst unterschätzen.
quelle