Zdravím. Když se zeširoka píše o genericitě v Go, určitě by bylo vhodné věnovat alespoň pár vět způsobu, jak se implementují generické funkce à la sort.Slice, to může být nadmíru užitečné.
predpokladam nejak pres reflexi? Nebo se tomu proste preda jakakoli funkce, ktera se bude volat (tak jako v C)?
Ta funkce, která se předává, má typy elementů kolekce určené explicitně. Ale řez je deklarovaný na úrovni API jako interface{}. Tam pak reflexe je (ve standardní knihovně), ale existují i jiné způsoby.
Zavádějící otázka. Text může být prezentován třeba i jako mluvené slovo, ale to že mluvené slovo není vidět není relevantní pro Calculonovo rejpání.
Po kliknutí na funkci vede odkaz sem: https://golang.org/src/sort/slice.go?s=396:451#L3
Řekni, kdyby jsi chtěl ještě něco vyhledat či rozkliknout :)
Autoři jazyka byli neschopní popasovat se s trochou komplexity a tak uživatelé zavlečou do svých projektů zbytečnou a hůře zvladatelnou komplexitu přes tooling třetích stran.
Na druhou stranu čekání na Go 2 je skutečně jako čekání na Godota. Za 50 let budeme mít Go 1.114 a furt psát “if err!=nil ...”.
S Go 2 se podle všeho v Googlu nijak nespěchá, ale vy to určitě (aspoň podle novinek) taky sledujete. Jedině, že by to předali komunitě, ale to asi nehrozí...
Jistě, to bylo jen takové povzdechnutí teoretika, v praxi mi na Go vlastně nic nechybí.
Nechci tlačit :) ale kdy bude další článek?
Zase tak spatne na tom Go neni, protoze zivot devela je spatny i jinde:
https://www.toggl.com/programming-princess/
4. 3. 2020, 18:47 editováno autorem komentáře
Tak zase to ma vyhodu, ze postupne vzniknou 3-4 vzajemne nekompatibilni implementace techto toolingu (jako je treba v pripade LinkedHashMap), kazda bude umet neco (poradne zadna) a programator si uzije spoustu legrace.
Stejne je zajimavy, ze treba autori Pythonu pochopili, ze nepozrali celou moudrost sveta a postupem casu z otresneho Pythonu 1 udelali jazyk co neurazi a osobne ho beru jako skriptovaci jednicku.
GO pristup k prijimani novinek mi pripomina schuzku druzstevniku v kocarkarne panelaku na tema rekonstrukce vytahu...
Jo to jo.
Akorat mluvime o chirurgovi z roku 1620, co nasazuje lety osvedcene kombo pijavice - klystyr - amputace.
@Youda Skoro sem spadl smíchy pod stůl :)
@Calculon A co tím jako myslíte? https://en.wikipedia.org/wiki/Guido_van_Rossum Jako že ste větší eso?
6. 3. 2020, 21:25 editováno autorem komentáře
Otazkou je preco vobec cakat na Go 2, ked jestvuje plno lepsich alternativ, ktore 10 rokov po svojom vzniku stale netrpia detskymi chorobami a nedomyslnostou zo strany autorou (Rust, .Net Core, java + GralVM,...).
Nejlépe to dotáhli v Rustu, tam by skutečně mohli autoři Go hledat inspiraci (a zrovna jeden návrh generik vychází z Rustu).
Že jste to vy, tady máte celý seriál https://www.root.cz/serialy/programovaci-jazyk-rust/ :)
Ale je fakt, že se k Rustu ještě vrátím, od doby vydání seriálu do Rustu přidali spoustu zajímavých věcí (okolo async a tak).
Cool, díky za odkaz! Koukám 2017, to je už skoro pravěk v dnešní uspěchané (IT) době, třeba právě to async mě dost zajímá.
jj máte pravdu. Základy zůstávají, ale zrovna u Rustu asi ne všechno bude up to date, takže se do toho pustím co nejdříve.
Zrovna zavedení async/await je imho docela nešťastné. Je to jedna z mála věcí, které má Go líp než Rust. CSP-like async programování je imho daleko lepší než async/await.
No inspirovali se jinde :) Ale bylo by zajimave tam mit kanaly s plnou typovou kontrolou i kontrolou vlastnictvi. To jsem nikde nevidel (ale priznam, ze CSP-like reseni znam jen z Clojure, Go a C).
K tomu nevyváženému stromu na konci dielu. Aj ten pôvodný kód na začiatku negeneruje vyvážený strom stále. Stačí si ho dať vypísať po vložení šiestich hodnôt.
---[ 0
---[ 1
---[ 2
---[ 3
---[ 8
---[ 11
Já to myslel tak, že ten příklad jako celek (s tak napsanými hodnotami, jak jsem je uvedl) vytvoří binární strom. Jinak máte pravdu, algoritmus tvoří nevyvážený vyhledávací strom, nic lepšího.
Ta otázka tam byla pro uvědomění si, proč je to zrovna v posledním případě jinak (ale nechci zase moc napovídat) :-)