( XMI | 2022. 01. 26., sze – 12:54 )

"Akkor a cegek is ebbe az iranyba fognak lassacskan elmozdulni." - Ez lényegében már a múlt. Kb az Openstack volt, ami miatt sokan elhitték, hogy igazi giga enterprise projektekre alkalmas lehet a python. Indult már kb 10 éve. Csomó nagy cég urgott rá, RedHat, telko vendorok és operátorok, számtalan startup, úgy 2015-18 környékén ezen pörgött mindenki, aztán elkezdett elmúlni az érdeklődés. Még a vége fele is olyan problémák kísértették a projektet, hogy python 2.x-ről hogy lehetne végre teljesen átállni 3.x-re. 2016-ban még új subprojektek indultak python 2.6-tal, mert ez volt az upstream amihez igazodni kellett (!).

A python legnagyobb rákfenéje a GIL. Workaroundolni kell, és ha workaroundolsz annak mellékhatásai vannak.

A Java nem annyira vicc, mint gondolod. Cégek rengeteg helyen használják, bár tény hogy új projektet nem szexy Java-ban kezdeni. A JVM bloat-ságáért kapsz is cserébe sokmindent, debugolás, profilozás, megfigyelhetőség terén. A JVM-ben van kb a legjobb GC (sajnos kell is). A Java-nak egy igazi baja van, hogy elkezdtek utólag kvázi-funkcionális programnyelvet csinálni belőle. Funkcionálisnak látszó elemek vannak, fejleszteni tök jó vele, de alatta teljesen imperatív, brute-force végrehajtás van, ami iszonyatos mennyiségű temporary kollekciót hoz létre és dob is el azonnal. Ez az ami miatt a GC folyton szét van tekerve, és általában borzasztóan erőforráspazarlóak lettek a java-s szoftverek. De nálunk régivágású Java service-ek simán visznek többszáz request/sec-et, 2-4 core terheléssel és 8GB rammal. Ugyanez python-ban (volt szerencsénk, újraírattak velünk 1-2 dolgot python-ba), ennek a közelébe nem tudtak menni, a wsgi-ben 100-as process pool-okkal sem. A memória ilyenkor már 64GB-ba sem akart beleférni, és a rabbit is szűk keresztmetszet lett.

Go - igazából van pár problémája, de talán javíthatóak, nem elvi szintű bajok. A GC-je fos, ezen nincs mit szépíteni (don't ask how I know...), de nem látom elvi akadályát, hogy kicseréljék jobbra. Nekem személy szerint nem tetszik, hogy nincs dinamikus library linkelés ezért minden binárisba monolitikusan belefordít minden libet. De úgy tűnik a mai docker-centrikus világban megtalálta a zsák a foltját, és kényelmes, hogy csak 1db binárist kell bedobni az image-be és mindenféle függőség nélkül. A tapasztalatom az, hogy a go-ban írt szerver-oldali programok többségükben egyszerűen működnek. Kevés a baj velük.