11 maj 20216 min czytania
Dawid Karczewski
Senior full stack developer i CTO w Ideamotive.
W 2023 roku mnogość języków programowania, których można się uczyć i używać w projektach, potrafi przytłoczyć. Pewnie dobrze znasz cechy takich języków jak Java, Python, C#, itd. Dziś poznamy trochę mniej popularny i nowocześniejszy język - Go.
W ankiecie Stackoverflow Go jest wskazywany jako 5. najbardziej lubiany i 3. najbardziej pożądany język programowania.

Go, często nazywany Golangiem dla ułatwienia wyszukiwania w sieci, to statycznie typowany, kompilowany język programowania zaprojektowany w Google przez Roberta Griesemera, Roba Pike'a i Kena Thompsona. Pierwsze wydanie ukazało się w 2007 roku. Język słynie z prostoty i wydajności - zarówno w składni, jak i w wykonaniu.
Go mocno wspiera programowanie współbieżne, przez co jest popularnym wyborem w nowoczesnych aplikacjach wymagających wysokiej wydajności: w programowaniu sieciowym, big data, uczeniu maszynowym i aplikacjach serwerowych.
Składnia Go przypomina C, ale język ma bezpieczeństwo pamięci, garbage collection, typowanie strukturalne i współbieżność w stylu CSP (Communicating Sequential Processes). Ma też solidną bibliotekę standardową z szerokim zestawem narzędzi i wsparciem dla aplikacji webowych, obsługi plików, testów i wielu innych rzeczy.
Go uchodzi też za jeden z najlepiej płatnych języków - programiści pracujący w nim zarabiają średnio 140 tys. dolarów rocznie.
Zostań z nami i dowiedz się, czym jest Go/Golang, czy nadaje się do aplikacji webowych i jakie jest 5 najpopularniejszych frameworków webowych w Golangu.
Go to statycznie typowany, kompilowany język programowania. Jego domena to golang.org i dlatego część osób mówi na niego Golang.
Język pojawił się po raz pierwszy w 2009 roku, a stworzyło go Google. Roberta Griesemra, Roba Pike'a i Kena Thompsona połączyła niechęć do C++ - próbowali zaprojektować język, który weźmie przydatne właściwości innych języków, ale nie ich wady.
Go łączy zalety takich języków jak C (typowanie statyczne i czas wykonania), Python i JavaScript (nieskomplikowana składnia).
W 12 lat Go przegonił popularnością Ruby i Kotlina i stał się jednym z najbardziej lubianych i pożądanych języków w środowisku programistów - wynika z StackOverflow Developer Survey.
Dyskusja o Golangu w aplikacjach webowych zdaje się nie mieć końca. Są programiści webowi którzy wierzą w wyższość Golanga w backendzie, i tacy, którzy polegają na „klasycznych” językach. Znajdziesz nawet programistów budujących swoje frontendy w Go, choć warto zauważyć, że to raczej frontend „po stronie serwera”.
Ogólnie jednak Go zdecydowanie nadaje się do aplikacji webowych. Jak każdy język ma jednak swoje plusy i minusy. Przyjrzyjmy się im, żeby odpowiedzieć na to pytanie czymś więcej niż tak lub nie.
.png)
Składnia Go jest bardzo prosta, zwłaszcza jeśli masz za sobą C lub Javę. Twórcy języka pochodzą z Google, gdzie wielu programistów musiało pracować na tym samym kodzie. Postanowili więc stworzyć składnię możliwie prostą i czytelną, tak by inni programiści też rozumieli kod. Fragmenty kodu są przy tym dość niezależne - zmiana w jednej sekcji nie wpływa na drugą.
Golang jest szybki, bo kompiluje się do kodu natywnego i jest statycznie typowany. Sama kompilacja też jest szybka. Programiści twierdzą, że jest szybszy niż Python i tak szybki jak C++.
Wielu z tych, którzy twierdzą, że Go nie nadaje się do aplikacji webowych, mówi, że język nie opiera się na żadnych dużych frameworkach. To w gruncie rzeczy nie problem. Go ma świetną bibliotekę standardową: czystą, spójną i łatwą w użyciu. Co więcej, nie musisz prowadzić długich poszukiwań odpowiedniego frameworka.
Pakiet net/http jest kluczowy przy aplikacjach webowych i znajdziesz go w bibliotece standardowej Go. Go oferuje 3 żądania http: get, post i head. Tworząc http. Client i przekazując wartość do Timeout, możesz tworzyć kolejne opcje i żądania.
Go dzieli duże programy na małe zadania i pozwala im działać jednocześnie dzięki gorutynom i kanałom. Komputer wykonuje więc zadania dużo szybciej i mniej czasu spędza bezczynnie.
Golang/Go jest więc łatwy do nauki i czytania, współbieżny dzięki gorutynom i kanałom, szybszy od wielu innych popularnych języków, ma świetną bibliotekę standardową i oferuje pakiet net/http do aplikacji webowych.
Nie użyjesz ponownie tego samego kodu dla tych samych funkcji na zbiorze różnych typów. W efekcie napiszesz więcej kodu i spędzisz więcej czasu nad aplikacją webową. Wiadomo też, że dłuższy kod trudniej utrzymać. Jeśli szukasz narzędzi, które podniosą Twoją produktywność, znajdziesz je tutaj.
Golang uchodzi za bardzo młody, zwłaszcza w porównaniu z Javą czy Pythonem. Nie ma więc jeszcze dużej społeczności programistów webowych Go (choć stale rośnie), lepsze biblioteki dopiero powstaną, a książki dopiero zostaną napisane.
Jego zaleta jest jednocześnie jego wadą. Go jest tak prosty, że bywa uznawany za powierzchowny. Przez to ma sporo ograniczeń i zjawisko zajmowania się niskopoziomowymi rzeczami w języku wysokiego poziomu.
Podsumowując: język wymaga więcej kodu, wciąż się rozwija i ma ograniczone zastosowania oraz możliwości, zwłaszcza gdy chodzi o Golanga w backendzie.
Mimo całej krytyki coraz więcej firm wybiera aplikacje webowe w Golangu, gdy chodzi o następujące typy projektów:
Go jest bardzo skalowalny, współbieżny i dostarcza idiomatyczne API. Google - co oczywiste - używa Go w swoich usługach chmurowych. Golanga wykorzystały też Dropbox, Terraform i Docker.
Platformy społecznościowe zwykle mają duże obciążenia, a Go daje świetną wydajność i współbieżność. Dlatego YouTube, SoundCloud i Netflix zdecydowali się zatrudnić programistów webowych Go do swoich projektów.
Usługi takie jak Uber muszą zapewnić szybkie przetwarzanie map i obsłużyć ogromne ilości danych. Golang daje świetną wydajność i obsługuje tysiące żądań w ciągu sekundy.
Ogólnie, jak wspomnieliśmy, framework w Golangu nie jest Ci potrzebny. Jeśli jednak chcesz przyspieszyć pracę albo potrzebujesz dodatkowej pomocy, język wspiera kilka świetnych frameworków webowych. Należą do nich:
Gin to bardzo prosty framework, stworzony do kluczowych zadań w aplikacjach webowych. Jest szybki, potrafi wyłapać awarie i paniki oraz się po nich podnieść, ma routing (możesz więc zbudować wygląd aplikacji webowej), zbiera błędy z żądań HTTP i zajmuje się renderowaniem.
Gin ma obszerną dokumentację na GitHubie, która pomoże początkującym. Nie sprawdzi się jednak w dużych aplikacjach backendowych ani rozwiązaniach klasy enterprise.
Beego ma bardziej specyficzne rzeczy, takie jak interfejsy i osadzanie struktur. Framework automatyzuje testowanie, pakowanie i wdrażanie, przez co budowa aplikacji webowej idzie szybciej. Możesz też monitorować QPS, zużycie pamięci i CPU oraz status gorutyn, co daje programiście pełną kontrolę nad aplikacją. Co więcej, Beego ma własny Object-Relationship Map (ORM), który mocno upraszcza organizację bazy danych oprogramowania.
Przez rozbudowane funkcje i złożony rdzeń może nie być odpowiedni dla początkujących, ale zaskoczy użytkowników Django taką samą linią poleceń.
Kit skupia się głównie na budowaniu mikroserwisów i tworzeniu mocnych interfejsów. Programiści mogą wybrać bazy danych, etapy i komponenty, które lubią najbardziej. Framework jest przy tym lekki, więc łatwo się go używa.
Korzystając z Kita, możesz skupić się na biznesowej stronie programowania, bo framework zaprojektowano pod interoperacyjność.
Jedną z wad Kita jest duży narzut przy dodawaniu API do usługi, wynikający z intensywnego użycia interfejsów.
Echo to kolejny minimalistyczny framework, który mocno rozszerza możliwości Go. Ma rozszerzalne middleware, obsługuje centralnie błędy HTTP, renderuje, pomaga budować RESTful API i zawiera certyfikaty TLS.
Framework Echo utrzymuje jeden programista, więc jego kod rzadko jest aktualizowany, co bywa sporą wadą.
Jest tak prosto, jak brzmi: pakiet http/net, tylko szybszy. Http musi za każdym razem alokować pamięć dla gorutyny, a fasthttp ma model puli workerów z zerową alokacją. Fasthttp świetnie radzi sobie z ogromnymi ilościami danych - bez trudu obsługuje ponad 100 tys. qps i ponad milion równoczesnych połączeń keep-alive na współczesnym sprzęcie.
Jedyną wadą Fasthttp jest brak zgodności z Beego i HTTP/2.
Martini jest wydajny i oszczędny, a przy tym mocno wyposażony do szybkiego pisania modułowych aplikacji i usług webowych w Golangu. Chwali się imponującym i łatwym do zintegrowania wsparciem zewnętrznym. Martini jest w grze od dłuższego czasu - ma sporo dokumentacji i dużą bazę wdrożeń.
Wybierając framework Golanga do swojego projektu, warto rozumieć cechy, zalety i możliwe ograniczenia każdego z nich. W tym artykule omówiliśmy 5 najpopularniejszych, ale Golang oferuje też wiele innych opcji, takich jak Gorilla, Gocraft czy Buffalo. Śmiało sprawdź i je, by podjąć dobrze poinformowaną decyzję.
Jeśli nie chcesz zagłębiać się w cechy każdego frameworka, oto tabela TL;DR z zaletami i wadami każdego z nich:
.png)
Go jest w świecie programowania stosunkowo nowy, ale udowodnił, że jest dobrym wyborem do aplikacji webowych, obsługując Google, YouTube, Netflix i Ubera.
Jest szybki, łatwy, wspiera współbieżność i ma świetną bibliotekę, która nie wymaga dodatkowych frameworków. Jednocześnie część programistów uważa go za powierzchowny i ograniczony oraz irytuje się długim kodem bez generyków.
Golang w aplikacjach webowych to idealne rozwiązanie dla usług chmurowych, platform społecznościowych i usług na żądanie.
Jeśli chcesz ułatwić sobie pracę albo rozszerzyć możliwości Go, sięgnij po frameworki takie jak Gin, Beego, Kit, Echo, Martini czy fasthttp.
Jeśli wciąż nie masz pewności, czy Go pasuje do Twojego projektu, albo potrzebujesz dedykowanych programistów Golanga do zespołu, śmiało się z nami skontaktuj!
Dawid jest full stack developerem. Tworzy aplikacje w Ruby on Rails i React Native od pierwszego pomysłu aż po wdrożenie. Buduje dla naszych klientów rozwiązania, które pomagają im rosnąć.
Zobacz wszystkie wpisy autoraBiałoruś • Polska • Rumunia • Ukraina
Czytaj terazPopularne artykuły
21 inspirujących projektów UI aplikacji mobilnych na 2023 rok
Michał Pruciak 7 min czytania
MedTech vs HealthTech vs BioTech: jakie są różnice?
Michał Pruciak 7 min czytania
10 biznesowych zastosowań sieci neuronowych (z przykładami!)
Michał Pruciak 4 min czytania
10 przykładów dobrych praktyk w web designie na 2023 rok
Adam Kozłowski 7 min czytania
28 znanych aplikacji webowych napisanych w PHP
Dawid Karczewski 14 min czytania
Jakich usług programistycznych szukasz?
W naszej sieci talentów czekają dziesiątki zweryfikowanych specjalistów Golang.
Dane rejestrowe:
Firma
Usługi
Najczęściej poszukiwani specjaliści
Ocena 4,8 / 5,0 od klientów z różnych branż i lokalizacji.