Blog IT, Blog Marketing

Migracja z Pythona na Go

Migracja z Pythona na Go

Marcin Sarna , 21.05.2021 r.

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.

Najnowsze oferty pracy:

Polecane wpisy na blogu IT:

Szukasz pracownika IT?

Dostarczymy Ci najlepszych specjalistów z branży IT. Wyślij zapytanie

Wyrażam zgodę TeamQuest Sp. z o.o. na przetwarzanie moich danych osobowych w celu marketingu produktów i usług własnych TeamQuest, w tym na kontaktowanie się ze mną w formie połączenia telefonicznego lub środkami elektronicznymi.
Administratorem podanych przez Ciebie danych osobowych jest TeamQuest Sp. z o.o., z siedzibą w Warszawie (00-814), ul. Miedziana 3a/21, zwana dalej „Administratorem".
Jeśli masz jakiekolwiek pytania odnośnie przetwarzania przez nas Twoich danych, skontaktuj się z naszym Inspektorem Ochrony Danych (IOD). Do Twojej dyspozycji jest pod adresem e-mail: office@teamquest.pl.
W jakim celu i na jakiej podstawie będziemy wykorzystywać Twoje dane? Dowiedz się więcej