Proč je Go tak pomalý?

noef

  • *****
  • 897
    • Zobrazit profil
    • E-mail
Re:Proč je Go tak pomalý?
« Odpověď #30 kdy: 01. 05. 2017, 13:25:30 »
Kdyz jsem se na Go naposledy dival, tak jeho typovy system byl slabsi nez ten Javy - neumelo to ani generika, muselo se to nejak hackovat. I tvurce sam rika, ze hlavnim cilem je, aby se podprumerny programator (clovek bez zkusenosti - student po skole) byl to rychle schopen naucit. Podle me je to uplne zcestny cil jazyka. Kolikrat se ucim novy jazyk do zamestnani? Ja osobne jeden za par (mozna i vic) let, navic casto velmi podobny nejakemu jinemu, takze problem nebyva. IMO je lepsi se dobre naucit jeden jazyk + ekosystem, nez "umet" 5x mini-jazyk trpici vaznymi nedostatky typu Go.

Na uceni programovani mozna dobre, ale pracovat bych v tom nechtel. Boileplatu jako v Jave, mene moznosti (napr. podradny typovy system) nez v Jave, horsi ekosystem nez v Jave. Mozna na nejake specificke pripady je vhodny, ale jako univerzalni jazyk me prijde dost nepovedeny.


Kit

Re:Proč je Go tak pomalý?
« Odpověď #31 kdy: 01. 05. 2017, 13:52:16 »
Kdyz jsem se na Go naposledy dival, tak jeho typovy system byl slabsi nez ten Javy.

Java ten typový systém také nemá zrovna dokonalý. I Pascal ho má lepší. Tato nedokonalost se však dá obejít používáním tříd, i když je to trochu pracnější, než definice typu.

Re:Proč je Go tak pomalý?
« Odpověď #32 kdy: 01. 05. 2017, 14:38:14 »
I tvurce sam rika, ze hlavnim cilem je, aby se podprumerny programator (clovek bez zkusenosti - student po skole) byl to rychle schopen naucit.
Nevím, jestli's to trochu neposunul.

Citace
The key point here is our programmers are Googlers, they’re not researchers. They’re typically, fairly young, fresh out of school, probably learned Java, maybe learned C or C++, probably learned Python. They’re not capable of understanding a brilliant language but we want to use them to build good software. So, the language that we give them has to be easy for them to understand and easy to adopt.
http://nomad.so/2015/03/why-gos-design-is-a-disservice-to-intelligent-programmers/#fn-601-1

Chtít, aby byl jazyk tak jednoduchý, aby v něm byl "normální" programátor schopný rychle psát kvalitní kód, je imho docela dobrá myšlenka. Je to lepší než když vymyslím skvělý jazyk, který ale lidi nepochopí a tak radějí píší (třeba) v tom Pythonu. Mimo to, jednodušší jazyk znamená taky např. rychlejší kompilaci, snadnější vytvoření nástrojů, snadnější refaktoring, snadnější typovou inferenci (vím s jistotou, že bude fungovat dobře vždycky) apod.

Myslím, že to není tak blbý, jak jsi to vykreslil.

5x mini-jazyk trpici vaznymi nedostatky typu Go.
Žádný "vážný nedostatek" jsi ale nezmínil. Absenci uživatelských* generik tak můžu chápat. Anebo ne. Co dál?

Existují poměrně rozumné argumenty (já s nima nesouhlasím, ale jsou respektuhodné), že uživatelská generika zas tak nutná nejsou. Koneckonců třeba C taky generika nemá - je to tímpádem podřadný jazyk pro blbečky?

* afaik Go generika má ve standardní knihovně - akorát si nemůžu vytvořit svoje

Boileplatu jako v Jave
Míň minimálně díky typové inferenci.

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Proč je Go tak pomalý?
« Odpověď #33 kdy: 01. 05. 2017, 14:49:59 »
Kdyz jsem se na Go naposledy dival, tak jeho typovy system byl slabsi nez ten Javy - neumelo to ani generika, muselo se to nejak hackovat. I tvurce sam rika, ze hlavnim cilem je, aby se podprumerny programator (clovek bez zkusenosti - student po skole) byl to rychle schopen naucit. Podle me je to uplne zcestny cil jazyka. Kolikrat se ucim novy jazyk do zamestnani? Ja osobne jeden za par (mozna i vic) let, navic casto velmi podobny nejakemu jinemu, takze problem nebyva. IMO je lepsi se dobre naucit jeden jazyk + ekosystem, nez "umet" 5x mini-jazyk trpici vaznymi nedostatky typu Go.

Na uceni programovani mozna dobre, ale pracovat bych v tom nechtel. Boileplatu jako v Jave, mene moznosti (napr. podradny typovy system) nez v Jave, horsi ekosystem nez v Jave. Mozna na nejake specificke pripady je vhodny, ale jako univerzalni jazyk me prijde dost nepovedeny.
Na typovém systému se prozatím nic nezměnilo, generické jsou jen kolekce. Nicméně trefná je právě ta poznámka, že Go není (nemá být) univerzální jazyk, jeho doména je poměrně omezená (z toho možná vznikají různá nedorozumění a následně flamy).

noef

  • *****
  • 897
    • Zobrazit profil
    • E-mail
Re:Proč je Go tak pomalý?
« Odpověď #34 kdy: 01. 05. 2017, 14:54:02 »
I tvurce sam rika, ze hlavnim cilem je, aby se podprumerny programator (clovek bez zkusenosti - student po skole) byl to rychle schopen naucit.
Nevím, jestli's to trochu neposunul.

Citace
The key point here is our programmers are Googlers, they’re not researchers. They’re typically, fairly young, fresh out of school, probably learned Java, maybe learned C or C++, probably learned Python. They’re not capable of understanding a brilliant language but we want to use them to build good software. So, the language that we give them has to be easy for them to understand and easy to adopt.
http://nomad.so/2015/03/why-gos-design-is-a-disservice-to-intelligent-programmers/#fn-601-1

Chtít, aby byl jazyk tak jednoduchý, aby v něm byl "normální" programátor schopný rychle psát kvalitní kód, je imho docela dobrá myšlenka. Je to lepší než když vymyslím skvělý jazyk, který ale lidi nepochopí a tak radějí píší (třeba) v tom Pythonu. Mimo to, jednodušší jazyk znamená taky např. rychlejší kompilaci, snadnější vytvoření nástrojů, snadnější refaktoring, snadnější typovou inferenci (vím s jistotou, že bude fungovat dobře vždycky) apod.

Myslím, že to není tak blbý, jak jsi to vykreslil.

Jiste, proti slozitosti nastroju nemuzu nic namitnout, ale neberu to jako duvod, proc udelat "hloupy" jazyk. Prace stroje je o nekolik (desitek?) radu levnejsi, nez prace programatora. Pokud mam jazyk s nizkou mirou abstrakce, jako Go, tak je programator odsouzen k opakovani psani a cteni boilerplatu.

Mimochodem, co se stane, az se z podprumerneho programatora bez zkusenosti stane programator prumerny, ktery by tu Javu daval s prehledem? Odpovim si - bude muset zacit prasit, protoze to jinak nejde (rozepsano dale).

5x mini-jazyk trpici vaznymi nedostatky typu Go.
Žádný "vážný nedostatek" jsi ale nezmínil. Absenci uživatelských* generik tak můžu chápat. Anebo ne. Co dál?

Existují poměrně rozumné argumenty (já s nima nesouhlasím, ale jsou respektuhodné), že uživatelská generika zas tak nutná nejsou. Koneckonců třeba C taky generika nemá - je to tímpádem podřadný jazyk pro blbečky?

C neni jaksi zamyslen jako univerzalni jazyk, nic co by melo nahradit Javu, Python ci JavaScript. Nebo snad Go aspiruje nahradit C? Rozhodne nesouhlasim s tim, ze uzivatelska generika nejsou nutna. Minimalne pro knihovny se dost hodi a obcas je pouziji i ve svem kodu (a to se tim nezivim, lidi kolem Javy to urcite budou pouzivat vic, nez ja se Scalou [kde jsou navic alternativy], ktery si s tim hraje par hodin tydne).

* afaik Go generika má ve standardní knihovně - akorát si nemůžu vytvořit svoje

Boileplatu jako v Jave
Míň minimálně díky typové inferenci.

Videl jsem, jak se "resi" generika. Copy/paste, potlacenim typove kotroly ci generatory kodu. Nic jineho nez fuj na to rict nemuzu. Kdyby byla rozumna nahrada, nejake typeclassy nebo neco podobneho, tak nic nereknu, ale (nejen) z meho pohledu je ten jazyk zamerne oklesteny, kvuli tomu v realnych projektech casto pokulhava a slaby type system se resi generatory kodu, ktere nejsou rozhodne jednoduche a urcite slozitejsi, nez kdyby pridali napr. generika ala Java, prestoze jednoduchost je jeden z hlavni duvodu proc pouzivat ten jazyk.


noef

  • *****
  • 897
    • Zobrazit profil
    • E-mail
Re:Proč je Go tak pomalý?
« Odpověď #35 kdy: 01. 05. 2017, 14:59:21 »
...
Na typovém systému se prozatím nic nezměnilo, generické jsou jen kolekce. Nicméně trefná je právě ta poznámka, že Go není (nemá být) univerzální jazyk, jeho doména je poměrně omezená (z toho možná vznikají různá nedorozumění a následně flamy).

Bohuzel casto vidim lidi, jak Go srovnavaji s Javou, JS nebo ho vyobrazuji jako zabijaka Pythonu. Ostatne neni nahrada Pythonu snad duvod, proc Go vznikl? Mozna proto ta vsudypritomna nedorouzmneni a click-bait prispevky na blozich provokujici flame...

Re:Proč je Go tak pomalý?
« Odpověď #36 kdy: 01. 05. 2017, 15:08:38 »
Jiste, proti slozitosti nastroju nemuzu nic namitnout, ale neberu to jako duvod, proc udelat "hloupy" jazyk. Prace stroje je o nekolik (desitek?) radu levnejsi, nez prace programatora. Pokud mam jazyk s nizkou mirou abstrakce, jako Go, tak je programator odsouzen k opakovani psani a cteni boilerplatu.
Souhlasím. Ale nevidím to tak příkře jako ty. Kdybych chtěl propagovat opak: přílišná volnost v úrovni abstrakce a přílišný důraz na DRY vede k sice kratšímu, ale o to nečitelnějšímu kódu. Navíc otrocká implementace DRY může taky způsobit, že všechno centralizuješ/abstrahuješ a pak máš velké problémy jednu část přizpůsobit/poupravit. Mám s tímhle konkrétní špatnou zkušenost z jednoho projektu - všechno bylo vyřešeno tak abstraktně/jednotně/DRY, že se kdokoli pak bál na cokoli šáhnout, aby nerozbil něco úplně jinde...

Osobně mám třeba docela špatné zkušenosti s tím, co produkují Rubyisti. To jsou takové kejkle s metaprogramováním, monkeypatchingem a jánevímčím (because we can!), že pak říct, co a přesně jak doopravdy ten kód dělá, je nadlidský úkol. Ideální řešení všeho je samozřejmě DSL (because we can!)

Podobný, ale o několik řádů lepší je to s haskellisty - taky si libují v abstrakcích, kde prokousat se z abstraktní roviny až dolů není žádný med, ale aspoň haskellisti bývají nadprůměrně chytří, tak to aspoň dělají dobře.

C neni jaksi zamyslen jako univerzalni jazyk, nic co by melo nahradit Javu, Python ci JavaScript.
Tak to potom asi moc nechápu. V C je napsaná snad největší množina všeho možného softu. Od GUI po matematické knihovny...

Rozhodne nesouhlasim s tim, ze uzivatelska generika nejsou nutna.
Všechno je jenom otázka ceny. Když je nemám, platím nějakou cenu, kterou mi může vyvážit něco jiného... Ale jinak v tomhle taky souhlas: osobně by mi bylo sympatičtější, kdyby generika měl.

Videl jsem, jak se "resi" generika. Copy/paste, potlacenim typove kotroly ci generatory kodu.
Souhlas, je to zoufalost.

UF

Re:Proč je Go tak pomalý?
« Odpověď #37 kdy: 01. 05. 2017, 15:24:38 »
nejlepší je učit se jej z prací Pika
https://en.wikipedia.org/wiki/Pika bych určitě nedoporučoval, to není ani hlodavec! Jedině z prací https://cs.wikipedia.org/wiki/Pytlono%C5%A1ovit%C3%AD !
A o genitivu jsi už slyšel?  :P
to neeeeeeee

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Proč je Go tak pomalý?
« Odpověď #38 kdy: 01. 05. 2017, 15:40:43 »
...
Na typovém systému se prozatím nic nezměnilo, generické jsou jen kolekce. Nicméně trefná je právě ta poznámka, že Go není (nemá být) univerzální jazyk, jeho doména je poměrně omezená (z toho možná vznikají různá nedorozumění a následně flamy).

Bohuzel casto vidim lidi, jak Go srovnavaji s Javou, JS nebo ho vyobrazuji jako zabijaka Pythonu. Ostatne neni nahrada Pythonu snad duvod, proc Go vznikl? Mozna proto ta vsudypritomna nedorouzmneni a click-bait prispevky na blozich provokujici flame...
Tvůrci tvrdí, že chtěli nahradit C++. Co si myslí jiní, je bezpředmětné.

Možná už je čas vyrůst z kritizování pouze syntaxe (ať už Go nebo třeba ObjC). Na Go je pěkná rychlost, obsáhlá a efektivní standardní knihovna a neuvěřitelně výkonný GC. Zrovna syntax je dle mého čistě *subjektivního* pohledu celkem hnusná, ale objektivní výhody to dostatečně vyvažují. Třeba boilerplatu se dá úspěšně vyhnout používáním rozhraní.

UF

Re:Proč je Go tak pomalý?
« Odpověď #39 kdy: 01. 05. 2017, 15:50:30 »
... v kazdym pripade je zajimavy si poslechnout par nazoru od samotnych lidi z googlu co ho musi pouzivat ... a ted nemyslim marketing

gll

Re:Proč je Go tak pomalý?
« Odpověď #40 kdy: 01. 05. 2017, 17:24:26 »
nejlepší je učit se jej z prací Pika
https://en.wikipedia.org/wiki/Pika bych určitě nedoporučoval, to není ani hlodavec! Jedině z prací https://cs.wikipedia.org/wiki/Pytlono%C5%A1ovit%C3%AD !

česky je to pišťucha.

Re:Proč je Go tak pomalý?
« Odpověď #41 kdy: 01. 05. 2017, 17:51:25 »
... v kazdym pripade je zajimavy si poslechnout par nazoru od samotnych lidi z googlu co ho musi pouzivat ... a ted nemyslim marketing
Měl bys tip na nějaký link, co stojí za přečtení?

gll

Re:Proč je Go tak pomalý?
« Odpověď #42 kdy: 01. 05. 2017, 18:01:16 »
Jiste, proti slozitosti nastroju nemuzu nic namitnout, ale neberu to jako duvod, proc udelat "hloupy" jazyk. Prace stroje je o nekolik (desitek?) radu levnejsi, nez prace programatora. Pokud mam jazyk s nizkou mirou abstrakce, jako Go, tak je programator odsouzen k opakovani psani a cteni boilerplatu.
Souhlasím. Ale nevidím to tak příkře jako ty. Kdybych chtěl propagovat opak: přílišná volnost v úrovni abstrakce a přílišný důraz na DRY vede k sice kratšímu, ale o to nečitelnějšímu kódu. Navíc otrocká implementace DRY může taky způsobit, že všechno centralizuješ/abstrahuješ a pak máš velké problémy jednu část přizpůsobit/poupravit. Mám s tímhle konkrétní špatnou zkušenost z jednoho projektu - všechno bylo vyřešeno tak abstraktně/jednotně/DRY, že se kdokoli pak bál na cokoli šáhnout, aby nerozbil něco úplně jinde...

Osobně mám třeba docela špatné zkušenosti s tím, co produkují Rubyisti. To jsou takové kejkle s metaprogramováním, monkeypatchingem a jánevímčím (because we can!), že pak říct, co a přesně jak doopravdy ten kód dělá, je nadlidský úkol. Ideální řešení všeho je samozřejmě DSL (because we can!)

Podobný, ale o několik řádů lepší je to s haskellisty - taky si libují v abstrakcích, kde prokousat se z abstraktní roviny až dolů není žádný med, ale aspoň haskellisti bývají nadprůměrně chytří, tak to aspoň dělají dobře.

Naopak, bez DRY musíš měnit jednu věc na více místech, snadno něco přehlédneš.

Na této sránce https://appliedgo.net/generics/ doporučují copy pastovat nebo generovat kód nějakými externími nástroji. Takový projekt bych nechtěl udržovat.

Ruby není pro lidi co neumí psát testy. Je v tom napsaný třeba github.

UF

Re:Proč je Go tak pomalý?
« Odpověď #43 kdy: 01. 05. 2017, 18:07:29 »
... v kazdym pripade je zajimavy si poslechnout par nazoru od samotnych lidi z googlu co ho musi pouzivat ... a ted nemyslim marketing
Měl bys tip na nějaký link, co stojí za přečtení?
ani ne :) napriklad kdyz Rob prechazel do gluglu tak k tomu mel sve duvody a tak jak jinak - ono vsechno v gluglu trosku smrdi zenao

gll

Re:Proč je Go tak pomalý?
« Odpověď #44 kdy: 01. 05. 2017, 18:16:29 »
Mezi performance testy je i binární strom a to mi opravdu nepřijde jako nějaké nefér srovnání výkonu.
Je to srovnání hrubého výkonu - jde o spíš jednodušší number crunching. O vhodnosti pro konkrétní praxi to nemusí vypovídat vůbec nic (např. pokud jazyk umožňuje snadno paralelizovat i složitější programy - tj. líp vytížit víc jader CPU, vhodněji cachovat atd. atd., může to být v praxi větší výhoda než samotný hrubý výkon).

Nevím čemu říkáš number crunching, já si pod tím představuji něco jiného. Máš nějaký příklad lepší úlohy? Souhlasím, že ty výsledky nejsou moc objektivní. Nepoužívají dostupné knihovny.