Migliore risposta
Python è abbastanza capace come linguaggio lato server. Ci sono altre scelte che a seconda delle tue esigenze possono essere una scelta migliore:
Vai, PHP, Java / Kotlin e C # per nominare alcune. Questi hanno o librerie lato server consolidate (o, nel caso di Go e PHP, che sono costruiti specificamente come motori lato server).
Risposta
Eravamo sicuri di non voler usare PHP. Facebook è bloccato su questo per motivi legacy, non perché è la scelta migliore in questo momento. [1] La nostra conclusione principale da questa esperienza è che la scelta del linguaggio di programmazione è molto importante ed è estremamente costosa da cambiare.
Python era un linguaggio che Charlie ed io conoscevamo abbastanza bene (anche se ora lo conosco molto meglio di Lho fatto quando abbiamo iniziato). Abbiamo anche considerato brevemente C #, Java e Scala. I problemi maggiori con Python sono la velocità e la mancanza di controllo dei tipi.
C # sembrava piuttosto promettente. Come linguaggio di programmazione, è fantastico, ma:
- Non volevamo essere nello stack Microsoft. Avevamo voglia di imparare qualcosa di nuovo e MS SQL Server sembrava in realtà abbastanza buono, ma sapevamo che avremmo bisogno di integrarci con un sacco di codice open source che ha solo un supporto di seconda classe per .NET, se lo supporta affatto. Inoltre, la maggior parte dei migliori ingegneri di questi tempi è abituata a cose open source.
- Non volevamo correre il rischio di essere su Mono (unimplementazione open source di C # /. NET). Non è chiaro per quanto tempo ci saranno i finanziamenti per quel progetto e avevo sentito parlare di vari problemi di prestazioni. Inoltre, sembrava che tutto il resto nellecosistema C # presumesse che fossimo sullo stack Microsoft.
Per molte piccole ragioni, i programmi Java finiscono per essere più lunghi e più difficili da scrivere rispetto i programmi Python equivalenti. È anche più difficile interoperare con materiale non Java. Scala aveva molti dei lati negativi di Java e JVM, anche se non era così male. Il linguaggio sembrava un po troppo nuovo e avrebbe comportato rischi inutili (ad esempio, chissà quanto sarà buono il supporto tra 10 anni).
Altre due lingue a cui abbiamo pensato brevemente erano OCaml e Haskell (nessuno dei due aveva ecosistemi abbastanza grandi o librerie standard abbastanza buone, ed entrambi erano potenzialmente troppo difficili per alcuni progettisti / analisti di dati / non ingegneri che potevano aver bisogno di scrivere codice).
Abbiamo deciso che Python era abbastanza veloce per la maggior parte di ciò che dobbiamo fare (dal momento che spingiamo il nostro codice critico per le prestazioni ai server di backend scritti in C ++ quando possibile). Per quanto riguarda il typechecking, abbiamo finito per scrivere unit test molto approfonditi che vale comunque la pena scrivere e raggiungere la maggior parte degli stessi obiettivi. Avevamo anche molta fiducia che Python avrebbe continuato ad evolversi in una direzione che sarebbe stata positiva per la vita del nostro codice base, dopo averlo visto evolversi negli ultimi 5 anni.
Finora, abbiamo sono stato abbastanza soddisfatto della scelta. Cè un piccolo pregiudizio di selezione, ma tutti i primi dipendenti che “avevano lavorato con altri linguaggi in passato erano felici di passare a Python, specialmente quelli provenienti da PHP. Da quando hanno iniziato le seguenti cose sono state accaduto:
- Python 2.6 è arrivato al punto in cui un numero sufficiente di librerie che abbiamo usato era compatibile con esso e abbiamo fatto una transizione molto semplice ad esso.
- Tornado (web framework) è stato rilasciato come open source e abbiamo spostato il nostro servizio web di aggiornamento live su quello.
- PyPy è arrivato al punto in cui sembra che alla fine sarà utilizzabile e ci darà una notevole velocità.
Tutti insieme, ci danno la certezza che il linguaggio e lecosistema si stanno muovendo in una buona direzione.
[1] Quali sono gli orrori s di PHP? e agli ingegneri di Facebook piace programmare in PHP? e Perché Facebook non è migrato da PHP? e Quali sono alcuni dei vantaggi di PHP rispetto ad altri linguaggi di programmazione? per saperne di più.