Najlepsza odpowiedź
Python jest całkiem zdolny jako język po stronie serwera. Istnieją inne opcje, które w zależności od potrzeb mogą być lepszym wyborem:
Idź, PHP, Java / Kotlin i C # to name kilka. Te albo mają ustanowione biblioteki po stronie serwera (lub w przypadku Go i PHP, które są zbudowane specjalnie jako silniki po stronie serwera).
Odpowiedź
Byliśmy pewni, że nie chcemy używać PHP. Facebook utknął na tym z powodów starszych, a nie dlatego, że jest to obecnie najlepszy wybór. [1] Naszym głównym wnioskiem z tego doświadczenia jest to, że wybór języka programowania jest bardzo ważny i niezwykle kosztowny w zmianie.
Python był językiem, który Charlie i ja znaliśmy dość dobrze (chociaż teraz znam go znacznie lepiej niż Zrobiłem, kiedy zaczynaliśmy). Omówiliśmy również krótko C #, Javę i Scalę. Największe problemy z Pythonem to szybkość i brak sprawdzania typów.
C # wydawał się całkiem obiecujący. Jako język programowania jest świetny, ale:
- Nie chcieliśmy być na stosie Microsoftu. Chcieliśmy nauczyć się czegoś nowego, a MS SQL Server wydawał się całkiem niezły, ale wiedzieliśmy, że będziemy musieli integrować się z dużą ilością kodu open source, który obsługuje tylko drugą klasę dla .NET, jeśli w ogóle go obsługuje. Ponadto większość najlepszych inżynierów w dzisiejszych czasach jest przyzwyczajona do tworzenia oprogramowania typu open source.
- Nie chcieliśmy ryzykować korzystania z Mono (implementacja C # / .NET typu open source). Nie jest jasne, jak długo będzie trwać finansowanie tego projektu, a słyszałem o różnych problemach z wydajnością. Poza tym wydawało się, że wszystko inne w ekosystemie C # zakłada, że jesteśmy na stosie Microsoftu.
Z wielu drobnych powodów pisanie programów Java jest dłuższe i bardziej bolesne niż równoważne programy w Pythonie. Trudniej jest także współdziałać z rzeczami innymi niż Java. Scala miała wiele wad Javy i JVM, chociaż nie było aż tak źle. Język wydawał się trochę zbyt nowy i jak gdyby wiązał się z pewnym niepotrzebnym ryzykiem (na przykład kto wie, jak dobre będzie wsparcie za 10 lat).
Dwa inne języki, o których bardzo krótko myśleliśmy, to OCaml i Haskell (żaden z nich nie miał wystarczająco dużych ekosystemów ani wystarczająco dobrych standardowych bibliotek i obie były potencjalnie zbyt trudne dla niektórych projektantów / analityków danych / nie-inżynierów, którzy mogliby potrzebować pisania kodu).
Zdecydowaliśmy, że Python jest wystarczająco szybki dla większości tego, co musimy zrobić (ponieważ wysyłamy nasz kod krytyczny dla wydajności do serwerów zaplecza napisanych w C ++, gdy tylko jest to możliwe). Jeśli chodzi o sprawdzanie typów, skończyło się na napisaniu bardzo dokładnych testów jednostkowych, które i tak warto napisać i osiągają większość tych samych celów. Mieliśmy również dużą pewność, że Python będzie ewoluował w kierunku, który byłby dobry dla życia naszej bazy kodu, ponieważ obserwowaliśmy, jak ewoluował w ciągu ostatnich 5 lat.
Jak dotąd, jestem bardzo zadowolony z wyboru. Istnieje niewielka różnica w wyborze, ale wszyscy pierwsi pracownicy, którzy w przeszłości pracowali z innymi językami, byli szczęśliwi z przejścia na Python, zwłaszcza ci pochodzący z PHP. Od czasu rozpoczęcia następujących rzeczy zdarzyło się:
- Python 2.6 doszedł do punktu, w którym wystarczająca liczba bibliotek, których używaliśmy, była z nim zgodna, i zrobiliśmy bardzo łatwe przejście do niego.
- Tornado (web framework) został wydany jako open source i przenieśliśmy naszą usługę aktualizacji na żywo do tego miejsca.
- PyPy doszedł do punktu, w którym wygląda na to, że w końcu będzie można go używać i da nam znaczne przyspieszenie.
Wszystko razem daje nam pewność, że język i ekosystem podążają w dobrym kierunku.
[1] Co to za horror s z PHP? i Czy inżynierowie Facebooka lubią programować w PHP? i dlaczego Facebook nie przeprowadził migracji z PHP? i Jakie są zalety PHP w porównaniu z innymi językami programowania? Więcej informacji na ten temat.