Internet jest wypełniony wspaniałymi kodami. Stanowią one podstawę, na której budowane są różne infrastruktury. Nawet platforma, na której właśnie to czytasz, jest zbudowana z oddaniem do tworzenia świetnych kodów. Podczas gdy przeciętny użytkownik nie zwróci na to uwagi, dobrzy programiści, z drugiej strony, zawsze starają się, aby ich aplikacje (a więc ich kodowanie) były lepsze.
Fundament, na którym napisany jest świetny kod, opiera się na umiejętnościach programisty i jego/jej wybranym języku. To nieuchronnie prowadzi do epickich starć między programistami nie tylko na poziomie umiejętności, ale głównie na ich preferowanym języku. Jest to rezultat, który najprawdopodobniej uzyskasz, gdy umieścisz obok siebie dwa świetne języki programowania, takie jak Golang(Go) i Python.
Jednakże, cofnijmy się trochę i oceńmy oba języki z punktu zasług i funkcjonalności. Odrzućmy osobiste uprzedzenia i preferencje. Następnie wyrównajmy pole gry, skill-wise. Teraz, wszystko co nam pozostało to dwa wielkie wybory: Go vs Python. Pytanie teraz brzmi, który z nich jest odpowiedni dla Ciebie?
- Powieść o Pythonie
- Mówiąc o Golang(Go)
- Wydajność Golang vs Python
- Wyszukiwanie binarne
- Sort bąbelkowy
- Read from file
- HTTP Obsługa żądań
- Python vs Golang web frameworks
- Gin
- Echo
- Go kit
- Companies using Golang
- PayPal Taps Golang to Modernize and Scale
- American Express Uses Golang for Payments & Rewards
- Salesforce porzucił Pythona na rzecz Golanga w Einstein Analytics
- Stream – Why we switched from Python to Go
- Pydio przepisało wymianę plików w Golangu
- Repustate zmigrowało API z Pythona (najpierw Django, potem Falcon) do Go
- Co wybrać?
- Golang jest szybki do nauki, rozwoju i działania
Powieść o Pythonie
Zapytaj kilku programistów, a usłyszysz, że nie było nic przed Pythonem i nie będzie nic po nim. Przez lata zdążył on zyskać miano kultowego, ponieważ jest bardzo dobrym językiem programowania. Internet jest wypełniony cudami stworzonymi przy użyciu Pythona.
Python jest stary, jeśli chodzi o lata programowania. Jego pierwsza koncepcja powstała w 1991 roku. A z wiekiem przychodzą pewne korzyści. Ma szerokie grono zwolenników, co przekłada się na to, że jest stabilny i dobrze udokumentowany. W większości przypadków można znaleźć biblioteki do prawie wszystkiego i próbki kodu do wszystkiego, co można sobie wyobrazić. Dla programistów i firm oznacza to, że wybór Pythona wiąże się z bogactwem doświadczeń i kodowania, które tylko czeka na dostęp.
Jest wiele projektów open-source, które używają Pythona jako podstawy, więc w większości przypadków nie zaczynasz od zera. Jest dobrze zintegrowany z aplikacjami dla przedsiębiorstw i może być używany w aplikacjach języka maszynowego i AI. Ma on jednak swoje minusy. Po pierwsze, nie jest idealny do zadań wymagających dużej ilości pamięci, jest trochę powolny w wykonywaniu i nie nadaje się do tworzenia aplikacji mobilnych.
Mówiąc o Golang(Go)
Opracowany w Google w 2009 roku. Go był rozwiązaniem pewnego problemu. Jego celem było stworzenie języka, który zabierał cały bagaż i nadmiar znaleziony w językach takich jak C++. To daje mu wzrost wydajności i szybkości, co sprawia, że praca z nim jest przyjemnością. Ponadto większość programistów, którzy po raz pierwszy sięgają po Go, nie będzie pozostawiona sama sobie, ponieważ znajome elementy i łatwość użycia będą miłą niespodzianką.
Nie oznacza to, że język ten jest doskonały we wszystkich przypadkach. Podczas gdy przenosi on szybkość i elegancję na wyższy poziom, pozostawia jednak kilka rzeczy do życzenia. Po pierwsze, nie posiada rozbudowanej biblioteki, ani wsparcia dla dziedziczenia. Dodatkowo, nie ma biblioteki GUI ani wsparcia dla programowania obiektowego. To, co ma do zaoferowania, to lekki wątek (Goroutines), inteligentna biblioteka standardowa, silne wbudowane bezpieczeństwo i łatwość kodowania z minimalną składnią.
Wydajność Golang vs Python
Możemy mówić bez końca o zaletach i wadach Golanga lub Pythona, ale kiedy jest to do bani, to na co wszyscy zwracamy uwagę, to jak one działają. Przeprowadziliśmy więc kilka testów na naszym stanowisku testowym z procesorem Intel® Core™ i7-9700K CPU @ 3.60GHz × 8 rdzeni. A użyty kod jest dostępny tutaj.
Wyszukiwanie binarne
Stworzyliśmy listy intów (od 1 do 100000), a następnie użyliśmy wyszukiwania binarnego, aby znaleźć zawsze tę samą liczbę 729. Wyniki są następujące:
Język | Szybkość |
---|---|
Go | 20.8 ns/op |
Python | 2442.13377 ns/op |
Sort bąbelkowy
Ponownie wygenerowaliśmy listę liczb całkowitych (tym razem losowych, o długości 10000 elementów) i posortowaliśmy je za pomocą algorytmów sortowania bąbelkowego.
Język | Szybkość |
---|---|
Go | 90805247 ns/op (0,09s) |
Python | 6708160950.6 ns/op (6,7s) |
Read from file
Prosty test odczytu pliku tekstowego „lorem ipsum”.
Język | Szybkość |
---|---|
Go | 5305 ns/op |
Python | 58359 ns/op |
HTTP Obsługa żądań
Zrobienie serwera HTTP jest naprawdę proste, ale my zadaliśmy sobie trud i zrobiliśmy analogowy w Pythonie. Sprawdziliśmy, ile czasu zajmie odpowiedź na prosty komunikat „hello world!”.
Język | Szybkość |
---|---|
Go | 0.070 ms/RQ |
Python | 1.261 ms/RQ |
Python vs Golang web frameworks
Jedną z największych zalet używania Pythona jest ogromna kolekcja bibliotek i frameworków, które są dostępne. Django i Flask to dwa najpopularniejsze frameworki webowe Pythona, które umożliwiają zbudowanie aplikacji webowej lub API w najszybszym możliwym czasie.
Golang nie ma jednego dominującego frameworka, jak Django dla Pythona lub Laravel dla PHP, a społeczność Go jest w pewnym sensie niechętna frameworkom. Wyniki ankiety Go 2018 pokazują, że rozwój webowy Golang jest najbardziej rozpowszechniony na poziomie 65% i zwiększył swoją dominację jako podstawowy obszar, w którym pracują respondenci ankiety (wzrost z 61% w zeszłym roku): rozwój webowy jest najczęstszą domeną rozwoju Go od 2016 roku.
Tutaj najpopularniejsze frameworki webowe Golang:
Gin
Gin jest frameworkiem webowym Golang, który jest znany z tworzenia wysokowydajnych API. Jest to również jeden z najprostszych frameworków do nauki. Wystarczy około 10 minut, aby się do niego przyzwyczaić. Jeśli potrzebujesz wydajności i dobrej produktywności, pokochasz Gin.
Właściwości
- Większa wydajność: Radix tree based routing, small memory foot print
- Obsługa middleware: Przychodzące żądanie HTTP może być obsługiwane przez łańcuch middlewares i końcową akcję
- Grupowanie tras: Lepiej organizuj swoje trasy
- Zarządzanie błędami: Gin zapewnia wygodny sposób zbierania wszystkich błędów występujących podczas żądania HTTP
- Rendering wbudowany: Gin zapewnia łatwe w użyciu API do renderowania JSON, XML i HTML
- Extendable: Tworzenie nowego middleware jest tak proste, wystarczy sprawdzić przykładowe kody
Echo
Echo to wysokowydajny, rozszerzalny i minimalistyczny framework webowy Go zapewniający zoptymalizowany router HTTP, grupowe API, wiązanie danych dla JSON i XML, obsługę HTTP/2 i wiele więcej.
Choć Gin jest nieco bardziej popularny (36k gwiazdek GitHuba), wielu programistów wybiera Echo (16k gwiazdek GitHuba), ponieważ ma lepszą dokumentację i jest nieco szybszym frameworkiem.
Features
- Optimized HTTP router which smartly prioritize routes
- Robust and scalable RESTful API, easily organized into groups
- Extensible middleware framework, many built-in middlewares, middleware can be set at root, group or route level
- Data binding for JSON, XML i formularzy
- Przydatne funkcje do wysyłania różnych odpowiedzi HTTP, w tym JSON, XML, HTML, File, Attachment, Inline, Stream lub Blob
- Dostosowana centralna obsługa błędów HTTP i łatwo rozszerzalne API
Go kit
Go kit to zestaw narzędzi programistycznych do budowania mikroserwisów (lub eleganckich monolitów). Go Kit jest opiniotwórczym frameworkiem. Rozwiązuje typowe problemy w systemach rozproszonych i architekturze aplikacji, dzięki czemu można skupić się na dostarczaniu wartości biznesowej.
Features
- Operate in a heterogeneous SOA – expect to interact with mostly non-Go-kit services
- RPC jako główny wzorzec przesyłania komunikatów
- Podłączalna serializacja i transport – nie tylko JSON przez HTTP
- Operate within existing infrastructures – no mandates for specific tools or technologies
Companies using Golang
Golang jest szeroko zaadoptowany przez najlepsze firmy. Na całym świecie jest ponad milion programistów używających Go – w bankowości i handlu, grach i mediach, technologii i innych branżach, w przedsiębiorstwach tak różnych jak PayPal, Capital One, IBM, Salesforce, Twitch, Uber, Dropbox i oczywiście Google.
Tutaj kilka przykładowych studiów przypadku:
PayPal Taps Golang to Modernize and Scale
Wartość Go w produkcji czystego, wydajnego kodu, który łatwo skaluje się w miarę skalowania wdrożenia oprogramowania, sprawiła, że język ten był silnie dopasowany do wspierania celów PayPal.
View case study →
American Express Uses Golang for Payments & Rewards
Go zapewnia American Express szybkość i skalowalność, której potrzebuje zarówno dla swoich sieci płatności, jak i nagród.
Zobacz studium przypadku →
Salesforce porzucił Pythona na rzecz Golanga w Einstein Analytics
Salesforce wyjaśnia, dlaczego język programowania Go firmy Google lepiej pasuje do Einstein Analytics niż Python i C.
View case study →
Stream – Why we switched from Python to Go
Mamy mały zespół programistów w Stream, który obsługuje kanały i czat dla ponad 500 milionów użytkowników końcowych. Połączenie świetnego ekosystemu, łatwego wdrożenia dla nowych programistów, szybkiej wydajności, solidnego wsparcia dla współbieżności i produktywnego środowiska programistycznego sprawia, że Go to świetny wybór.
Zobacz studium przypadku →
Pydio przepisało wymianę plików w Golangu
Pydio, rozwiązanie do przechowywania plików w chmurze sprzed Dropboxa, stało się pełnoprawną platformą do synchronizacji i udostępniania, a aplikacja trzymała się swojego początkowego stosu technicznego: LAMP, jak w Linux/Apache/MySQL/PHP. Przeczytaj artykuł o motywach całkowitego przepisania w Golangu, nowej architekturze i wyborach, które za tym stały.
Zobacz studium przypadku →
Repustate zmigrowało API z Pythona (najpierw Django, potem Falcon) do Go
Migracja zmniejszyła liczbę wymaganych instancji EC2 o 85%, a średni czas odpowiedzi na wywołanie API ze 100ms do 10ms. Ze względu na podobieństwo Pythona i Go, byli oni w stanie szybko przekształcić nasze testy jednostkowe napisane w nosie, aby dopasować je do struktury wymaganej przez Go za pomocą zaledwie kilku prostych skryptów sed.
Zobacz studium przypadku →
Co wybrać?
Choć Python pozostał ulubieńcem społeczności zachowując w pierwszym kwartale 2019 roku miejsce #2 dla najszybszego języka programowania na GitHubie pod względem pull requests (+17%), Golang nie jest tak daleko w tyle i jest gorący po piętach na #4 (+8%). Wybór pomiędzy Golangiem a Pythonem staje się jeszcze bardziej rozmazany. Niezależnie od tego, istnieje kilka rzeczy, które należy wziąć pod uwagę przy wyborze, który może być odpowiedni dla Ciebie.
-
Skalowalność: Golang został stworzony z myślą o skalowalności. Pochodzi z wbudowaną współbieżność do obsługi wielu zadań w tym samym czasie. Python używa współbieżności, ale nie jest ona wbudowana; implementuje równoległość poprzez wątki. Oznacza to, że jeśli zamierzasz pracować z dużymi zbiorami danych, to Golang wydaje się być bardziej odpowiednim wyborem.
-
Wydajność: Python nie jest znany z tego, że jest przyjazny dla pamięci lub procesora, ale dzięki ogromnej liczbie bibliotek, Python działa wydajnie dla podstawowych zadań programistycznych. Golang posiada wbudowane funkcje i jest bardziej odpowiedni dla architektur oprogramowania typu microservices.
-
Zastosowanie: Python błyszczy, gdy jest używany do pisania kodów dla sztucznej inteligencji, analityki danych, głębokiego uczenia się i tworzenia stron internetowych. Podczas gdy Golang był używany do programowania systemowego, jest uwielbiany przez programistów, którzy używają go do przetwarzania w chmurze i aplikacji klastrów obliczeniowych.
-
Społeczność &Biblioteka: Jak wspomniano wcześniej, wiek Pythona daje mu pewne zalety. Jedną z nich jest liczba bibliotek, które posiada oraz duża społeczność, która go wspiera. Golang, z drugiej strony, jest wciąż rozwijającym się językiem i nie posiada takiej liczby bibliotek i wsparcia społeczności jak Python. Jednak nie powinniśmy jeszcze odrzucać Go. Jego tempo wzrostu i przyjęcia jest niesamowite i rozszerza się każdego dnia.
-
Wykonywanie: Jeśli szybkość jest nazwą gry, to Golang wygrywa przez milę.
Po uwzględnieniu tych wszystkich, twój przypadek użycia będzie czynnikiem decydującym o tym, który język przyjąć. Biorąc pod uwagę scenariusz, w którym tworzysz zespół programistów do tworzenia mikroserwisów, Golang byłby bardziej rozsądnym wyborem tutaj, ponieważ jest zarówno szybki, łatwy do kodowania i może skalować się doskonale dobrze. Python, z drugiej strony, jest bardziej nastawiony na AI, ML i analizę danych.
Więc idąc łeb w łeb, Go wyjdzie na wierzch w większości przypadków i jest uważany za ważną alternatywę dla używania Pythona. Programiści muszą wybrać język programowania, biorąc pod uwagę charakter i wielkość projektu rozwojowego, a także zestaw umiejętności osób zaangażowanych.
Dobrą wiadomością jest jednak to, że niezależnie od wyboru, oba języki stale się rozwijają. Podczas gdy Golang może wydawać się oczywistym wyborem w większości przypadków, społeczność Pythona nie siedzi z założonymi rękami i nic nie robi. Oba języki rozwijają się i rosną. Oznacza to, że w przyszłości będziemy widzieć więcej funkcjonalności i ulepszeń.