Mam zkusenost s vyvojem v Erlangu a bezne programuji v Pythonu, Objective-C, Go, Javascriptu. Pri uceni to docela bolelo ale to prisuzuji tomu, ze moje materske programovaci mysleni vychazi z imperativnich jazyku. Po par mesicich vyvoje v Erlangu jsem vnimal, ze se mi programuje snadno a lehce, coz prisuzuji tomu, ze Erlang nuti developera pracovat v mensim kontextu komplexity reseni problemu nez imperativni jazyky.
Kdyz jsem pote presel na Python, zasil jsem pocit paniky jak udrzet context cele tridy a jeji funkcionality v hlave. Mel nekdo dalsi podobny pocit nebo zkusenost s Erlangem?
"Rich Hickey odmítá používání knihoven a propaguje znovuvýnalézání kola."
popravdě to slyším poprvé, máš pls. nějaký link, kde to píše/tvrdí? Však Clojure je právě pragmatické v tom, že to není psaný na zelené louce (jako třeba Haskell), ale dokáže použít celý java ekosystém.
Tohle dělával pravidelně Železný v pořadu Volejte řediteli, a víme, co to je za člověka. Rob Pike má brejle po celou přednášku vždy nasazeny, z čehož usuzují, že to není pozér, který by používal levných triků k získání důvěry, ale že mu jde o věc samotnou. Takže je zjevné, že Go nemůže být nic špatného, když ho navrhli lidi jako Rob.
viz "The Why Of Go" https://www.infoq.com/presentations/go-concurrency-gc
To mně, sorry, přijde jako "argument from authority". Autor má zvučné jméno a tak je jeho návrh dobrý. Dále autor není frikulín, proto odhodil všechny módní výstřelky a zvolil jenom užitečné věci. Podle mě to tak není, Go je jazyk navržený pro potřeby Google (a ještě jenom pro nějakou podmnožinu problémů, které Google řeší), nutně trpí tím, že ho navrhoval někdo, kdo má osobní preference či úchylky (tak je tomu u každého jazyka, samozřejmě) a objektivně se hodnotit nedá.
Nicméně si vzpomínám, že jsem v počátcích chtěl zkusit pár programů v Go, zažil si dependency hell (správa závislostí tam byla hodně nedopečená, nevím jak je to teď) a kompilátor měl nějaký obskurní neintuitivní název binárky, tuším že odvozený z nějakých zvyklostí z Plan9 (tohle se myslím změnilo a autorům to někdo omlátil o hlavu) a to teď vůbec ještě nemluvím o jazyku. Prostě mi přišlo, že to naplácali, jak je to napadlo, čímž netvrdím, že se ten jazyk vůbec nedá používat, ale u "moderního" jazyka bych při prvním setkání čekal opravdu trochu jiný pocit. Pocit, že to fakt někdo chtěl udělat dobře, že se hodně trápil, opravdu se díval, co je kde dobrého a možná se někde netrefil, ale výsledek je bomba. V mém případě tam nic takového nevidím. Jsou jazyky, kde to podle mě vidět je podstatně více.
No tak z tohodle pohledu tam toho chybi opravdu dost, treba closure opravdu tridu nenahradi.
Ja chapu GO jako nahradu Cecka, kde jsou prevzaty nektere prvky OOP jazyku ve "verzi pro chude", viz treba privatni atributy definovane lowercase na uzrovni package. Slusny GC.
A to za ucelem, at zustane jazyk rozumne rychly a kompilator rozumne jednoduchy.
V realu, Golang - prvni verze 2010, dneska je v toma psana hromada pekneho softu, namatkou treba NATS, Prometheus, Gitea.
Haskel prvni verze 1990, zadnou diru do sveta vazne nevidim.
Tady nejde snad o to volit mezi Haskellem a Go. Myslím že většina přítomných chápe, že Go nechtělo být "lepší Haskell". Co ale znamená "rozumně rychlý" a jak moc by Go ublížil propracovanější typový systém, uvidíme, pokud se prosadí třeba Rust nebo nějaký jeho nástupce do domény (nebo třeba Kotlin native, co já vím), kterou teď Go okupuje.
Otazka je, kde je hranice mezi pragmaticnosti a nedomyslenosti. Opravdu je vhodne tak zjednodusit vkladani knihoven, ze se rovnou tahaji s githubu? Opravdu budete pokazde kontrolovat, ze nekdo nehackul autorovi pristup a neco si tam nepridal (jako se to stalo napr. u relativne popularnich javaskriptovych knihoven.)?
V pripade pouziti knihoven z distribuce muzu (a nemusim) mit duveru v bezpecnostni mechanismy, ktere stoji za vydavanim te distribuce. V pripade, tahani z githubu je musim mit pro kazdou knihovnu extra (bude to autor, co si aktualizuje svoji stanici? Bude to autor, co neleze na nebezpecne stranky na webu atd. atd.).
Prinejmensim je tam dalsi par (nebo spis pary) oci, ktere to vidi. A distribuce vydavaji balicky v cyklech, takze je tam i vetsi cas na kontrolu. A kontrola navic je jedna z roli, ktere by mely distribuce zajistovat.
A vlastni kopie tohle neresi, jen umoznuje vlastni intervaly kontroly.
Pochopitelne asi zalezi na distribuci. Pokud ma sice v nazvu enterprise, ale clovek je rad i za to, kdyz nejsou zavislosti v kolizi, tak se na nejakou vetsi bezpecnost opravdu nemuze spolehnout.
Programovanim sa zivim ako hlavne embedded C/C++ (nie v prahe a nie za 100k) ale ide to. Vyskytol sa projekt kde by slo pouzit "moderny" jazyk, reku sa niecomu priucim... pozrel som po top 10 jazykov a.. GO, a podobne boli pre mna tak neprehladne.. ze cez vsetku bolest som to napisal s boost + C11 ...
Nechapem na com autor fical, ale.. v C: "uint32_t X"... v GO: "type X uint32" .. ano GO nieje C, takychto veci je neurekom..