Beste Antwort
Python ist als serverseitige Sprache durchaus geeignet. Es gibt andere Möglichkeiten, die je nach Ihren Anforderungen eine bessere Wahl sein können:
Go, PHP, Java / Kotlin und C #, um sie zu benennen ein paar. Diese haben entweder serverseitige Bibliotheken eingerichtet (oder im Fall von Go und PHP, die speziell als serverseitige Engines erstellt wurden).
Antwort
Wir waren uns sicher, dass wir PHP nicht verwenden wollten. Facebook bleibt aus alten Gründen dabei, nicht weil es momentan die beste Wahl ist. [1] Unsere wichtigste Erkenntnis aus dieser Erfahrung ist, dass die Wahl der Programmiersprache sehr wichtig und äußerst kostspielig zu ändern ist.
Python war eine Sprache, die Charlie und ich beide ziemlich gut kannten (obwohl ich sie jetzt viel besser kenne als Ich habe es getan, als wir angefangen haben. Wir haben auch kurz C #, Java und Scala betrachtet. Die größten Probleme mit Python sind die Geschwindigkeit und das Fehlen von Typchecking.
C # schien ziemlich vielversprechend. Als Programmiersprache ist es großartig, aber:
- Wir wollten nicht auf dem Microsoft-Stack sein. Wir wollten etwas Neues lernen, und MS SQL Server schien eigentlich ziemlich gut zu sein, aber wir wussten, dass wir uns in viele Open-Source-Codes integrieren müssen, die .NET nur von zweiter Klasse unterstützen, wenn es überhaupt unterstützt wird. Außerdem sind die meisten der besten Ingenieure heutzutage an Open Source-Inhalte gewöhnt.
- Wir wollten nicht das Risiko eingehen, auf Mono (einer Open Source-Implementierung von C # /. NET) zu arbeiten. Es ist nicht klar, wie lange die Finanzierung für dieses Projekt noch verfügbar sein wird, und ich hatte von verschiedenen Leistungsproblemen gehört. Außerdem schien alles andere im C # -Ökosystem davon auszugehen, dass wir uns auf dem Microsoft-Stack befanden.
Aus vielen kleinen Gründen ist das Schreiben von Java-Programmen länger und schmerzhafter als die entsprechenden Python-Programme. Es ist auch schwieriger, mit Nicht-Java-Inhalten zusammenzuarbeiten. Scala hatte viele Nachteile von Java und der JVM, obwohl es nicht ganz so schlimm war. Die Sprache schien etwas zu neu und würde ein unnötiges Risiko mit sich bringen (zum Beispiel, wer weiß, wie gut die Unterstützung in 10 Jahren sein wird).
Zwei weitere Sprachen, über die wir sehr kurz nachgedacht haben, waren OCaml und Haskell (Weder hatten Ökosysteme groß genug noch Standardbibliotheken gut genug, und beide waren möglicherweise zu schwierig für einige Designer / Datenanalysten / Nicht-Ingenieure, die möglicherweise Code schreiben müssen.)
Wir entschieden, dass Python schnell genug war für das meiste, was wir tun müssen (da wir unseren leistungskritischen Code nach Möglichkeit auf in C ++ geschriebene Backend-Server übertragen). Was die Typprüfung angeht, haben wir am Ende sehr gründliche Unit-Tests geschrieben, die es sowieso wert sind, geschrieben zu werden, und die meisten der gleichen Ziele erreicht. Wir hatten auch großes Vertrauen, dass sich Python in eine Richtung weiterentwickeln wird, die für das Leben unserer Codebasis gut ist, nachdem wir beobachtet haben, wie sich Python in den letzten 5 Jahren entwickelt hat.
Bisher haben wir es getan Ich war ziemlich zufrieden mit der Auswahl. Es gibt eine kleine Auswahlverzerrung, aber alle frühen Mitarbeiter, die in der Vergangenheit mit anderen Sprachen gearbeitet hatten, waren glücklich, auf Python umzusteigen, insbesondere diejenigen, die aus PHP stammen passiert:
- Python 2.6 hat den Punkt erreicht, an dem genügend der von uns verwendeten Bibliotheken damit kompatibel waren, und wir haben einen sehr einfachen Übergang dazu gemacht.
- Tornado (Web Framework) wurde als Open Source veröffentlicht, und wir haben unseren Live-Aktualisierungs-Webdienst darauf verschoben.
- PyPy hat den Punkt erreicht, an dem es so aussieht, als ob es irgendwann verwendbar sein und uns erheblich beschleunigen wird. Alles in allem geben uns diese das Vertrauen, dass sich Sprache und Ökosystem in eine gute Richtung bewegen.
[1] Was sind die Schrecken? s von PHP? und Programmieren Facebook-Ingenieure gerne in PHP? und Warum ist Facebook nicht von PHP abgewandert? Und was sind einige der Vorteile von PHP gegenüber anderen Programmiersprachen? Mehr dazu.