Proč ten hype okolo Go?

vv

Re:Proč ten hype okolo Go?
« Odpověď #330 kdy: 04. 09. 2018, 00:16:23 »
Samozrejme, ze je blbost neco takoveho chtit po GO, ale aspon neco jako kolekce s Object polozkami v podani jawy 1.4 by se siklo.
ale mlho, na to uz ste odpoved dostal:)

kdyz neco chybi, tak to vetsinou uz nekdo naprogramoval
treba tu treemapu jsem nasel tady
https://github.com/emirpasic/gods#treemap

je to potreba hejtovat i to s cim neni problem
v tomhle je oproti jave jedinej rozdil a to ten ze to neni soucasti standartni knihovny, ale to v jinych jazycich taky nemate.


Kit

Re:Proč ten hype okolo Go?
« Odpověď #331 kdy: 04. 09. 2018, 00:22:14 »
Konkretne v danem pripade se to ma tak:
- po zalogovani usera v @PostConstruct spring session beanu reknu hibernatovi, at mi nacte z postgresa ciselnik cca 300 polozek, hibernate vrati List<RowBean>. Na onen list postvu stream() a toMap() collector, vysledek prelozeny do LinkedHashMap<String,String> ulozim jako atribut session beanu - cela transformace na jednom radku kodu.
- na tenhle atribut povesim Primefaces widget, ktery mi udela luxusni skinovatelny ajaxovy combobox s naseptavacem pres fulltext search, to je prakticky jediny zpusob, jak udelat lidsky pouzitelny combobox se stovkami polozek.
 
A protoze se pracuje pouze s predzvykanymi daty v session,je to pekelne rychle a nezatezuje CPU serveru, pamet zere, ale to je Jawy standard.

Hotovo na nekolika krasne citelnych radcich kodu.

Samozrejme, ze je blbost neco takoveho chtit po GO, ale aspon neco jako kolekce s Object polozkami v podani jawy 1.4 by se siklo.

V Javě je na to knihovna s třídou LinkedHashMap. Zkoušel jsi najít podobně hotovou alternativu v Go? Pokud jsi nenašel a napsal sis ji sám, zveřejnil jsi ji?

bakakaika

Re:Proč ten hype okolo Go?
« Odpověď #332 kdy: 04. 09. 2018, 00:37:15 »
Je to psuedokod, ale aby ste boli spokojni
Kód: [Vybrat]
file, _ := os.Open("/path/to/file.txt")

Proste ide o to, ze pri vynimkach musite pre ignoraciu chyby nieco aktivne urobit

To podtržítko považuji právě za tu aktivní snahu ignorovat chybu.

Bloky try-catch jsou spíše k seskupení chyb, aby si nemusel odchytávat každou jednu. Nepolemizuji nad tím, zda je to dobře nebo špatně.

No a když tedy tento kód použijeme a funkce open() vrátí chybový stav, co se stane? Já v go nikdy nic nepsal, ale naprvní pohled mi tento přístup přijde pozadu oproti tomu jak to dělá Rust nebo i oproti klasickým vyjimkam,

vv

Re:Proč ten hype okolo Go?
« Odpověď #333 kdy: 04. 09. 2018, 00:45:17 »
V Javě je na to knihovna s třídou LinkedHashMap. Zkoušel jsi najít podobně hotovou alternativu v Go? Pokud jsi nenašel a napsal sis ji sám, zveřejnil jsi ji?

nemel jsem potrebu to zatim hledat:)) ale kupodivu google LinkedHashMap v go najde
https://godoc.org/github.com/jabong/florest-core/src/common/collections/maps/linkedhashmap

budes muset najit jinou javy tridu ktera v go udelat nejde:(

vv

Re:Proč ten hype okolo Go?
« Odpověď #334 kdy: 04. 09. 2018, 00:56:48 »
Je to psuedokod, ale aby ste boli spokojni
Kód: [Vybrat]
file, _ := os.Open("/path/to/file.txt")

Proste ide o to, ze pri vynimkach musite pre ignoraciu chyby nieco aktivne urobit

To podtržítko považuji právě za tu aktivní snahu ignorovat chybu.

Bloky try-catch jsou spíše k seskupení chyb, aby si nemusel odchytávat každou jednu. Nepolemizuji nad tím, zda je to dobře nebo špatně.

No a když tedy tento kód použijeme a funkce open() vrátí chybový stav, co se stane? Já v go nikdy nic nepsal, ale naprvní pohled mi tento přístup přijde pozadu oproti tomu jak to dělá Rust nebo i oproti klasickým vyjimkam,

vrati chybu kterou zahodis a v ty promenny file bude nil, s cim nekde dal musis pocitat


Kit

Re:Proč ten hype okolo Go?
« Odpověď #335 kdy: 04. 09. 2018, 01:23:32 »
Kód: [Vybrat]
file, _ := os.Open("/path/to/file.txt")
No a když tedy tento kód použijeme a funkce open() vrátí chybový stav, co se stane? Já v go nikdy nic nepsal, ale naprvní pohled mi tento přístup přijde pozadu oproti tomu jak to dělá Rust nebo i oproti klasickým vyjimkam,
vrati chybu kterou zahodis a v ty promenny file bude nil, s cim nekde dal musis pocitat

Nevýhodou tohoto přístupu je, že se už nedozví, proč se ten soubor nepodařilo otevřít.

Youda

Re:Proč ten hype okolo Go?
« Odpověď #336 kdy: 04. 09. 2018, 07:53:58 »
Pekne hosi, tak jste mi tu nasli dokonce dve naprosto ruzne implemnetace LinkedHashMap.
Oba pripady jsou one-man-show na githubu, na jeden z nich se 2 roky nesahlo.

Sorac, ale tyhle naproste zaklady MUSI byt soucasti stdlib, uz z toho prosteho duvodu, se se tyto datove struktury pouzivaji pro predavani dat mezi knihovnimi komponentami.
Kdyz nekdo pro GO napise libovolnou knihovnu, asi tezko svoje API postavi kolem jednomuzneho projektiku z Githubu.
Ten prvni odkaz podporuje JSON serializaci, to ma asi "resit" tenhle problem. JSON, ktery poztraci informace o typu a za se  jim spolehlive prenest prakticky pouze string, cislo a datum.

C++ stdlib (STL) tohle resi od pocatku veku - http://www.cplusplus.com/reference/map/map/
A prijde mi pomerne tristni vyvinout novy jazyk, a neresit tyhle zaklady.

MarSik

Re:Proč ten hype okolo Go?
« Odpověď #337 kdy: 04. 09. 2018, 09:14:54 »
a prece to nekdo naprogramoval, vystaci si s interfacema

Což je ekvivalent Javy 1.4, kde všechny kolekce vracely Object a pro použití hodnoty se pak muselo přetypovávat. Všichni co znám jsme to svorně nenáviděli.

Java zavedla generika v Java 5, tj. rok 2004. Takové C++ mělo šablony už v roce 1990 (nebo 1998 pokud za bernou minci berete až ISO).
Go je zrovna v tomto ohledu dvě dekády pozadu. Nic nad čím bychom měli jásat. I Go má totiž svoje silné a slabé stránky a poukazovat na ty slabé není nic špatného.

dustin

Re:Proč ten hype okolo Go?
« Odpověď #338 kdy: 04. 09. 2018, 09:55:19 »
Občas tu přece někdo doporučuje jako výhodné předávat data netypovaným asociativním polem/hashmapou :-)

Tyhle "fígle" z legacy kódu vyhazujeme roky. A pořád občas narážím na ukládání různých nekompatibilních typů do jedné kolekce a následné rozhodování dle instanceof.... peklo.

gll

  • ****
  • 429
    • Zobrazit profil
    • E-mail
Re:Proč ten hype okolo Go?
« Odpověď #339 kdy: 04. 09. 2018, 10:15:32 »
Sorac, ale tyhle naproste zaklady MUSI byt soucasti stdlib, uz z toho prosteho duvodu, se se tyto datove struktury pouzivaji pro predavani dat mezi knihovnimi komponentami.

není důvod, aby defaultní mapa neudržovala i pořadí prvků. Skoro nic to nestojí. Můžete mít různé implementace mapy, které implementují stejné rozhraní. Knihovna by neměla vyžadovat konkrétní typ.

gll

  • ****
  • 429
    • Zobrazit profil
    • E-mail
Re:Proč ten hype okolo Go?
« Odpověď #340 kdy: 04. 09. 2018, 10:24:43 »
Občas tu přece někdo doporučuje jako výhodné předávat data netypovaným asociativním polem/hashmapou :-)

je to dobrá praktika v jazycích bez keyword argumentů.

vv

Re:Proč ten hype okolo Go?
« Odpověď #341 kdy: 04. 09. 2018, 10:28:57 »
Pekne hosi, tak jste mi tu nasli dokonce dve naprosto ruzne implemnetace LinkedHashMap.
Oba pripady jsou one-man-show na githubu, na jeden z nich se 2 roky nesahlo.

Sorac, ale tyhle naproste zaklady MUSI byt soucasti stdlib, uz z toho prosteho duvodu, se se tyto datove struktury pouzivaji pro predavani dat mezi knihovnimi komponentami.
Kdyz nekdo pro GO napise libovolnou knihovnu, asi tezko svoje API postavi kolem jednomuzneho projektiku z Githubu.
Ten prvni odkaz podporuje JSON serializaci, to ma asi "resit" tenhle problem. JSON, ktery poztraci informace o typu a za se  jim spolehlive prenest prakticky pouze string, cislo a datum.

C++ stdlib (STL) tohle resi od pocatku veku - http://www.cplusplus.com/reference/map/map/
A prijde mi pomerne tristni vyvinout novy jazyk, a neresit tyhle zaklady.

tak ono se na naky implementaci mapy musi kazdej tejden neco menit. ale to snad ne;)
aby to mohli pouzivat knihovny napric, staci aby pouzivali stejne nazvy metod. v tom je rozdil od javy, tam se musi primo rict co objekt implmentuje.

jako jo, bylo by hezky mit par interfacu a implementaci jako soucast standartni knihovny, ale jak uz sem psal, vsechny jazyky to taky nemaj.

a c++ bych jako vzor radsi nedaval, tech 50 ruznych implentaci stringu na jednom projektu me jeste ted strasi:))

Kit

Re:Proč ten hype okolo Go?
« Odpověď #342 kdy: 04. 09. 2018, 10:30:47 »
Občas tu přece někdo doporučuje jako výhodné předávat data netypovaným asociativním polem/hashmapou :-)

Tyhle "fígle" z legacy kódu vyhazujeme roky. A pořád občas narážím na ukládání různých nekompatibilních typů do jedné kolekce a následné rozhodování dle instanceof.... peklo.

Pokud místo hodnot různých typů uložíš do kolekce polymorfní objekty, tak máš vystaráno.

Kit

Re:Proč ten hype okolo Go?
« Odpověď #343 kdy: 04. 09. 2018, 10:36:36 »
Občas tu přece někdo doporučuje jako výhodné předávat data netypovaným asociativním polem/hashmapou :-)
je to dobrá praktika v jazycích bez keyword argumentů.

Tohle používám docela běžně a jsem za to kritizován, protože to prý není typově korektní řešení. Jako alternativa mi bývá nabídnuta nějaká obluda, nejčastěji v podobě frameworku.

dustin

Re:Proč ten hype okolo Go?
« Odpověď #344 kdy: 04. 09. 2018, 11:25:01 »
Pokud místo hodnot různých typů uložíš do kolekce polymorfní objekty, tak máš vystaráno.

No samozřejmě, objekty implementující nějaký interface. Jak v tom PHP víš, který interface zrovna daná hashmapa nese, když nemáš něco jako generika?