Bedste svar
Python er ret i stand som et serversidesprog. Der er andre valg, der afhængigt af dine behov kan være et bedre valg:
Go, PHP, Java / Kotlin og C # for at navngive nogle få. Disse har enten etablerede serversidebiblioteker (eller i tilfælde af Go og PHP, der er bygget specifikt som serversiden -motorer ).
Svar
Vi var sikre på, at vi ikke ville bruge PHP. Facebook sidder fast på det af ældre grunde, ikke fordi det er det bedste valg lige nu. [1] Vores vigtigste takeaway fra den erfaring er, at valg af programmeringssprog er meget vigtigt og er ekstremt dyrt at ændre.
Python var et sprog, som Charlie og jeg begge kendte med rimelighed (selvom jeg kender det meget bedre nu end Det gjorde jeg, da vi startede). Vi overvejede også kort C #, Java og Scala. De største problemer med Python er hastighed og manglen på typechecking.
C # syntes ret lovende. Som programmeringssprog er det godt, men:
- Vi ville ikke være på Microsoft-stakken. Vi var klar til at lære noget nyt, og MS SQL Server virkede faktisk ret godt, men vi vidste, at vi skulle integrere med masser af open source-kode, der kun har andenklasses support til .NET, hvis det overhovedet understøtter det. Også de fleste af de bedste ingeniører i disse dage bruges til open source-ting.
- Vi ønskede ikke at tage risikoen for at være på Mono (en open source-implementering af C # /. NET). Det er ikke klart, hvor længe finansieringen vil være til dette projekt, og jeg hørte om forskellige ydeevneproblemer. Plus det virkede som om alt andet i C # -økosystemet ville antage, at vi var på Microsoft-stakken.
Af mange små grunde ender Java-programmer med at være længere og mere smertefulde at skrive end de tilsvarende Python-programmer. Det er også sværere at interoperere med ikke-Java-ting. Scala havde mange ulemper ved Java og JVM, selvom det ikke var lige så dårligt. Sproget syntes lidt for nyt, og som om det ville medføre en unødvendig risiko (for eksempel, hvem ved hvor god support vil være om ti år).
To andre sprog, vi meget kort tænkte på, var OCaml og Haskell. (hverken havde store nok økosystemer eller gode nok standardbiblioteker, og begge var potentielt for hårde for nogle designere / dataanalytikere / ikke-ingeniører, der muligvis skulle skrive kode).
Vi besluttede, at Python var hurtig nok for det meste af hvad vi skal gøre (da vi skubber vores præstationskritiske kode til backend-servere skrevet i C ++ når det er muligt). For så vidt angår typekontrol, endte vi med at skrive meget grundige enhedstest, der alligevel er værd at skrive og opnår de fleste af de samme mål. Vi havde også stor tillid til, at Python fortsatte med at udvikle sig i en retning, der ville være godt for vores codebase, efter at have set det udvikle sig i løbet af de sidste 5 år.
Indtil videre har vi været temmelig tilfreds med valget. Der er en lille udvælgelsesforstyrrelse, men alle de tidlige medarbejdere, der tidligere har arbejdet med andre sprog, var glade for at gå over til Python, især dem, der kommer fra PHP. Siden starten har følgende ting været skete:
- Python 2.6 nåede det punkt, hvor nok af de biblioteker, vi brugte, var kompatible med det, og vi lavede en meget let overgang til det.
- Tornado (web framework) blev frigivet som open source, og vi flyttede vores live opdaterede webservice til det.
- PyPy kom til det punkt, hvor det ser ud til, at det i sidste ende vil være anvendeligt og vil give os en betydelig hastighed.
Alt i alt giver disse os tillid til, at sprog og økosystem bevæger sig i en god retning.
[1] Hvad er rædslen s af PHP? og nyder Facebook-ingeniører programmering i PHP? og hvorfor har Facebook ikke migreret væk fra PHP? og hvad er nogle af fordelene ved PHP i forhold til andre programmeringssprog? for mere om det.