Jakiś czas temu uświadomiłem sobie ze na Clarionie świat programistyczny się nie kończy i jednak pozostawanie przy samym Clarionie ogranicza mnie i to mocno. Oczywiście nadal pozostaje leniwym programista i nie chce i się należeć do grupy, która zajmuje się klepaniem nudnych CRUD’ów.
Rozwinę moje przemyślenia najprawdopodobniej w innym wpisie, teraz skupie się nad językiem Go (Golang).
Gdzieś w internetach znalazłem takie porównanie gdzie była porównywana wydajność aplikacji napisanych w różnych językach w porównaniu do C++ i w czołowce pojawił sie język go odstając nieco od .Net core a bijąc na głowe Javy, Pythony itp. Język kompilowany jest do żywego exe bez żadnych jitów i zgrzytów w dodatku do pojedynczego pliku gdzie jest wszystko.
W 2 wieczory na sucho wchłonołem 2 książeczki/broszurki na temat tego języka. Przy okazji polecam ebooki z Syncfusion, są za free i w miarę skompresowany sposób próbują nam przedstawić różne tematy ze świata programowania https://www.syncfusion.com/resources/techportal/ebooks.
Więc poczytałem sobie o tym Golang (skrót od Go language – gdybyśmy wyszukiwali po samym go to w wynikach dostalibyśmy jakieś bzdetne artykuły np z pudelka czy innego pająka). Oczywiście rozleniwiony różnymi IDE programowanie w vi i kompilowanie w sesji terminalowej podobała mi się podczas kilku pierwszych przykładów i potem mocno zniechęciła.
Poświęciłem troche czasu na poczytanie czego można użyć. Wybór był zdecydowanie większy niż w przypadku Clariona ;). Pod testach kilku wariantów padło na Visual Studio Code (Atom za wolny, Sublime i Notepad++ nie obsługują debuggera, Vime jest dla masochistów z większym odchyłem niż ja, a GoIde kosztuje więcej niż skrzynka Wilgoci Wąwozu prosto z Majdanu Starego k/Wojsławic i w dodatku chciała ode mnie jakiejś konfiguracji innymi słowy nie działała).
Z tym Visual Studio Code tez prosto nie było, opisów w sieci jest od groma, ale albo nie napisali albo ja zbyt nieuważnie czytałem. Za cholrę nie chaiło mi to działać. Dopiero jak zajrzałem w logi to okazało się, że brakuje mi git’a. Trzeba go zainstalować i dodatkowo wskazać ścieżkę do katalogu z gitem w zmiennych środowiskowych.
Kroki jakie należy wykonać:
- Wejść na stronę https://golang.org i tam w okienku nazwany go Playground, pobawić się językiem. Jeśli cie nie zniechęci przejdź dalej…
- Po prawej stronie jest rysunek (podobno) susła, trzeba tam kliknąć, zainstalować to co się ściągnie. W starszych windowsach zrestartowac komputer.
- Instalujemy VS Code, po uruchomieniu wciskamy Shift+Ctrl+X wyszukujemy go lang i instalujemy pakiet autorstwa lukehoban. Patrzymy w logi jeśli jest jakiś problem z git’em, tzn ze go zle zainstalowaliśmy i trzeba to poprawić.
- na wszelki wypadek ręcznie dociągamy dodatkowe biblioteki i narzędzia:
go get -v -u github.com/peterh/liner github.com/derekparker/delve/cmd/dlv go get -u -v github.com/nsf/gocode go get -u -v github.com/rogpeppe/godef go get -u -v github.com/golang/lint/golint go get -u -v github.com/lukehoban/go-find-references go get -u -v github.com/lukehoban/go-outline go get -u -v sourcegraph.com/sqs/goreturns go get -u -v golang.org/x/tools/cmd/gorename go get -u -v github.com/tpng/gopkgs go get -u -v github.com/newhook/go-symbols
i włala … można zacząć zabawę!
świetne źródło przykładów:
Oficjalna dokumentacja
Gdyby były problemy z debugowaniem to odsyłam tutaj:
https://github.com/derekparker/delve/tree/master/Documentation/installation
na syncfusion sa 2 książeczki:
https://www.syncfusion.com/resources/techportal/details/ebooks/Go_Succinctly
https://www.syncfusion.com/resources/techportal/details/ebooks/Go_Web_Development
jak narazie 2 rzeczy mnie zainteresowły w tym języku :
- funkcje mogą zwraca wiele parametrów
- plik wykonywalny jest samodzielny, nie potrzebuje żadnych dodatkowych bibliotek itp
- Język został tak napisany aby poradzić sobie w mocno obciążonym środowisku i dobrze obsługuje współbieżność.
- Formatowanie kodu ma znaczenie, nie można go pisać byle jak bo się nie skompiluje. Np nawias klamrowy musi się zaczynać w tym samym wierszu co wyrażenie if
- Jak zadeklarowaliśmy jakaś zmienna lub dodaliśmy bibliotekę, której potem nie wykorzystujemy, to jest to marnotrastwo pamięci, czasu i td i tez jest to błąd.