Mě se go velmi osvědčil na utilitky pro příkazový řádek - klasické cli rozhranní. Díky nulovým závislostem se takový program jednoduše distribuuje na různé počítače (kde není třeba se starat o instalaci knihoven z cpan/pip/...) a díky cross compilaci lze snadno překládat i pro různé platformy (hlavně na linuxu mohu překládat i exe pro windows).
Osvědčilo se mi https://github.com/spf13/cobra + https://github.com/spf13/viper, ale takových knihoven je určitě všude spousta.
Pokud při kompilaci použijete CGO=0 tak nulové jsou. Jediná podmínka je, aby na dané architektuře a kernelu Go vůbec bylo. Podrobnější vysvětlení je asi nad rámec komentáře, ale lze dohledat (při standardní kompilaci se využívá systémová DNS přes knihovny systému, pokud nastavíte CGO=0, použije se Go knihovna. Ta se použije i při běžné kroskompilaci).
Dobrý den, děkuji za velmi přínosný a podrobný seriál.
Jen bych chtěl upozornit, že v porovnání operátoru ++ s jazykem C je zřejmě chyba. Píšete:
V programovacím jazyku C má ovšem stejně zapsaný příkaz odlišný význam, protože zvýší hodnotu ukazatele a potom přečte hodnotu z paměťové oblasti ZA proměnnou x (což je operace, která je samozřejmě chybná a může vést k pádu programu).
Výraz *p++ v C to však dělá obráceně. Nejdříve přečte hodnotu z pozice dané ukazatelem (*p) a potom posune ukazatel na další pozici (p++), takže ke čtení za proměnnou x by došlo až při dalším použití ukazatele.
Díky této vlastnosti je tato konstrukce v C hojně používaná (ve smyčkách).
Toto je právě očekávané chování, protože v C (myslím ten první příklad) se zvyšuje hodnota ukazatele, kdežto v Go se zvyšuje hodnota proměnné, na kterou ukazatel obsahuje adresu. Akorát - jak velmi správně napsal PKs - jsem špatně napsal pořadí operací (první je dereference, druhá zvýšení hodnoty ukazatele)-
Jen me napadlo, jestli se v Golangu da pomoci const a iota udelat enum jako skutecny datovy typ? Protoze v tech prikladech vlastne ma Monday typ int a muzu ho pouzit jinde, nez bych v jinych jazycich mohl pouzit Monday ze skutecneho vyctu. To mi prijde jako dost dira v typovem systemu ktery se jinak snazi byt hodne restriktivni.
Reálná data si tvoří Tiobe: https://www.tiobe.com/tiobe-index/ akorát už nezveřejňují metriky (ale býval v tom započtenej i výsledek nabídky+poptávky jobů).
V oblasti networkingu a kubernetes/docker docela letí.
To je pravda, potom ale záleží, jak ty jazyky navzájem hodnotit (je například docela hodně programátorů v COBOLu, ale to je skupina lidí, kteří online informace nepotřebují, nikdo je pro ně ani netvoří :-).
Nabízím pár měření:
Podle toho, jak si vedou na GitHubu:
https://githut.info/
Podle vyhledávání, ovšem na základě otevřených metrik:
https://pypl.github.io/PYPL.html
Podle projektů s otevřeným kódem:
https://www.openhub.net/languages/compare
Podle toho, co o sobě prozradí programátoři:
https://insights.stackoverflow.com/survey/2018/#technology-programming-scripting-and-markup-languages
Za mna strany hype.
Sice sa o nom vsade pise, ale treba si uvedomit, ze je urceny na dost marginalne pouzitie.
K tomu nema ziadnu killer feature (oproti inym rozsirenym jazykom). Chbaju mu zakladne veci.
Za mna viac menej hype. K tomu ked si pozeral okolo ponuky prace, tak v cesku a na slovensku som narazil az na jednu.
Ono tieto tutorily su fajn, len mi pridu strasne roztahane, ja som sa Go naucil za 3 hodiny a potom som napisal v nom2 projekty, ale ako hovorim nemal nic pre co by som ho mal volit ako hlavny jazyk alebo sa nim a jeho ekosytstemom zaoberat dalej.
a dival ses i na jobs.redhat.com? Vim ze je tam par pozic, kde se Go bud vyzaduje nebo je to vitanym plusem.
ad marginalni pouziti: networking (servery ruznych typu, samozrejme vcetne HTTP), Docker, Kubernetes a OpenShift, je sice z globalniho pohledu marginalni, ale jsou to milionu radku kodu, za ktere nekdo platil a plati ;)
jenze...co neni marginalni? Uz pitome jedno procento pouziti by jakykoli jazyk dostalo mezi prvni dvacitku...
Nejake pekne featury ma, napriklad lehke gorutiny/channely, crossplatform binarky bez nutnosti jvm ci knihoven, potencialne to muze byt rychle a je to bezpecnejsi nez C, neresime pametova alokace.
Ale s pristupem vyvojaru, kdy zcela programove serou na narky vyvojaru... Oficialni zduvodneni, proc nebudou vyjimky vyvolava otazky o jejich pricetnosti.
Hur se chova snad jenom ten magor co matla systemd.
A vzhledem ke GraalVM a experimentalnim korutinam v jave taky muze GO pekne rychle zdechnout.
Pokud je java za zenitem a neco ji nahradi, pak to rozhodne nebude go.
Go bylo za zenitem uz v dobe uvedeni, z computer science pohledu je to mix mezi ceckem a perlem - osmdesata leta.
Hlavni realna vyhoda go je v tom, ze se to nauci kazdy gibbon za odpoledne. Java nebo C# ma mnohem pozvolnejsi krivku uceni.
Javu asi těžko něco nahradí - to jsem tu ani netvrdil. Java byl původně jednoduchý jazyk, s bohatou ale konzistentní výbavou. Nevidím, neslyším, žádné nadšení od lidí, kteří píší v Javě. Roky se jej učíte - a pak ve výsledkem jsou ve většině případů transformace, které se předtím dělaly v Cobolu. Jazyk ani ne, ale prostředí kolem Javy zbytnělo.
Odobne nepokladam hype wave za meritko kvality produktu.
Treba ted kolem sebe vidime neskutecne hypovani elektromobilu, pricemz kazdy s mozkem v hlave a trochou zajmu o obor vidi, ze je to neskutecna picovina.
Tesla S nabijena pouze z uhelne elektrarny jezdi se silenou spotrebou 12kg uhli na 100 km a tim vygeneruje cca dvojnasobek CO2 a mnohem vic jedovateho sajrajtu. V evrope jsou jenom 2 zeme, kde nasazeni elektrovozu snizi co2, Norsko s hudroelektrarnami a Francie s jadrem. V Nemecku je situace az tak komicka, ze planuji nahradit jaderky elektrarnama na plyn. Takze budou palenim plynu delat elektrinu pro elektromobiky za silenych transformacnich ztrat a infrastrukturnich investic, namisto aby proste zacali pouzivat CNG spalovaci motory na plyn.
Hype prukopnici slepych cest s planoucimi zraky jsou sice zabavni, ale ja uz jsem na to starej.
Pekne, hromada minusu, argument zadny.
http://shrinkthatfootprint.com/electric-car-emissions
Druhy graf odshora, co2 emise per country, konkretne Indie, co ma temer poze uhelne elektrarny 370 g/km, tedy cca trojnasobek EU flotiloveho limitu pro spalovaci vozy.
Oprava, jeduine 2 eu staty, ktere maji s elektrovozy nizsi emise jsou Francie a Svedsko, nahore jsem psal omylem Norsko.
Nemecko je v grafu asi jenom o 20% horsi nez spalovaky, s odstavenim jaderek to ale pude do zadele.
Ale chlapce s planoucimy zraky netreba pretezovat nejakymi fakty.
Když už jsme u těch faktů, asi vám uniklo, že Island je taky v Evropě.
Druhý fakt, který vám unikl je, že klasické motory (benzínové a dieselové) produkují především další škodliviny, jako NOx a prachové částice. A zatímco tyto poměrně efektivně na elektrárně zachytíte, ve městech dochází k jejich vysoké koncentraci a snaha zachytit prachové částice na dieselových motorech vede poměrně spolehlivě k jejich konci, poněvadž jejich údržba se stává nerentabilní.
To samozřejmě nemění nic na tom, že elektroauta momentálně rozhodně nejsou všeobecnou náhradou spalovacích motorů, protože už jen z pohledů baterií není na Zemi dostatek surovin na jejich výrobu (nehledě na jejich další nevýhody).
Pravda, muzete si pripocist Island, s celkovym poctem obyvatel asi jako Pardubice.
NOx se v elektrarnach neresi vubec nijak, ty se proste vydouknou kominem vysoko a odstrani se samy, je to vlastne vzdusne hnojivo.
Dieselove motory euro 6 s SCR katalytickou redukci neprodukuji prakticky zadny NOx, castice PM10 resi filtr DPF.
V mem euro 6 aute SCR, DPF je vyfuk motoru po 2 letech provozu stale kovove leskly, zatimco vyfuk meho dalsiho benzinoveho MPI aute je cerny jak komin.
Momentalne nejcistsi spalovaci motor je 2.0TDI v Audi A4.
V prispevku vyse jsem psal o motorech na CNG, na zemnim plynu se v domacnostech vari, emise velice nizke.
Jadro meho sdeleni bylo v tom, ze elektromobil ZHORSI situaci oproti stavajicimu stavu, za cenu silenych investic.
Ale hype kolem je komedialnich rozmeru
K prispevku jeste jedno doplneni.
Ono v realu pri nucenem zavedeni elektromobilu celkove emise nejspis opravdu klesnou.
A to z duvodu, ze individualni mobilita BRUTALNE zdrahne.
A tak ja budu muset vyplajznout za nejake vozitko majlant v radu milionu, podstatna cast mych minusovych klikacu bude jezdit na kole.
Zapomen na vikendove cesty s deckama na lyze, sjet Ohri, k babicce do Humpolce. To bude vyhrazeno pro movitejsi klientelu.
Stredni trida stravi podstatnou cast vikendu ve vlaku, popr. bude korzovat po nakupnich centrech.
Chtel jsem napsat neco o zakonu nezamysleneho ucinku, ale IMHO predpokladam, ze presne tato eventualita je ekospinnery planovana a zamyslena.
Java se používá v extrémně konzervativních prostředích - banky, finanční instituce, korporace. To už samo je drobet "zdegenerovaná prostředí". Občas člověk nevěří vlastním očím, co vidí, uším, co slyší. Ve všem je tam snaha o stabilitu (což je pochopitelné) a o průměrnost (což až tak pochopitelné není). Na prvním místě jsou peníze, minimalizace rizik, nikoliv invence, originalita.
Všechny pokusy o napsání systémového sw v Javě se zrovna moc nepovedly - jeden čas se zkoušely sloupcové databáze psát v Javě - aktuálně se moderní databáze (nové databáze) píší v C++, případně GO.
Co se týče Graalu - nevidím žádné velké nadšení - je to asi dobrá věc, ale cílí pouze na Java komunitu, a ta z velké části vydělává peníze způsobem co nejvíc peněz / co nejmíň práce - co nejméně rizika, a nevídím žádnou jinou aktivitu než od tvůrců projektu - ono se zase o velkou novinku nejedná. Když se bavíte s lidma, tak lidi, co dělají v Erlangu, Elixiru, Go jsou mnohem víc zapálenější - mají chuť něco dělat - Javisti typicky generují peníze.
Ani náhodou netvrdím a ani si nemyslím, že tu za deset let Java nebude. Bude tu - za deset, za sto let. Ta saturace je ohromná, a je tam synergie s korporátním prostředím - takže dokud budou korporace, tak tu bude Java. Ale dost by mne překvapilo, kdyby se v Javě dělaly zajímavé projekty, jejichž cílem by bylo cokoliv jiného než vydělat peníze.
@Pavel Stěhule
Tak cílem obch. společností je vydělávat peníze a efektivita do toho patří. Samozřejmě na některé typy projektů se nehodí, klidně ty databáze, ale taky chápu že kolem standartních aplikací se standartním výkonem nenaskakují lidi na jednorázové hypy - jako třeba JS vývojáři, ale GraalVM se neujal?
Ta efektivita je na úkor kvality, invence. Relativně nedávno jsem se setkat s tím, že v jedné aplikaci subdodavatel nebyl schopný (ochotný) opravit relativně triviální jasnou zřejmou chybu. Java není příčina, důsledek, ale spíš takový typický projev.
To se všechno uvidí, ale žádnou velkou aktivitu kolem GraalVM nevidím - stejně tak nevidím volnou niku, kde by se taková virtualizace mohla prosadit - vyjma stávající Javy. Nemám ale patent na rozum - mohu se mýlit.
@ Pavel Stěhule
Nechci znít jako Ivan Nový, ale obávám se že jiný princip než cena-výkon určující, resp. dominantní, nikdy nebude, protože prostě vyjadřuje poměr efektivity životaschopnosti a udržitelnosti. Ovšem tak to pak taky vypadá, hledá se optimum, osciluje se okolo a vsadit pouze na jednu složku dává jasné extrémy.
Vůbec tady neobhajuji plýtvání. Je to asi daň za velikost, u korporací daň za pravidelnou rotaci managementu, který dneska už často nemá technický background, .. Na druhou stranu sázka na úspory, na jistotu vede ke stagnaci, odchodu kvalifikovaných lidí. Jsou to iterace, oscilace, někdy se ale stávají věci tak blbé, že to snese porovnání se socialistickýma podnikama a s komunistickým managementem.
@Pavel Stěhule
Tak dneska vleze do funkce manažera kde kdo, asi jako tehdy za socialismu.To by vydalo na samostatný seriál. Když jsem jednomu dobrému kamarádovi, který je mimo obor, vykládal co u nás prováděl management, tak mi to ani nechtěl věřit. A to jsem mu ani neřekl všechno, protože bych si už připadal jako idiot který si něco vymýšlí.
Nejake pekne featury ma, napriklad lehke gorutiny/channely, crossplatform binarky bez nutnosti jvm ci knihoven, potencialne to muze byt rychle a je to bezpecnejsi nez C, neresime pametova alokace.
Ale nejaku obdobu gorutin/kanalov a zelenych vlakien mas vsade (Java/.Net/C++17/JS a milion dalsich).
Ale co sa tyka richlosti, nebola to ziadna slava. Co som pozeral benshmarky, tak to pri bezalo +- rovnako ako Java, a potvrdzuje to aj moja osobna skunost.
S tou multiplatfomovou binarkou suhlasim, prave pre to som ho pouzil na tie dva projekty.
Zdravím.
Také bych rád poděkoval za seriál. Je super. Go se mi líbí a jsem rád,že seriál vznikl.Ani nevím proč,ale Go mě opravdu oslovilo.
Jen bych měl nějaký podnět.
Myslím,že hned v druhém díle bylo zmíněno,že bude vysvětlen rozdíl mezi vlastním typem s malý a velkým písmenem.Zatím jsem toto nenašel,že by bylo zmíněno.
Díval jsem se stránky golangu,kde je i úvodní seriál v češtině,pokud to nikde nezaznělo.
Co je třeba zmíněno v něm a ne tady,přitom mi to přijde super je vynucení typu a použití ve switchi.
Co já osobně bych někdy v dalších dílech rád našel,jsou praktické ukázky na reálné problémy (http server,odchytávání komunikace portů,záznam třeba console v prohlížeči do souboru a podobně).
A klidně můžou díly vycházet rychleji :-)
Ještě jednou díky.