blog.michalt.pl

It’s time to Go

16.08.2019 21:17 - Tech

Chciałbym Was dziś poinformować o tym, że Flux (mój webowy shell) w następnej wersji nie będzie napisany w języku Java. W Scali również nie… Zdecydowałem się na język Go. A co z blogiem? Tego jeszcze nie wiem, ale myślę, że odpowiedź na to pytanie może być podobna.

Tu wypadałoby opowiedzieć, czemu tak, a nie inaczej. Powodów jest wiele. Po pierwsze, moim zdaniem Go jest językiem nowocześniejszym. Ma przyjemniejszą składnię i daje duży zysk wydajnościowy. Ponadto warto wspomnieć o genialnych bibliotekach do webu.


Wdrażanie aplikacji w Javie, nawet tej opartej na Play framework, bez automatyzacji jest niczym podrzynanie sobie żył tępymi nożyczkami. W Go mamy dwa możliwe scenariusze: kompilujemy i odpalamy binarkę lub odpalamy kod w Go.
Proces kompilacji jest kilkadziesiąt, jeśli nie kilkaset razy szybszy od tego z Javy. Do tego systemy spełniania zależności… Go ma to u siebie z bomby, bez tysiąca zewnętrznych, powolnych aplikacji i niepotrzebnych plików konfiguracyjnych… Wszystko trwa krócej, jest łatwiejsze, elastyczniejsze, przyjemniejsze, lżejsze i nowocześniejsze.
Czemu nie PHP? PHP wypada jeszcze gorzej od Play. Jest jeszcze mniej wydajny, daje mniej możliwości (m.in. brak współbieżności, dane znikają z pamięci po przeparsowaniu kodu – chyba że wrzucimy je w cache) i zawiera kilka dziwnych rozwiązań. O ile np. framework Symfony jest całkiem spoko, o tyle zachodzę w głowę, czemu ludzie decydują się na gnój pt. Laravel. Pytałem o to kilku programistów i… Żaden nie potrafił odpowiedzieć na to pytanie. Czasem padało jedynie: a przecież Laravel jest oparty na Symfony. Wiem, wiem… Wiem, że jest to niedorzeczna karykatura Symfony. Może Python? Python też mógłby być wydajniejszy. Django nie znam, kilka razy rzuciłem jedynie okiem, pisząc kilka witajświeciów w tym frameworku i nie przekonało mnie to do siebie.


Moim zdaniem czas pójść w przyszłość, a ta należy nie do Javy, PHP ani Pythona, lecz do języka Go. Wymaga on nieco innego podejścia, ale ma kilka rozwiązań, które skradły moje serducho. Na pierwszy ogień idzie Flux, który na moim repozytorium ma już swoją działającą prototypową wersję. Czas, w jakim udało mi się napisać to wszystko, jest dla mnie zaskakujący.

It’s time to Go to the future.