Programista go

W programowaniu, tak jak i w innych sektorach IT, widać konkretne tendencje. Chodzi tutaj mianowicie o ewoluowanie narzędzi pracy, środowisk czy technologii lub zwyczajnie zastępowanie ich nowszymi – w większości przypadków są to zmiany ułatwiające development oraz poszerzające jego możliwości. Skupmy się jednak na technologiach, przyjmując że język programowania należy do takiej właśnie kategorii.

  Cofnijmy się do 2012 roku, wtedy bowiem pojawiły się dwa języki programowania, które można określić mianem nowych. Pierwszym z nich jest dynamiczny Elixir, który niejako wykorzystał i zastąpił Erlanga. Elixir znajduje swoje zastosowanie w tworzeniu aplikacji skalowalnych, łączy w sobie solidność programowania funkcyjnego wspomnianego już Erlanga, składnię podobną do Ruby oraz zaawansowane funkcje dla metaprogramowania. Do największych firm, które go przyswoiły warto wymienić tutaj Heroku, WhatsApp, Klarna oraz Basho.

Hello, World w Eliksirze

current_process = self()

# Spawns an Elixir process (not an operating system one!)

spawn_link(fn ->

  send current_process, {:msg, "hello world"}

end)

# Block until the message is received

receive do

  {:msg, contents} -> IO.puts contents

end

 

W tym samym roku co Elixir, pod koniec marca ukazał się także pierwszy release (tj. go1 w stabilnej wersji) opensource’owego języka Google’a, czyli Go. To właśnie na Go, nazywanym potocznie golangiem, skupimy tutaj więcej uwagi. Język nie należy do tych, które przez wielu programistów określane są jako „high level languages” (Scala, C, C++, czy bardziej egzotyczne, takie jak Muriel, APL, czy Whitespace). Co więcej, przy odpowiednim czasie i materiałach, każdy z odrobiną zacięcia i wiedzy o programowaniu jest w stanie stworzyć swoją aplikację w Go. W związku ze swoją prostotą i dynamiką użycia, tak samo jak przy Elixirze, wiele firm zdecydowało się na przepisanie swoich aplikacji webowych właśnie do Go – z tych najpopularniejszych warto wymienić choćby Wirtualną Polskę czy większe firmy: Dropbox, SendGrid i YouTube (vitess).

   Język ze stajni Google’a (oraz bardzo wielu innych partnerów) doczekał się w sierpniu stabilnej wersji 1.7. Większość zmian, które nastąpiły dotyczyły implementacji bibliotek, runtime’a i toolchaina.  Dodatkowo z najważniejszych zmian należy wymienić także dodanie portów dla IBM LinuxOne, update back-endowego compilatora x86-64 w celu generowania lepszego kodu oraz wsparcie vendoringu, które wprowadzone było już w wersji 1.5 w zeszłym roku.

Hello, World w Go

package main

import "fmt"

func main() {
    fmt.Println("Hello, World")
}

   

Dla wielu doświadczonych programistów, nauka golanga jest intuicyjna i prosta, dlatego też czas do przyswojenia google’owskiego języka szacują oni na kilka-kilkanaście dni. Niektórzy twierdzą, że tak jak Elixir był zastąpieniem Erlanga, tak Go może być potomkiem C++ na miarę nowych wyzwań w XXI wieku. Dlaczego? Ponieważ golang posiada szybszą kompilację, łatwiejszą składnię i garbage collector. Tym, co przemawia za „świetlaną przyszłością” opensource’owego języka to także elastyczne struktury danych, solidne wskaźniki i referencje oraz bardzo obszerna biblioteka standardowa pozwalająca na budowę dużych projektów z niewielką ilością zewnętrznych zależności. W Go nie znajdziemy też klas, co sprawia, że pod tym względem może być on podobny do JavaScript, lecz odmiennie od JS w golangu nie ma współdzielenia funkcjonalności między klasami.

   Długo można by jeszcze wymieniać ułatwienia występujące w Go, lecz język posiada także wady, o których także należy wspomnieć. Jednym z często wymienianych utrudnień jest wydajność oraz obsługa błędów, które przy wielu projektach mogą znacząco wydłużyć development. Niemniej, błędy w Go są naprawiane w kolejnych wersjach, a temat konkurencyjności języka stanowić może inspirację dla kolejnych artykułów na bulldogjob.pl.

Golang to także ciągle rosnąca społeczność developerów i sympatyków. Golangowcy pracujący nad własnymi projektami, czy też zrzeszeni w ramach różnych firm, a także osoby, które w Go widzą przyszłość back-endu, starają się szukać wydarzeń oraz społeczności, w ramach których mogą wymienić swoje uwagi i spostrzeżenia oraz podzielić się doświadczeniem.

   Firma w której pracuje – GogoApps – także postanowiła zrzeszyć programistów i sympatyków Go, stwarzając dla nich forum wymiany informacji. To nie tylko ciągle rosnąca grupa na Facebooku ale także wznowiony cykl comiesięcznych meetupów odbywających się w Warszawie w każdy ostatni czwartek miesiąca – o szczegółach więcej informacji w dalszej części artykułu. Podobne wydarzenia mają miejsca także w Krakowie, Trójmieście czy Wrocławiu. Poza Facebookiem dużo informacji o polskiej scenie golanga można znaleźć także na Slacku (https://gophers.slack.com), Meetup.com (www.meetup.com/Golang-Warsaw) oraz IRC-u (na freenode. kanał ##golang-pl). Wymienione miejsca stanowią matecznik dla grupy profesjonalistów oraz entuzjastów Go, którzy chętnie odpowiedzą na pytania dotyczące technologii oraz przedstawią proponowane rozwiązania konkretnych problemów.

Golang Warsaw – zdjęcie z trzeciego meetupu poświęconego Golangowi, organizowanego przez GogoApps w Noon/Noon (źródło własne)

 

Oczywiście warto spojrzeć na naprawdę duże wydarzenia związane z technologią, które mają skalę ponadnarodową. Do tych znaczących możemy na pewno zaliczyć konferencję „dotGo”, która odbyła się w Paryżu 10 października. W połowie lipca w amerykańskim Denver odbył się także „Gophercon” – największa na świecie dwudniowa konferencja poświęcona Go. Podczas takich eventów uczestnicy mają niepowtarzalną okazję do wymiany wiedzy z entuzjastami Go z całego świata.

   Jak można zatem stwierdzić, Go może stanowić poważną konkurencję dla języków o wysokim „progu nauczenia” oraz skomplikowania. W googlowskiej technologii „na plus” działanie bowiem nie tylko swoboda i szybkość działania, ale także wsparcie ze strony społeczności i wydawcy. Owszem jest jeszcze trochę rzeczy do poprawienia, ale z pewnością w niedalekiej przyszłości niedogodności będą usuwane, a golang stanie się jeszcze bardziej domyślmy i skierowany do użytku w projektach komercyjnych. Poczekajmy zatem na kolejne release’y i śledźmy nowinki w grupach poświęconych technologii spod znaku susła.

 

Źródła:


Edgar Czop          
New Business Manager