Go to statycznie typowany, kompilowany język programowania zaprojektowany w Google przez Roberta Griesemera, Roba Pike’a i Kena Thompsona. Został zaprojektowany tak, aby był wydajny i czysty na tyle, aby mógł być używany w dużych bazach kodu. Język został otwarty w 2009 roku i od tego czasu został wdrożony przez tysiące organizacji na całym świecie. W firmach takich jak: Apple, Microsoft, Amazon EC2 dostawca usług infrastrukturalnych Linode Inc, Alibaba Cloud Computing Ltd., DigitalOcean Inc, Google Cloud Platform (GCP), Heroku Inc, Netflix Technology Center LLC & Yahoo! Research Labs.

Składnia Go jest podobna do innych statycznie typowanych języków, takich jak C++ czy Java. Obsługuje również dynamiczne typowanie poprzez interfejsy. Pozwalają one funkcjom napisanym w jednym języku, takim jak Python czy JavaScript (a nawet Haskell) eksponowanym jako callbacki do innego systemu typów, takiego jak C++ – bez względu na to, co deklarują jako wywoływane z wnętrza własnej bazy kodu!

Go został zaprojektowany, aby zwiększyć produktywność programowania w erze wielordzeniowych, sieciowych maszyn i dużych baz kodów.

Język został zaprojektowany w Google w 2007 roku, aby uczynić programowanie bardziej produktywnym w erze wielordzeniowych, sieciowych maszyn i dużych baz kodu. Go został zaprojektowany jako lepszy C++, Java i C.

Go ma wiele cech, które ułatwiają pisanie niezawodnego oprogramowania:

  • Używa garbage collection zamiast ręcznego zarządzania pamięcią jak inne języki (np. C).
  • Implementuje silne typowanie samodzielnie, nie wymagając od programisty jawnego podawania typów dla zmiennych lub metod. Zamiast tego wywnioskuje je z kontekstu, patrząc na to, jak wartości są przekazywane podczas wykonywania (np. jeśli nie ma jawnego typu, zakłada float64). Oznacza to, że nie musisz się martwić o to, czy twoja zmienna jest używana poprawnie czy nie. Po prostu przekazywanie liczb powinno być w porządku, ponieważ wszystkie będą traktowane jako float!

Projektanci chcieli odnieść się do krytyki innych języków

Go został zaprojektowany w odpowiedzi na krytykę innych języków używanych przez Google, ale zachowuje ich użyteczne cechy. Go został zaprojektowany z myślą o maszynach wielordzeniowych i sieci (w tym HTTP), dużych bazach kodu i ma prostą składnię, dzięki której każdy, kto ma nawet podstawowe doświadczenie w programowaniu, może się go nauczyć.

Konstrukcja Go pozwala również na automatyczne zarządzanie pamięcią, więc programy nie potrzebują jawnych deklaracji zarządzania pamięcią, takich jak free().

Zobacz również: Najdziwniejsze języki programowania

GO rozpoczął się jako eksperyment, ale urósł do rangi ważnego narzędzia dla inżynierów Google.

Język rozpoczął się jako eksperyment, ale urósł do rangi ważnego narzędzia dla inżynierów Google. Go został zaprojektowany tak, aby był łatwy w użyciu, szybki i stabilny. Został również zaprojektowany z myślą o bezpieczeństwie. Jest domyślnie bezpieczny i pozwala na uruchamianie kodu bez podawania jakichkolwiek informacji o komputerze lub aktywności sieciowej.

Ponadto Go jest skalowalny: może działać na urządzeniach niskiej klasy, takich jak komputery Raspberry Pi czy telefony komórkowe. Jednak jego wydajność skaluje się wraz ze wzrostem zasobów, takich jak pamięć RAM czy rdzenie procesor. Dzięki czemu nawet duże aplikacje nie powinny doświadczyć znaczącego spadku wydajności podczas pracy na dużych serwerach z wieloma procesorami i/lub rdzeniami procesora.

Największą różnicą między Javą a Go

Największą różnicą między Javą a Go jest to, że Go nie ma dziedziczenia klas. Innymi słowy, w Go nie ma żadnych klas. Ma system typów zamiast dziedziczenia i jest całkowicie dynamiczny w czasie wykonywania (język jest kompilowany do kodu maszynowego).

Możesz użyć dowolnego typu danych jako zmiennej lub pola w swojej aplikacji. Z wyjątkiem typów ciągów i tablic, które są tablicami o statycznej długości (rozmiar 1 bajtu). Powodem tej decyzji było to, że mogą one być używane do przesyłania informacji przez sieci bez konieczności martwienia się o wycieki pamięci. Ciągi są zawsze przechowywane w obszarze przestrzeni pamięci sterty, podczas gdy tablice używają odniesień do obiektów. Oznacza to, że są one przechowywane w ich własnym obszarze stosu zamiast obszaru przestrzeni pamięci sterty, gdy są używane jako zmienne/pola w samym kodzie programu!

Jeśli metoda potrzebuje tylko jednego typu struktury

Jeśli metoda potrzebuje tylko jednego typu struktury jako swojego odbiornika, najlepszą opcją jest po prostu uczynienie tego typu zwykłą funkcją. W ten sposób możesz użyć tego samego kodu dla każdego typu struktury.

Na przykład, jeśli mamy obiekt o nazwie Osoba i chcemy wysłać do niego wiadomość e-mail, to potrzebujemy:

  • Metoda, która wysyła tę wiadomość (nadawca);
  • Metoda, która odbiera tę wiadomość (odbiorca).

Twórcy celowo pominęli wiele funkcji z rdzenia języka

Programiści celowo pominęli wiele funkcji z rdzenia języka, które można zaimplementować za pomocą istniejących pakietów lub narzędzi. Jest to decyzja podjęta przez zespół Go, aby zapewnić, że Go jest tak prosty w nauce, użyciu i utrzymaniu, jak to tylko możliwe.

Społeczność otaczająca Go w ciągu ostatnich kilku lat szybko się rozwijała. Do tego stopnia, że niektórzy zaczęli odnosić się do niego jako „nowej Javy”.

Zobacz również: Dlaczego Java jest tak popularna wśród programistów?

_________________

GO jest najpopularniejszym językiem wśród programistów i jest ku temu wiele dobrych powodów. Ma doskonałą wydajność, prostą składnię i sprawia, że łatwo jest nauczyć się programować w Go.

logo IT-Leaders

IT-Leaders.pl to pierwszy w Polsce ekosystem rekrutacyjny, łącząca Specjalistów IT z pracodawcami. Anonimowy, techniczny profil i konkretnie określone oczekiwania finansowe to tylko niektóre z cech wyróżniających platformę. Zarejestruj się i zobacz jak Cię widzi pracodawca.