Studium jednego przypadku - Khan Academy przepisała swój serwer na nowo.
Goliath zjadł pytona
Amerykańska organizacja edukacyjna non-profit Khan Academy napisała ok. 500 000 wierszy kodu w języku programowania Google Go. Wszystko po to aby przepisać swój backendowy serwer utworzony uprzednio w Python 2. Kevin Dangoor, główny architekt oprogramowania w Khan Academy, szczegółowo opisał rewolucyjną zmianę jaką organizacja przeszła w ramach projektu o nazwie Goliath.
Jak wiemy Python 2 dobiegł swojego końca w 2020 roku więc akademia zdecydowała się na dużą migrację – rozważano Pythona 3 ale ostatecznie zdecydowano się na Go. Miało zdecydować to, że jest to język zaprojektowany od podstaw aby był szybki i jest on z powodzeniem używany przez Google w systemach chmurowych.
Szukali przede wszystkim wydajności
Przejście z Pythona 2 na 3 nie jest łatwym zadaniem - zauważa Dangoor. Jego zespół skłaniał się długo ku Kotlinowi ale Go zdaniem inżynierów mogło zapewnić większą wydajność niż Python 3 i miało inne zalety:Jako programiści możemy szybciej działać dzięki błyskawicznemu czasowi kompilacji Go. Ponadto członkowie naszego zespołu mają wieloletnie doświadczenie i pamięć mięśniową zbudowaną wokół wielu różnych edytorów. A Go jest lepiej obsługiwany niż Kotlin przez naprawdę szeroką gamę edytorów.Już samo oprzyrządowanie Go jest fantastyczne – ciągnie dalej Dangoor. Kompilator jest szybki, a fakt, że formatowanie jest częścią standardowego łańcucha narzędzi, pomaga wyeliminować większość dyskusji na temat przyjętego sposobu formatowania. Chociaż wciąż widzę w Internecie narzekania na temat modułów Go, działają one lepiej niż miało to miejsce w przypadku poprzednich podejść do zarządzania pakietami w tym języku i ogólnie przyjemnie się z nich korzysta.
Brak typów generycznych
Google zaczął używać Go wewnętrznie w 2007 roku i wypuścił wersję Go 1.0 w 2012 roku. Chociaż jest to jeden z 20 najpopularniejszych języków, głównym zarzutem deweloperów względem tego języka jest niezmiennie brak typów generycznych. Zespół Dangoora też na to narzeka.
W większości przypadków pisanie kodu w Go bez typów generycznych jest w porządku. Zdarza się jednak, że piszemy kod wewnętrznej biblioteki i głównie wtedy czujemy ich brak.
Zespół Go na początku tego roku opublikował swoją propozycję włączenia do specyfikacji języka typów generycznych, co pozwoliłoby programistom na pisanie funkcji i struktur danych, w których niektóre typy nie zostały określone wcześniej. To może się zrealizować już pod koniec 2021 roku, w najbliższej wersji Go.
Chcemy pisać mniej kodu a opcje, które otrzymujemy dzięki rodzajom generycznym, pomagają w tym.
7 razy szybszy niż Python
Go nie jest idealne, ale niektórzy programiści z zespołu Dangoor uwierzyli, że mniejsza liczba funkcji językowych w Go niż w Pythonie sprawi, że kod Go będzie bardziej spójny i szybszy w czytaniu. To ważna cecha, pomocna dla przyszłych programistów, którzy będą kontynuowali pracę nad kodem w Go.
Podkreślając przewagę szybkości Go nad Pythonem, Dangoor wskazał na klasę zawierającą 1000 uczniów, której załadowanie w Pythonie może zająć 28 sekund, ale załadowanie jej w Go zajmuje już tylko cztery sekundy. Powiedział, że chociaż Go jest ogólnie bardziej przegadane niż Python, to jest szybkie a narzędzia są solidne i dobrze działają w środowisku produkcyjnym.