A Go egy viszonylag fiatal, de népszerű programozási nyelv. A Go programozási nyelv az életszerű feladatok könnyebb elvégzése miatt született, és a mai legújabb programozási trendeket elkerülve praktikus megoldást nyújt a valós, üzleti problémákra.
A Go egyszerű szintaxissal, statikus típuskezeléssel, gyors fordítóval és gyorsan futó, statikus futtatható állományokkal rendelkezik. A nyelv könnyen érthető, folyamatok közötti csatornákon áthaladó üzenetekkel kommunikáló konkurens programozást tesz lehetővé, így könnyen ki lehet használni a mai számítógépek több magos processzorait, ezért nagy rendszerek építéséhez is ideális.
Mi a Go programozási nyelv?
A Go programozási nyelvet a Google hozta létre. Valójában a teljes neve Golang a „Google nyelv” származéka.
A Go programozási nyelv az életszerű feladatok könnyebb elvégzése miatt született. C-szerű szintaktikával és statikus típuskezeléssel rendelkezik.
A fordító szempillantás alatt végez és egy gyorsan futó,statikus futtatható állományt hoz létre. A Go alap könyvtára mindenre területre kiterjed, ennek köszönhetően a nyelvnek egyre növekvő tábora van.
Ki hozta létre a Go nyelvet, és mi volt a célja?
A Go programozási nyelvet a Google hozta létre. Kezdetben a Google-n belüli eszköz volt, de idővel előbújt a vállalat mélyéről, és köztudomásúvá vált.
A Go készítőinek célja egy egyszerű és hatékony programozási nyelv kifejlesztése volt, amellyel minőségi szoftvereket lehet készíteni.
Rob Pike, a Go egyik megalkotója elmondta, hogy a Go a cég olyan programozói számára készült, akik viszonylag frissen végzettek, és ismerik a Java, C, C++ vagy Python nyelveket.
Számukra a Go egy olyan nyelv, amelyet gyorsan megérthet és megszokhat.
Kinek érdemes megtanulnia a Go nyelvet?
A Go kezdő programozóknak és profiknak egyaránt jó, akik már ismernek egy vagy több programozási nyelvet. Szinte minden programozó megtanulhatja vagy újratanulhatja.
A Golang-ot meglehetősen gyorsan megtanulhatja egy teljesen kezdő programozás - valaki, aki egyáltalán nem tud semmilyen nyelvet, és csak azt tervezi, hogy fejlesztő lesz.
A Go-ról elmondható, hogy majdnem olyan egyszerű (természetesen viszonylag), mint a PHP vagy akár a Pascal, de ugyanolyan erős, mint a C++.
Másodszor, a Go-t egy „haladó programozó” tanulhatja meg, aki már tud egy vagy több nyelvet. A fejlesztők leggyakrabban a Python vagy a PHP elsajátítása után tanulják meg a Go-t.
Ezután néhány programozó sikeresen használja a Python/Go vagy PHP/Go párost.
Miért népszerű a Go?
A Go egy viszonylag fiatal, de népszerű programozási nyelv. Által Stack Overflow, a Golang volt az, amely harmadik helyet kapott azon programozási nyelvek értékelésében, amelyeket a fejlesztők szeretnének elsajátítani.
Idővel a nyelv egyre népszerűbbé válik. A Go nyelvű jó szakemberek iránti igény csak növekedni fog, így egy szakembernek (kezdőnek vagy profinak) nem lesz nehéz elhelyezkednie.
A Go programozási nyelv az életszerű feladatok könnyebb elvégzése miatt született. A mai legújabb programozási trendeket elkerülve, praktikus megoldást nyújt a valós, üzleti problémákra.
A nyelv könnyen érthető, folyamatok közötti csatornákon áthaladó üzenetekkel kommunikáló konkurens programozást tesz lehetővé, így könnyen ki lehet használni a mai számítógépek több magos processzorait, ez nagy rendszerek építéséhez ideális.
Melyek a Go legfontosabb előnyei?
Egyszerűség
Egyszerűség. Valójában ez volt a nyelv létrehozásának fő célja, és ez sikerült is.
A Go meglehetősen egyszerű szintaxissal rendelkezik (bizonyos feltevések mellett), így az alkalmazások gyorsabban fejleszthetők, mint néhány más nyelven.
A Go egyszerű és tömör szintaxisának köszönhetően könnyen karbantartható.
Gyors fordítás és futás
A fordító szempillantás alatt végez és egy gyorsan futó,statikus futtatható állományt hoz létre.
Hogy a nyelvi platform gyors legyen, a nyelvvel együtt futó compilernek is hatékonynak kell lennie.
Statikus gépelés
Statikus gépelés. A Go másik előnye, hogy csökkenti annak az esélyét, hogy a fejlesztő hibázzon.
Igen, az első pár napban a dinamikus gépeléshez szokott programozó ingerültté válik, amikor minden változóhoz és függvényhez, valamint minden máshoz típust kell deklarálnia.
De aztán világossá válik, hogy ennek rengeteg előnye van.
Kódtisztaság és formázás
Kódtisztaság. A Go fordító lehetővé teszi, hogy a kódot „tisztán” tartsa.
Például a nem használt változókat fordítási hibának tekintjük. A Go megoldja a legtöbb formázási problémát.
Ez például a gofmt programmal történik mentéskor vagy fordításkor. A formázás automatikusan kijavításra kerül.
Karbantarthatóság
Kód karbantartás. Egyszerű és tömör szintaxisának köszönhetően könnyen karbantartható.
Mindez a Google öröksége. Mivel a vállalat hatalmas mennyiségű kóddal rendelkezik a különféle szoftvertermékekhez, valamint több tízezer fejlesztő, akik mindent megoldanak, karbantartási probléma merül fel.
A kódnak érthetőnek kell lennie mindenki számára, aki dolgozik rajta, jól dokumentáltnak és tömörnek.
Mindez lehetséges a Go-val.
Dokumentáció
Egy segédprogram, amely nagyban leegyszerűsíti a kód dokumentálását.
A GoDoc nagy előnye, hogy nem használ további nyelveket, mint például a JavaDoc, PHPDoc vagy JSDoc.
A segédprogram a dokumentált kódból kinyert maximális mennyiségű információt használja fel.
Kevés nyelvi elem
Ugyanakkor a Golangnak nincsenek osztályai (vannak struktúrák, struct), és nem támogatja az öröklődést, ami sokkal könnyebbé teszi a kód megváltoztatását.
Ráadásul nincsenek kivételek, megjegyzések stb.
Könyvtárak és C-kompatibilitás
Nagyszámú könyvtár. Ha hiányzik egy funkció a Go alkalmazásból, használhatja a számos könyvtár egyikét, és végrehajthatja a szükséges feladatot.
A Go-nak van egy másik előnye is: könnyen kommunikálhat a C könyvtárakkal.
Még az a vélemény is létezik, hogy a Go-könyvtárak a C-könyvtárak burkolói.
Milyen alkalmazásokat lehet Go nyelven készíteni?
Mit írhat a Go-ba? Szinte minden, néhány pont kivételével (például gépi tanulással kapcsolatos fejlesztések - a Python alacsony szintű C/C++-ban és CUDA-ban megfelelőbb optimalizációval).
Minden mást meg lehet írni, ez főleg a webszolgáltatások kapcsán igaz.
Mindemellett a Go mind a végfelhasználónak, mind a démonok, az UI fejlesztésére érdemes alkalmazásokat fejleszteni, és alkalmas többplatformos alkalmazásokra és szolgáltatásokra.
- webszolgáltatások;
- többplatformos alkalmazások és szolgáltatások;
- démonok;
- felhasználói felületekhez kapcsolódó alkalmazások;
- nagy rendszerek;
- hálózati programok;
- fájlrendszerrel dolgozó programok.
Hogyan kezdhető el a Go tanulása?
Osva Go nyelvet, a következő megközelítés használható: hivatalos dokumentáció és oktatóanyagok tanulmányozása a golang.org oldalon.
Kis programokat érdemes írni a szintaxis és az alapvető szerkezetek rögzítéséhez.
Online platformokon lehet feladatokat megoldani, hogy megértsük a goroutine-ok és a csatornák működésének sajátosságait.
Érdemes tanulmányozni a standard könyvtárat, különösen a hálózattal és a fájlrendszerrel való munkát biztosító csomagokat.
Népszerű Go-projektek forráskódját is célszerű olvasni, hogy láthatóvá váljanak a bevált gyakorlatok.
Ez a lépésről lépésre felépített megközelítés segít gyorsan elsajátítani a nyelvet és megérteni annak sajátosságait.
Hogyan néz ki egy egyszerű Go-program?
Például egy egyszerű Go-program a „Hello, World!” kiírására:
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
Minden forrás fájl egy csomag-definícióval kezdődik, ez hasonlít a Python csomagkezelésére.
A main egy különleges csomagnév, ennek a fordítása futtatható állományt hoz létre egy könyvtár helyett.
Az import rész meghatározza melyik csomagokat kívánjuk használni ebben a forrásfájlban.
A függvénydeklarálás, a main nevű függvény a program kezdőpontja.
Hogyan működnek a változók és az adattípusok?
Változó deklaráció, használat előtt muszáj ezt megtenni.
„Rövid” deklaráció is létezik, ez az érték alapján deklarálja, definiálja és értéket is ad a változónak.
A funkcióknak elnevezett visszatérési értékük is lehet.
A függvényeknek több visszatérési értéke is lehet.
A Go beépített típusai között megtalálható a string, a rúna, a lebegőpontos szám, a komplex szám, az unsigned egész és a byte.
Minden Go forrás UTF-8 és a stringek is azok.
A tömböknek fordítás-időben fixált méretük van.
A „szeleteknek” (slices) dinamikus a méretük.
A szeleteknek és a tömböknek is megvannak az előnyeik de a szeleteket sokkal gyakrabban használjuk.
A map a dinamikusan növelhető asszociatív tömb része a nyelvnek, hasonlít a hash és dictionary típusokra más nyelvekben.
| Elem | Jellemző |
|---|---|
| string | szöveges érték |
| rune | egy UTF-8 karaktert tárol |
| float64 | 64-bites lebegőpontos szám |
| complex128 | belsőleg két float64-gyel tárolva |
| byte | megegyezik az uint8-al |
| tömb | fordítás-időben fixált méret |
| szelet | dinamikus méret |
| map | dinamikusan növelhető asszociatív tömb |
Hogyan kezeli a Go a memóriát?
A Go nyelvben szemétgyűjtés (garbage collection) működik.
Megtalálhatók benne mutatók, de nincs pointeraritmetika.
Ez azt jelenti, hogy üres (null) mutatóval még mindig hibázhatsz, de hozzáadni/műveleteket végezni már nem lehet.
A beépített „new” funkció egy típusnak elegendő memóriát allokál, és visszaad rá egy mutatót.
Az allokált int nullázva van, p többé nem üres mutató.
Hogyan működnek a vezérlési szerkezetek?
Az elágazásoknak kötelező a kapcsos zárójel, a zárójel nem szükséges.
A kód formátumát a nyelvvel járó „go” parancssori program „go fmt” parancsa szabványosítja.
Használjunk switchet a hosszabb elágazások alkalmazása helyett.
Az „esetek” nem „esnek át”, tehát nincs szükség break-ekre.
A for ciklus sem használ zárójeleket.
A for az egyetlen ciklus fajta a Go-ban, de több formája van.
Függvényeket használhatjuk closure-ként is.
Mi az interfész és a struktúra?
Definiáljuk a Stringert egy olyan interfésznek, amelynek egy metódusa van, a String, ami visszatér egy stringgel.
Definiáljuk a pair-t egy olyan struktúrának amelynek két int változója van, x és y.
Definiáljunk egy metódust a pair struktúrának, ezzel teljesítve a Stringer interfészt.
A kapcsos zárójellel jelezzük, hogy egyből inicializálni szeretnénk a struktúra változóit a sorrendnek megfelelően.
Az interfészek lehetővé teszik, hogy egy típus akkor is megfeleljen egy elvárt viselkedésnek, ha nem kell hozzá külön öröklési hierarchia.
Hogyan történik a hibakezelés?
A „, ok” szokásos megoldás arra, hogy jól működött-e a függvény.
Az ok hamis lesz, mert az 1 nincs benne a map-ban.
A hiba érték többet is elmond a függvény kimeneteléről, mint hogy minden „ok” volt-e.
A felhasználatlan változók fordítás-idejű hibát okoznak a Go-ban.
Az aláhúzással „használod” a változókat, de eldobod az értéküket.
Mi a konkurens programozás a Go-ban?
A Go könnyen érthető, folyamatok közötti csatornákon áthaladó üzenetekkel kommunikáló konkurens programozást tesz lehetővé.
c egy csatorna, egy konkurens-biztos kommunikációs objektum.
A make allokál map-eket, szeleteket és csatornákat.
Indítsunk három konkurens goroutine-t.
A számok konkurensen lesznek megnövelve, ha a számítógép képes rá és jól be van állítva, akkor pedig paralellizálva/egymás mellett.
Mind a 3 ugyanabba a csatornába küldi az eredményeket.
A go utasítás indít el goroutine-okat.
Nem lehet tudni milyen sorrendben fognak érkezni az eredmények!
A select olyan mint a switch, csak feltételek helyett csatorna műveletek vannak.
Véletlenszerűen kiválasztja az első olyan esetet, ahol létrejöhet kommunikáció.
Alkalmas-e a Go webprogramozásra?
A Go képes webprogramozásra.
Egy függvény a http csomagból elindít egy webszervert.
A ListenAndServe első paramétre egy TCP port, amin kiszolgálunk majd.
Második paramétere egy interfész, pontosabban a http.Handler interfész.
Csináljunk a pair-ból egy http.Handler-t úgy, hogy implementáljuk az egyetlen metódusát, a ServeHTTP-t.
Minden kapcsolatra elküldjük ezt a http.ResponseWriter-rel.
Hol használják a Go nyelvet?
Az ezt a nyelvet tudó jó szakemberek iránti igény csak növekedni fog, így egy szakembernek (kezdőnek vagy profinak) nem lesz nehéz elhelyezkednie.
A fenti képen látható cégek mellett a Mail.ru Group, az Avito, az Ozon, a Lamoda, a BBC, a Canonical és mások is együttműködnek a Golanggal.
„Az üzlet méretezése mellett döntöttünk, fontos számunkra, hogy egy alapvetően új technológiai platformot építsünk ki, amely biztosítja a termék gyors fejlődését. Gyorsasága és megbízhatósága miatt támaszkodunk a Go-ra, és ami a legfontosabb, az azt használó programozók közönsége miatt” - mondták az Ozon képviselői 2018-ban, miután a cég úgy döntött, hogy a Golangra vált.
Hol találhatók hivatalos Go-tananyagok?
Minden Go-val kapcsolatos megtaláható a hivatalos Go weboldalon.
Ott követhetsz egy tutorialt, játszhatsz a nyelvvel az interneten, és sok érdekességet olvashatsz.
A nyelv specifikációját kifejezetten érdemes olvasni, viszonylag rövid és sokat tanul belőle az ember.
Ha pedig jobban bele akarod vetni magad a Go-ba, akkor a legjobb praktikákat kilesheted a standard könyvtárból.
A dokumentációban kattints egy függvény nevére és rögtön megmutatja a hozzá tartozó kódot!
Ha pedig a nyelvnek egy bizonyos részéről szeretnél hasonló leírást találni, akkor a gobyexample.com-on megtalálod, amit keresel.
