Go to brutalizm

Język programowania Go jest jak pewien nurt architektury późnego modernizmu – Brutalizm.

Moim zdaniem doskonałym przykładem brutalizmu w obrębie stron internetowych jest strona Berkshire Hathaway

Screen-shot z dnia dzisiejszego (2020-01-02)

To jest strona internetowa jednego z największych konglomeratów na świecie, TOP 5 największych spółek w Stanach Zjednoczonych.

CEO stojący za BH to nie kto inny jak Warren Buffett 4-ty najbogatszy człowiek na świecie. To ciekawe, że najbogatsi mogą sobie pozwolić na tańsze rozwiązania.

Jak ten styl ma się do języka programowania?

Go jest pozbawiony wyrafinowanych rzeczy, możliwości języka można sprowadzić do:

  • Funkcje
  • Struktury
  • Interfejsy
  • Referencje

Brakuje rzeczy, które przyjmuje się za standard w językach:

  • Typy generyczne, szablony
  • Wyjątki
  • Programowania obiektowego
  • Asercje
  • Poprawnego wsparcia dla Windowsa (go nie wspiera kompilatora C++ z Visual Studio)
  • Walidacji czy interfejs został zaimplementowany poprawnie – przed jego użyciem
  • Funkcje wysokiego rzędu

Nie ma w nim elegancji, szyku i możliwości na rozwiązania problemu w inny sposób niż to co kompilator/twórca języka od Ciebie oczekuje. Czujesz się jak ośmiolatek walący w klawiaturę za krótkimi rączkami. Na koniec dnia okazuje się wszystko działa.

Kompilator i narzędzia wspomagające (go lint, gofmt i inne) są bardzo restrykcyjne. Na przykład błędem kompilacji jest niewykorzystana zmienna lub import biblioteki, który nie został użyty (co można i czasem trzeba ignorować, ale trzeba to zrobić w sposób jawny)

Mimo tych wszystkich „wad” i ograniczeń programowanie w Go jest FUN!

Do Go napisano już dużo bardzo fajnych bibliotek. Przeglądając kod źródłowy innych ludzi to bajka, od razu rozumiesz ich kod, od razu rozumiesz w jaki sposób ktoś próbuje rozwiązać problem. Czegoś takiego nie doświadczyłem z żadnym innym językiem programowania. Poziom dokumentacji w Go jest bardzo wysoki.

Podczas pisania w Go miałem podobne wrażenie jak podczas obcowania z Pythonem. Możesz błyskawicznie zrobić wszystko, dzięki bibliotekom tym wbudowanym i zewnętrznym.

I masz wrażenie, że jeżeli program się skompiluje to raczej będzie działać lub program powie Tobie o czym zapomniałeś (jeżeli zalogowałeś wszystkie obiekty błędów)

Jeżeli nie znasz Go, polecam się go nauczyć, można przypomnieć sobie wiele podstawowych technik programowania, które obecnie bywają zakryte przez skomplikowane hierarchę obiektów, które zna jeden architekt w Twojej pracy.