Internetul este plin de coduri grozave. Acestea formează piatra de temelie pe care sunt construite diverse infrastructuri. Chiar și platforma pe care citiți aceste rânduri este construită cu dedicație pentru a crea coduri grozave. În timp ce utilizatorul mediu nu va lua notă de acest lucru, dezvoltatorii buni, pe de altă parte, caută mereu să își îmbunătățească aplicațiile (și, prin urmare, codurile lor).
Bazele pe care sunt scrise coduri excelente se bazează pe abilitatea dezvoltatorului și pe limbajul ales de acesta. Acest lucru duce în mod inevitabil la unele ciocniri epice între dezvoltatori nu doar în funcție de nivelul de îndemânare, ci mai ales de limbajul lor preferat. Acesta este rezultatul pe care cel mai probabil îl veți obține atunci când puneți două mari limbaje de programare, cum ar fi Golang(Go) și Python, unul lângă altul.
Cu toate acestea, haideți să ne retragem puțin și să evaluăm ambele limbaje din punct de vedere al meritelor și funcționalității. Să eliminăm prejudecățile și preferințele personale. Apoi, egalizați terenul de joc, din punct de vedere al abilităților. Acum, tot ce ne rămâne sunt două opțiuni excelente: Go vs. Python. Întrebarea devine acum: care este cel mai potrivit pentru dumneavoastră?
- O poveste despre Python
- Vorbind de Golang(Go)
- Performanța Golang vs Python
- Cercetare binară
- Bubble sort
- Citește din fișier
- HTTP Gestionarea cererilor
- Python vs Golang web frameworks
- Gin
- Echo
- Go kit
- Companii care utilizează Golang
- PayPal Taps Golang to Modernize and Scale
- American Express folosește Golang pentru plăți & Recompense
- Salesforce a renunțat la Python pentru Golang în Einstein Analytics
- Stream – De ce am trecut de la Python la Go
- Pydio a rescris partajarea fișierelor pregătită pentru întreprinderi în Golang
- Repustate a migrat API-ul din Python (mai întâi Django, apoi Falcon) în Go
- Ce să alegi?
- Golang este rapid de învățat, de dezvoltat și de rulat
O poveste despre Python
Întrebați unii dezvoltatori și veți auzi că nu a existat nimic înainte de Python și nu va exista nimic după el. De-a lungul anilor, a reușit să câștige un cult pentru că este un limbaj de programare foarte bun. Internetul este plin de minuni create folosind Python.
Python este vechi, în termeni de ani de programare. A fost conceptualizat pentru prima dată în 1991. Iar odată cu vârsta vin și anumite avantaje. Are un număr mare de adepți, ceea ce se traduce prin faptul că este stabil și bine documentat. În cele mai multe cazuri, veți găsi biblioteci pentru aproape orice și exemple de cod pentru aproape tot ceea ce vă puteți gândi. Ceea ce înseamnă acest lucru pentru dezvoltatori și întreprinderi este că alegerea de a folosi Python vine cu o bogăție de experiență și codare care abia așteaptă să fie accesată.
Există o mulțime de proiecte open-source care folosesc Python ca bază, așa că, în cele mai multe cazuri, nu începeți de la zero. Este bine integrat în aplicațiile de întreprindere și poate fi utilizat în aplicații de limbaj automat și AI. Dar are dezavantajele sale. În primul rând, nu este ideal pentru sarcini care necesită o utilizare intensivă a memoriei, este puțin cam lent pentru execuții și nepotrivit pentru dezvoltarea de aplicații mobile.
Vorbind de Golang(Go)
Dezvoltat la Google în 2009. Go a fost o soluție la o problemă. Scopul său a fost de a crea un limbaj care să elimine toate bagajele și excesele găsite în limbaje precum C++. Acest lucru îi conferă un plus de performanță și viteză care face ca lucrul cu el să fie o încântare. În plus, majoritatea dezvoltatorilor care iau Go pentru prima dată nu vor fi lăsați în derivă, deoarece elementele familiare și ușurința de utilizare vor fi o surpriză plăcută.
Aceasta nu înseamnă că limbajul este perfect în toate cazurile. În timp ce duce viteza și eleganța la un nivel superior, el lasă totuși în urmă câteva lucruri de dorit. În primul rând, nu are o bibliotecă extinsă și nici suport pentru moștenire. În plus, nu există o bibliotecă GUI sau un suport pentru programarea orientată pe obiecte. Ceea ce are în favoarea sa este un thread ușor (Goroutines), o bibliotecă standard inteligentă, o securitate puternică încorporată și este ușor de codat cu o sintaxă minimă.
Performanța Golang vs Python
Potem vorbi la nesfârșit despre avantajele și dezavantajele lui Golang sau Python, dar atunci când este vorba de un fir, ceea ce căutăm cu toții este modul în care acestea performează. Așa că am făcut câteva teste pe platforma noastră de testare care rulează un procesor Intel® Core™ i7-9700K la 3,60 GHz × 8 nuclee. Iar codul folosit este disponibil aici.
Cercetare binară
Am creat liste de ints (de la 1 la 100000) și apoi am folosit căutarea binară pentru a găsi mereu același număr 729. Rezultatele sunt:
Limbă | Viteză |
---|---|
Go | 20.8 ns/op |
Python | 2442.13377 ns/op |
Bubble sort
Din nou am generat o listă de numere întregi (de data aceasta aleatoare, cu o lungime de 10000 de elemente) și le-am sortat folosind algoritmi de tip bubble sort.
Limbajul | Viteza |
---|---|
Go | 90805247 ns/op (0,09s) |
Python | 6708160950.6 ns/op (6,7s) |
Citește din fișier
Un test simplu de citire a unui fișier text „lorem ipsum”.
Limbă | Viteză |
---|---|
Go | 5305 ns/op |
Python | 58359 ns/op |
HTTP Gestionarea cererilor
Realizarea unui server HTTP este foarte ușoară, dar noi am făcut un efort și l-am făcut pe cel analogic în Python. Am verificat cât timp ar dura să răspundă cu un simplu mesaj „hello world!”.
Limbajul | Viteza |
---|---|
Go | 0.070 ms/RQ |
Python | 1.261 ms/RQ |
Python vs Golang web frameworks
Unul dintre cele mai mari avantaje ale utilizării Python este colecția vastă de biblioteci și framework-uri care sunt disponibile. Django și Flask sunt două dintre cele mai populare framework-uri web Python care vă permit să construiți o aplicație web sau API în cel mai scurt timp posibil.
Golang nu are un singur framework dominant precum Django pentru Python sau Laravel pentru PHP, iar comunitatea Go este într-un fel aversă la framework-uri. Rezultatele sondajului Go 2018 arată că dezvoltarea web Golang este cea mai răspândită, cu 65%, și și-a sporit dominația ca domeniu principal în care lucrează respondenții la sondaj (în creștere de la 61% anul trecut): dezvoltarea web a fost cel mai comun domeniu pentru dezvoltarea Go din 2016.
Iată cele mai populare framework-uri web Golang:
Gin
Gin este un framework web Golang cunoscut pentru dezvoltarea de API-uri performante. Este, de asemenea, unul dintre cele mai simple framework-uri de învățat. Este nevoie de aproximativ 10 minute pentru a vă obișnui cu el. Dacă aveți nevoie de performanță și de o productivitate bună, vă va plăcea Gin.
Caracteristici
- Performanță mai rapidă: Rutare bazată pe arbore Radix, amprentă mică de memorie
- Suport middleware: O cerere HTTP primită poate fi gestionată de un lanț de middleware-uri, iar acțiunea finală
- Gruparea rutelor: Organizați-vă mai bine rutele
- Gestionarea erorilor: Gin oferă o modalitate convenabilă de a colecta toate erorile apărute în timpul unei cereri HTTP
- Rendare integrată: Gin oferă un API ușor de utilizat pentru redarea JSON, XML și HTML
- Extensibil: Crearea unui nou middleware este atât de ușoară, trebuie doar să verificați codurile de exemplu
Echo
Echo este un cadru web Go de înaltă performanță, extensibil și minimalist care oferă un router HTTP optimizat, API-uri de grup, legături de date pentru JSON și XML, suport HTTP/2 și multe altele.
În timp ce Gin este un pic mai popular (36k stele GitHub), mulți dezvoltatori aleg Echo (16k stele GitHub) deoarece are o documentație mai bună și este un framework puțin mai rapid.
Caracteristici
- Router HTTP optimizat care prioritizează inteligent rutele
- Apif RESTful robust și scalabil, ușor de organizat în grupuri
- Cadru middleware extensibil, multe middleware-uri încorporate, middleware-ul poate fi setat la nivel de rădăcină, grup sau rută
- Legătură de date pentru JSON, XML și sarcina utilă a formularului
- Funcții practice pentru a trimite o varietate de răspunsuri HTTP, inclusiv JSON, XML, HTML, fișier, atașament, Inline, Stream sau Blob
- Manipulare centrală personalizată a erorilor HTTP și API ușor de extins
Go kit
Go kit este un set de instrumente de programare pentru construirea de microservicii (sau monolite elegante). Go Kit este un cadru de opinie. Rezolvă probleme comune în sistemele distribuite și în arhitectura aplicațiilor, astfel încât să vă puteți concentra pe furnizarea de valoare de afaceri.
Caracteristici
- Operați într-o SOA eterogenă – așteptați-vă să interacționați cu majoritatea celor care nu sunt Go-.kit services
- RPC ca model principal de mesagerie
- Seriabilizare și transport – nu doar JSON peste HTTP
- Operați în cadrul infrastructurilor existente – nu există mandate pentru instrumente sau tehnologii specifice
Companii care utilizează Golang
Golang este adoptat pe scară largă de companiile de top. Există peste un milion de dezvoltatori care folosesc Go la nivel mondial – acoperind sectoarele bancar și comercial, jocuri și media, tehnologie și alte industrii, la întreprinderi atât de diverse precum PayPal, Capital One, IBM, Salesforce, Twitch, Uber, Dropbox și, bineînțeles, Google.
Iată câteva exemple de studii de caz:
PayPal Taps Golang to Modernize and Scale
Valoarea lui Go de a produce cod curat și eficient, care se adaptează cu ușurință pe măsură ce implementarea software-ului se extinde, a făcut ca limbajul să fie foarte potrivit pentru a sprijini obiectivele PayPal.
Vezi studiul de caz →
American Express folosește Golang pentru plăți & Recompense
Go îi oferă lui American Express viteza și scalabilitatea de care are nevoie atât pentru rețelele sale de plăți, cât și pentru cele de recompense.
Vezi studiul de caz →
Salesforce a renunțat la Python pentru Golang în Einstein Analytics
Salesforce explică de ce limbajul de programare Go de la Google este mai potrivit decât Python și C pentru Einstein Analytics.
Vezi studiul de caz →
Stream – De ce am trecut de la Python la Go
Avem o echipă mică de dezvoltare la Stream care alimentează feed-uri și chat pentru peste 500 de milioane de utilizatori finali. Combinația dintre Go și un ecosistem grozav, îmbarcarea ușoară pentru noii dezvoltatori, performanța rapidă, suportul solid pentru concurență și un mediu de programare productiv îl fac o alegere excelentă.
Vezi studiul de caz →
Pydio a rescris partajarea fișierelor pregătită pentru întreprinderi în Golang
Pydio, soluția de stocare în cloud de dinainte de Dropbox, s-a transformat într-o platformă de sincronizare și partajare cu drepturi depline, iar aplicația a rămas la stiva sa tehnică inițială: LAMP, ca în Linux/Apache/MySQL/PHP. Citiți un articol despre motivațiile rescrierii în întregime în Golang, noua arhitectură și alegerile din spatele ei.
Vezi studiul de caz →
Repustate a migrat API-ul din Python (mai întâi Django, apoi Falcon) în Go
Migrarea a redus numărul de instanțe EC2 necesare cu 85% și timpul mediu de răspuns al unui apel API de la 100ms la 10ms. Datorită similitudinii dintre Python și Go, au reușit să reprofileze rapid testele noastre unitare scrise în nose pentru a se potrivi structurii pe care Go o cere cu doar câteva scripturi sed simple.
Vezi studiul de caz →
Ce să alegi?
În timp ce Python a rămas un favorit al comunității, păstrând locul 2 în primul trimestru din 2019 pentru cel mai rapid limbaj de programare pe GitHub în ceea ce privește solicitările de pull (+17%), Golang nu este atât de departe în urmă și se află pe urmele sale pe locul 4 (+8%). Alegerea între Golang și Python devine și mai neclară. Indiferent, există câteva lucruri care trebuie luate în considerare atunci când selectați care ar putea fi potrivit pentru dumneavoastră.
-
Scalabilitate: Golang a fost creat cu scalabilitatea în minte. Acesta vine cu concurența încorporată pentru a gestiona mai multe sarcini în același timp. Python folosește concurența, dar nu este încorporată; implementează paralelismul prin fire de execuție. Acest lucru înseamnă că, dacă aveți de gând să lucrați cu seturi mari de date, atunci Golang pare a fi o alegere mai potrivită.
-
Performanță: Python nu este cunoscut ca fiind prietenos cu memoria sau cu procesorul, dar cu numărul său imens de biblioteci, Python se comportă eficient pentru sarcinile de dezvoltare de bază. Golang vine cu caracteristici încorporate și este mai potrivit pentru arhitecturi software de microservicii.
-
Aplicații: Python strălucește atunci când este folosit pentru a scrie coduri pentru inteligență artificială, analiză de date, învățare profundă și dezvoltare web. În timp ce Golang a fost folosit pentru programarea de sistem, este îndrăgit de dezvoltatorii care îl folosesc pentru aplicații de cloud computing și cluster computing.
-
Comunitate & Bibliotecă: După cum s-a menționat anterior, vechimea lui Python îi conferă anumite avantaje. Unul dintre acestea este numărul de biblioteci pe care le are și comunitatea mare care îl susține. Golang, pe de altă parte, este încă un limbaj în creștere și nu are numărul de biblioteci și suportul comunității pe care îl comandă Python. Cu toate acestea, nu ar trebui să îl excludem încă pe Go. Rata sa de creștere și adopție este incredibilă și se extinde în fiecare zi.
-
Execuție: Dacă viteza este numele jocului, atunci Golang câștigă cu o milă.
După ce toate acestea sunt luate în considerare, cazul dvs. de utilizare va fi factorul determinant în ceea ce privește limbajul de adoptat. Având în vedere un scenariu în care înființați o echipă de dezvoltare pentru a crea microservicii, Golang ar fi alegerea cea mai rezonabilă în acest caz, deoarece este atât rapid, cât și ușor de codat și poate fi scalat excelent de bine. Python, pe de altă parte, este mai mult orientat către AI, ML și analiza datelor.
Așa că, mergând cap la cap, Go ar ieși pe primul loc în majoritatea cazurilor și este considerat a fi o alternativă validă la utilizarea Python. Dezvoltatorii trebuie să aleagă un limbaj de programare luând în considerare natura și dimensiunea proiectului de dezvoltare, precum și setul de competențe al celor implicați.
Veștile bune, totuși, sunt că, indiferent de alegere, ambele limbaje sunt în continuă evoluție. În timp ce Golang ar putea părea o alegere evidentă în majoritatea cazurilor, comunitatea Python nu stă degeaba și nu face nimic. Ambele limbaje se extind și cresc. Acest lucru înseamnă că vom vedea mai multe funcționalități și îmbunătățiri în viitor.
.