Is het een goed idee om Python als server-side taal te gebruiken?


Beste antwoord

Python is heel capabel als server-side taal. Er zijn andere keuzes die, afhankelijk van uw behoeften, wellicht een betere keuze zijn:

Go, PHP, Java / Kotlin en C # om te noemen een paar. Deze hebben ofwel server-side bibliotheken opgezet (of in het geval van Go en PHP die specifiek zijn gebouwd als server-side engines ).

Antwoord

We waren er zeker van dat we PHP niet wilden gebruiken. Facebook zit daar om legacy-redenen aan vast, niet omdat het op dit moment de beste keuze is. [1] Onze belangrijkste afleiding van die ervaring is dat de keuze van een programmeertaal erg belangrijk is en buitengewoon duur om te veranderen.

Python was een taal die Charlie en ik allebei redelijk goed kenden (hoewel ik het nu veel beter ken dan Ik deed het toen we begonnen). We hebben ook even stilgestaan ​​bij C #, Java en Scala. De grootste problemen met Python zijn snelheid en het gebrek aan typecontrole.

C # leek behoorlijk veelbelovend. Als programmeertaal is het geweldig, maar:

  • We wilden niet op de Microsoft-stack zitten. We wilden iets nieuws leren, en MS SQL Server leek eigenlijk best goed, maar we wisten dat we zouden moeten integreren met veel open source-code die alleen tweederangs ondersteuning biedt voor .NET, als het dat al ondersteunt. Bovendien zijn de meeste van de beste ingenieurs tegenwoordig gewend aan open source-dingen.
  • We wilden niet het risico nemen om op Mono te zitten (een open source-implementatie van C # /. NET). Het is niet duidelijk hoe lang de financiering voor dat project zal duren, en ik had gehoord van verschillende prestatieproblemen. Bovendien leek het alsof al het andere in het C # -ecosysteem zou aannemen dat we op de Microsoft-stack zaten.

Om veel kleine redenen worden Java-programmas langer en pijnlijker om te schrijven dan de equivalente Python-programmas. Het is ook moeilijker om samen te werken met niet-Java-dingen. Scala had veel van de nadelen van Java en de JVM, hoewel het niet zo erg was. De taal leek een beetje te nieuw en zou een onnodig risico met zich meebrengen (bijvoorbeeld, wie weet hoe goed de ondersteuning over 10 jaar zal zijn).

Twee andere talen waar we heel kort over nadachten, waren OCaml en Haskell (geen van beiden had ecosystemen die groot genoeg waren of goed genoeg standaardbibliotheken, en beide waren mogelijk te moeilijk voor sommige ontwerpers / data-analisten / niet-ingenieurs die misschien code moesten schrijven).

We besloten dat Python snel genoeg was voor het meeste van wat we moeten doen (aangezien we onze prestatie-kritieke code pushen naar back-end servers geschreven in C ++ waar mogelijk). Wat de typecontrole betreft, hebben we uiteindelijk zeer grondige unit-tests geschreven die het sowieso waard zijn om te schrijven, en die de meeste van dezelfde doelen bereiken. We hadden ook veel vertrouwen dat Python zou blijven evolueren in een richting die goed zou zijn voor de levensduur van onze codebase, nadat we het de afgelopen 5 jaar hadden zien evolueren.

Tot nu toe hebben we “ve was best tevreden met de keuze. Er is een kleine voorkeur voor de selectie, maar alle vroege werknemers die in het verleden met andere talen werkten, waren blij om over te stappen naar Python, vooral degenen die uit PHP kwamen. Sinds ze zijn begonnen, zijn de volgende dingen gebeurde:

  • Python 2.6 kwam op het punt waarop genoeg van de bibliotheken die we gebruikten ermee compatibel waren, en we maakten er een zeer gemakkelijke overgang naar.
  • Tornado (web framework) werd vrijgegeven als open source, en we hebben onze live update-webservice daarnaar verplaatst.
  • PyPy kwam op het punt waarop het eruit ziet alsof het uiteindelijk bruikbaar zal zijn en ons een aanzienlijke versnelling zal geven.

Alles bij elkaar geven deze ons het vertrouwen dat de taal en het ecosysteem de goede kant op gaan.

[1] Wat zijn de horror s van PHP? en houden Facebook-ingenieurs van programmeren in PHP? en waarom is Facebook niet overgestapt van PHP? en wat zijn enkele voordelen van PHP ten opzichte van andere programmeertalen? voor meer informatie.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *