Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - zboj

Stran: 1 ... 82 83 [84] 85 86 ... 101
1246
Vývoj / Re:Vyplatí se učit C++?
« kdy: 30. 12. 2015, 10:42:55 »
Ne.

Znas CLR, nauc se F#, to te posune uplne jinam. Souhlas s kolegou vyse co mluvil o haskellu atd.

Rozsiri ti to schopnost premyslet a uvazovat lepe o programech.
Naucit se c++, ti vezme hlavne hodne mentalnich sil s technicistnima vecma, ktere te ale tak daleko neposunou, protoze jsou c++ specific.

Veci co frci v F#, Clojure, Haskellu, se ted dostavaji do JavaScriptu a tim padem i do mainstreamu.

Vsak uz i C++ a Jave jsou lambdy vid, a to je teprve zacatek. To jak ted kazdej jde do FRP a Observables (RxJS,....) je taky dost posun v tom jak se co dela.

lambdy to je goto moderních programovacích jazyků, když někde potřebujete použít lambda výraz, znamená to, že aplikaci máte špatně navrženu a řešíte něco ad hoc, a aplikace se postupně stává nerošiřitelná a neudržovatelná. Kompaktní zápis je téměř vždy na škodu, zavádí magii a manýru do kódu, vytváří se tím vlastní jazyk programátora, který ztěžuje porozumění ostatním, roste redundance kódu, programátor pak místo na řešení problémů zaměřuje svou pozornost na vytváření efektních figur, přičemž není schopen je uzavřít do znovupoužitelných funkcí, protože mají jen ornamentální povahu a nenesou svůj vlastní obsah a vytvářejí šum v kódu. Jsou pak obdobou endogenních virů biologických systémů.

Budou-li programovat stroje, tak budou používat funkcionální jazyky, protože ty umožňují řešit problémy bez existence mentálního modelu problému, který strojům zatím není přístupný. A určitě kód naprogramovaný stroji nebude optimální a nebude rozšiřitelný, pokud bude potřeba změna, stroj starý kód zahodí a systém vygeneruje celý znovu, ostatně tak funguje i biologická evoluce, když hledá řešení. Bude to mít zajímavé důsledky, změny nebudou přinášet jen zlepšení, ale často zhoršení funkčnosti, protože proces generování bude založen na nějaké heuristice, která bude obměňovat dříve vygenerovaný systém a testovat dosažení požadované změny. Počet pokusů bude ovlivňován náklady a tlačen dolů, takže zákazník bude platit podle kvality náhodně dosaženého řešení.
Naopak, lambdy činí kód elegantnějším a čitelnějším. BTW goto není špatné, jen není pro patlaly.

1247
Vývoj / Re:Vyplatí se učit C++?
« kdy: 30. 12. 2015, 10:10:00 »
https://www.quora.com/Is-LinkedIn-getting-rid-of-Scala

Tak pokud je pravda, jak o tom nekdo pise, ze duvodem pro Scalu byl "cool faktor" ;D. Ne, vazne, pokud ze Scaly chteli jen zaklady paralelniho pristupu (asi future, iteratee apod.) a dal se neposunuli, tak je celkem pochopitelne, ze s novou Javou neni pro ne duvod zustavat u Scaly. Stejna situace by byla, kdyby si firma vyzkousela C++ a pak se vratila k C, protoze jim plne stacilo a vyvojari stejne v C++ tapali. Neni to chyba jazyka nebo technologie, pokud ji nekdo nasadi spatne.

Nevim, jestli se mam vubec obtezovat s vyvracenim "Swift je 4x rychlejsi nez Java". Mozna, pokud plati podminka "kód se ale nesmí zprasit" a zaroven se investuje nekolikanasobne vice casu do vyvoje (tj. kod se "doprasi" low-level optimalizacemi), pak to asi muze platit, ikdyz stale pochybuji o univerzalnosti tvrzeni. Vyhoda Javy/C# je prave v tom, ze rychle (= levne) dostanete pomerne rychle fungujici reseni, ktere muzete zase levne (ve srovnani s C++) rozsirovat. Z mala zkusenosti*, co mam s C/C++ vs Java/Scala, mi vyslo, ze toto "pomerne rychle fungujici reseni" je ve vetsine pripadu rychlejsi, nez reseni v C++ vyvinute za stejny cas.

*: Muj vzorek je ale maly. Celkem by me zajimalo, jestli existuje nejake srovnani zohlednujici krome vysledneho vykonu take napr. dobu a cenu vyvoje.

P.S. Je to univerzální tvrzení pro generický kód, ono se totiž v těch jazycích ani moc prasit nedá (nepočítám využití ASM apod., to jde všude a benchmark by v tom psal jen debil). Vsadím boty, že kód nevyužívající knihovny (psané pro většinu jazyků zhusta - proč asi - v C nebo přímo ASM), tj. testující jen kvalitu překladače, v Javě rychlejší nebude ani omylem. "Argument" o low-level a delším času na vývoj je ničím nepodložený rádobyargument nemající váhu. V tomto případě je ostatně validním argumentem jen kód.

1248
Vývoj / Re:Vyplatí se učit C++?
« kdy: 30. 12. 2015, 09:28:38 »
https://www.quora.com/Is-LinkedIn-getting-rid-of-Scala

Tak pokud je pravda, jak o tom nekdo pise, ze duvodem pro Scalu byl "cool faktor" ;D. Ne, vazne, pokud ze Scaly chteli jen zaklady paralelniho pristupu (asi future, iteratee apod.) a dal se neposunuli, tak je celkem pochopitelne, ze s novou Javou neni pro ne duvod zustavat u Scaly. Stejna situace by byla, kdyby si firma vyzkousela C++ a pak se vratila k C, protoze jim plne stacilo a vyvojari stejne v C++ tapali. Neni to chyba jazyka nebo technologie, pokud ji nekdo nasadi spatne.

Nevim, jestli se mam vubec obtezovat s vyvracenim "Swift je 4x rychlejsi nez Java". Mozna, pokud plati podminka "kód se ale nesmí zprasit" a zaroven se investuje nekolikanasobne vice casu do vyvoje (tj. kod se "doprasi" low-level optimalizacemi), pak to asi muze platit, ikdyz stale pochybuji o univerzalnosti tvrzeni. Vyhoda Javy/C# je prave v tom, ze rychle (= levne) dostanete pomerne rychle fungujici reseni, ktere muzete zase levne (ve srovnani s C++) rozsirovat. Z mala zkusenosti*, co mam s C/C++ vs Java/Scala, mi vyslo, ze toto "pomerne rychle fungujici reseni" je ve vetsine pripadu rychlejsi, nez reseni v C++ vyvinute za stejny cas.

*: Muj vzorek je ale maly. Celkem by me zajimalo, jestli existuje nejake srovnani zohlednujici krome vysledneho vykonu take napr. dobu a cenu vyvoje.
Netřeba se obtěžovat s psaním příspěvků, mnohem lepší je ověřit si to nad vlastním kódem a ten si pak nejlépe nechat někým zkontrolovat, neb nikdo nemůže vědět vše a celkem základní nedostatek může vést u benchmarku k chybným závěrům.

1249
Vývoj / Re:Vyplatí se učit C++?
« kdy: 29. 12. 2015, 19:13:38 »
Problem tehlech elixiru, haskellu atd. je, ze autor neni beznym programatorem, ktery by dokazal porozumet tomu, co bude idealni pro normalniho programatora, ktery nema IQ 158. Oni mysli jinak, ty jejich jazyky jsou takovy.. proste vyhovuje to jim, jejich mozky v tom dokazou "videt", ale 99% programatoru tohle nezvladne a vsechno jim bude trvat tisic let. Proto se to nikdy poradne nerozsiri a bude to pouzivat jen uzka skupina programatoru. Svetu bude porad vladnout C++, Java, C# a ted mozna i Swift. Swift je presne prikladem jazyka, ktery by masa mohla prijmout, protoze nevymysli zadne nesmyslne syntaxe a celkove nepusobi takovym akadamickym dojmem. S chuti bych se do neho ponoril, kdybych jen nemel pochybnosti okolo ARC (https://swiftopinions.wordpress.com/2014/09/29/to-swift-and-back-again/) a hlavne kdyby byl port pro nejaky poradny framework ala Qt.
Ten odkazovaný článek je rok a půl starý. ARC ve Swiftu je determinističtější než v ObjC, neb nemá autorelease pool (viz kód verze pro Linux). Jinak co do rychlosti typicky vychází (as of Dec 2015) nejrychlejší C++, pak Swift, pak Go a nakonec Java), kód se ale nesmí zprasit. Swiftu bych se nebál, třeba na ARM je cca. 4x rychlejší než Java (testováno na RPi).

1250
Vývoj / Re:Vyplatí se učit C++?
« kdy: 29. 12. 2015, 19:00:04 »
Problem tehlech elixiru, haskellu atd. je, ze autor neni beznym programatorem, ktery by dokazal porozumet tomu, co bude idealni pro normalniho programatora, ktery nema IQ 158. Oni mysli jinak, ty jejich jazyky jsou takovy.. proste vyhovuje to jim, jejich mozky v tom dokazou "videt", ale 99% programatoru tohle nezvladne a vsechno jim bude trvat tisic let. Proto se to nikdy poradne nerozsiri a bude to pouzivat jen uzka skupina programatoru. Svetu bude porad vladnout C++, Java, C# a ted mozna i Swift. Swift je presne prikladem jazyka, ktery by masa mohla prijmout, protoze nevymysli zadne nesmyslne syntaxe a celkove nepusobi takovym akadamickym dojmem. S chuti bych se do neho ponoril, kdybych jen nemel pochybnosti okolo ARC (https://swiftopinions.wordpress.com/2014/09/29/to-swift-and-back-again/) a hlavne kdyby byl port pro nejaky poradny framework ala Qt.
V principu ano, ale i Swift má jisté konstrukce, které "normální programátor" (přinejmenším zde na fóru) nechápe. Jinak co za problém má ARC?

P.S. Port nějakého frameworku časem bude, je to na komunitě.

1251
Vývoj / Re:Vyplatí se učit C++?
« kdy: 29. 12. 2015, 14:27:13 »
pani, co bolo hlavnou myslienkou mojej otazky? casto sa tu debaty zvrhnu inym smerom. ach
rozdíl mezi C# a C++ není zas tak velký

Mezi Porsche a kombajnem taky není velký rozdíl, má to motor a čtyři kola...

1252
Vývoj / Re:Vyplatí se učit C++?
« kdy: 29. 12. 2015, 14:25:14 »
Psal jsem v kontextu Javy. Tracing GC jinak samozřejmě své nevýhody má, je ale třeba hodnotit každou implementaci zvlášť. Například v Androidu je úplně debilní, kdežto v Go (od verze 1.5) hodně kvalitní a bez problémů použitelná i pro velké aplikace. Obecně je nejlepší správa paměti na zásobníku (jako v C++/Go/Swift) a když už musí být objekt alokován na haldě, tak nějaká forma sledování referencí (k tomu existuje množství benchmarků a akademických článků). To ale není téma pro patlaly :)

Ted nevim, jestli jsem vztahovacnej, nebo z textu citim implicitni zarazeni me osoby do mnoziny patlalu :-) S tebou uvedenym souhlasim, a ackoliv to nemam podlozeno benchmarky a clanky, z intuitivniho hlediska mi prijde GC jako kanon na vrabce. Takova dalsi vrtstva izolace mezi vyvojarem a hw uz imho presahuje mezni uzitek z abstraktniho pristupu k programovani, protoze umoznuje se nestarat o jiz prilis podstatnou soucast programu - pamet.

Tak GC je jeden ze zpusobu jak resit spravu pameti umoznujici memory safety coz je pro me docela uzitecna vlastnost. Osobne zastavam nazor ze nejlepsi je pamet nealokovat :D a pracovat na zasobniku a v registrech. Ale pokud uz potrebuji pracovat s pameti na halde tak preferuji GC (zejmena kvuli vykonu a bezpecnosti). Samozrejme je dobre pokud mi pouziti GC jazyk nevnucuje a mam moznost pouzivat to co se zrovna pro me potreby nejlepe hodi. Jinak GC je fajn prave proto ze umoznuje se nestarat o tak zanedbatelnou soucast programu jako je pamet :D.
Právě ten výkon bývá problém.

No tak GC vetsinou nema problem s vykonem (samozrejme zalezi na typu GC a jeho implementaci). Casto aplikace s GC bezi celkove rychleji nez napriklad za pouziti RC(neustale inkrementovani a dekrementovani dokaze taky svoje). GC ma problem zejmena u RT aplikaci, kde je zadouci aby dana cinnost probehla v urcitem maximalnim case.
Existuji i tracing GC pro RT (BTW RC je také GC). Nicméně podle benchmarků je tracing GC typicky pomalejší než RC z důvodů, jež zde v různých diskuzích už opakovaně zazněly (ne že bych čtenářům rootu nějak zvlášť věřil, ale vědecké články od zaměstnanců Googlu už nějakou váhu mají). V podstatě jde o to, že překladač agresivně RC optimalizuje (cokoliv, co je v rámci scope "po stacku dolů" RC nijak nezatěžuje). O vše se stará statická analýza (tak ostatně vzniklo ARC). Je třeba ovšem přiznat, že konzervativní tracing GC v některých případech nezaostává příliš. A jak už tu zaznělo, maximum paměti by stejně mělo být na zásobníku, je-li to jen trochu možné, čímž se diskuze o správě paměti na haldě stává bezpředmětnou. (Pro ostatní čtenáře: Kdo ještě nepochopil, jak funguje optimalizace RC v době kompilace, nechť si přečte příslušné články od Googlu, protože já to tu potisící  vysvětlovat nebudu.)

1253
Vývoj / Re:Vyplatí se učit C++?
« kdy: 29. 12. 2015, 14:07:22 »
Psal jsem v kontextu Javy. Tracing GC jinak samozřejmě své nevýhody má, je ale třeba hodnotit každou implementaci zvlášť. Například v Androidu je úplně debilní, kdežto v Go (od verze 1.5) hodně kvalitní a bez problémů použitelná i pro velké aplikace. Obecně je nejlepší správa paměti na zásobníku (jako v C++/Go/Swift) a když už musí být objekt alokován na haldě, tak nějaká forma sledování referencí (k tomu existuje množství benchmarků a akademických článků). To ale není téma pro patlaly :)

Ted nevim, jestli jsem vztahovacnej, nebo z textu citim implicitni zarazeni me osoby do mnoziny patlalu :-) S tebou uvedenym souhlasim, a ackoliv to nemam podlozeno benchmarky a clanky, z intuitivniho hlediska mi prijde GC jako kanon na vrabce. Takova dalsi vrtstva izolace mezi vyvojarem a hw uz imho presahuje mezni uzitek z abstraktniho pristupu k programovani, protoze umoznuje se nestarat o jiz prilis podstatnou soucast programu - pamet.

Tak GC je jeden ze zpusobu jak resit spravu pameti umoznujici memory safety coz je pro me docela uzitecna vlastnost. Osobne zastavam nazor ze nejlepsi je pamet nealokovat :D a pracovat na zasobniku a v registrech. Ale pokud uz potrebuji pracovat s pameti na halde tak preferuji GC (zejmena kvuli vykonu a bezpecnosti). Samozrejme je dobre pokud mi pouziti GC jazyk nevnucuje a mam moznost pouzivat to co se zrovna pro me potreby nejlepe hodi. Jinak GC je fajn prave proto ze umoznuje se nestarat o tak zanedbatelnou soucast programu jako je pamet :D.
Právě ten výkon bývá problém.

1254
Vývoj / Re:Vyplatí se učit C++?
« kdy: 29. 12. 2015, 13:49:32 »
Psal jsem v kontextu Javy. Tracing GC jinak samozřejmě své nevýhody má, je ale třeba hodnotit každou implementaci zvlášť. Například v Androidu je úplně debilní, kdežto v Go (od verze 1.5) hodně kvalitní a bez problémů použitelná i pro velké aplikace. Obecně je nejlepší správa paměti na zásobníku (jako v C++/Go/Swift) a když už musí být objekt alokován na haldě, tak nějaká forma sledování referencí (k tomu existuje množství benchmarků a akademických článků). To ale není téma pro patlaly :)

Ted nevim, jestli jsem vztahovacnej, nebo z textu citim implicitni zarazeni me osoby do mnoziny patlalu :-) S tebou uvedenym souhlasim, a ackoliv to nemam podlozeno benchmarky a clanky, z intuitivniho hlediska mi prijde GC jako kanon na vrabce. Takova dalsi vrtstva izolace mezi vyvojarem a hw uz imho presahuje mezni uzitek z abstraktniho pristupu k programovani, protoze umoznuje se nestarat o jiz prilis podstatnou soucast programu - pamet.
V podstatě souhlasím, ale zopakuji, že záleží na implementaci. V Go je GC hodně kvalitní, tam bych se nebál přehnané náročnosti na paměť, a v ObjC byl kdysi dávno pekelně kvalitní tracing GC, byl konzervativní a hodně agresivní (kdysi jsem se v tom hrabal ještě na PPC). Apple ale do iOS tracing GC nedal (první iPhone měl jen 128MB, takže by to byla blbost). Teď už by v iOS asi ten jejich původní GC šlapal dobře, ale kód už zahodili (obrazně řečeno) a Swift beztak funguje lépe s tím, co má.

1255
Vývoj / Re:Vyplatí se učit C++?
« kdy: 29. 12. 2015, 13:42:36 »
Psal jsem v kontextu Javy. Tracing GC jinak samozřejmě své nevýhody má, je ale třeba hodnotit každou implementaci zvlášť. Například v Androidu je úplně debilní, kdežto v Go (od verze 1.5) hodně kvalitní a bez problémů použitelná i pro velké aplikace. Obecně je nejlepší správa paměti na zásobníku (jako v C++/Go/Swift) a když už musí být objekt alokován na haldě, tak nějaká forma sledování referencí (k tomu existuje množství benchmarků a akademických článků). To ale není téma pro patlaly :)

Ted nevim, jestli jsem vztahovacnej, nebo z textu citim implicitni zarazeni me osoby do mnoziny patlalu :-) S tebou uvedenym souhlasim, a ackoliv to nemam podlozeno benchmarky a clanky, z intuitivniho hlediska mi prijde GC jako kanon na vrabce. Takova dalsi vrtstva izolace mezi vyvojarem a hw uz imho presahuje mezni uzitek z abstraktniho pristupu k programovani, protoze umoznuje se nestarat o jiz prilis podstatnou soucast programu - pamet.
Naopak, byli myšlení patlalové z citovaného příspěvku.

1256
Vývoj / Re:Vyplatí se učit C++?
« kdy: 29. 12. 2015, 13:37:52 »
Protože paměť používáš (vytváříš nové objekty) typicky řádově častěji, než otevíráš/zavíráš jakékoli jiné prostředky. A také je mnohem častěji předáváš mezi scope.

Já se tedy mnohem raději věnuji podstatě problému, než řeším technikálie okolo prostředků, které si počítač (VM) může dostatečně dobře ošetřit i sám.

Jo, od toho jsou v C++ genericky RAII wrappery jako shared_ptr. Nema cenu se tady nejak extra dohadovat, ja proste nemam Javu rad, a to neni nic moc racionalniho :-) (i kdyz par relevantnich argumentu bych asi z klobouku vytahl).
Tak RAII je asi nejlepší způsob správy zdrojů (případně defer, což je to samé v bledě modrém třeba v Go). Navíc plně transparentní. Na druhou stranu chápu lopaty zastávající se GC. Jedem das Seine :)

1257
Vývoj / Re:Vyplatí se učit C++?
« kdy: 29. 12. 2015, 13:26:53 »
Otazka je, proc rozlisovat mezi spravou pameti a libovolneho jineho prostredku. Podle me GC akorat u patlalu vytvari dojem, ze se o spravu zdroju neni treba starat.

Protože paměť používáš (vytváříš nové objekty) typicky řádově častěji, než otevíráš/zavíráš jakékoli jiné prostředky. A také je mnohem častěji předáváš mezi scope.

Já se tedy mnohem raději věnuji podstatě problému, než řeším technikálie okolo prostředků, které si počítač (VM) může dostatečně dobře ošetřit i sám.
Otázka je, co znamená "dostatečně dobře". Pro každou konkrétní aplikaci asi něco trochu jiného.

1258
Vývoj / Re:Vyplatí se učit C++?
« kdy: 29. 12. 2015, 13:24:29 »
Tak ono to je něco jako using v C#. Na správu všeho kromě paměti by to mělo být povinné (v code guidelines).

Otazka je, proc rozlisovat mezi spravou pameti a libovolneho jineho prostredku. Podle me GC akorat u patlalu vytvari dojem, ze se o spravu zdroju neni treba starat.
Psal jsem v kontextu Javy. Tracing GC jinak samozřejmě své nevýhody má, je ale třeba hodnotit každou implementaci zvlášť. Například v Androidu je úplně debilní, kdežto v Go (od verze 1.5) hodně kvalitní a bez problémů použitelná i pro velké aplikace. Obecně je nejlepší správa paměti na zásobníku (jako v C++/Go/Swift) a když už musí být objekt alokován na haldě, tak nějaká forma sledování referencí (k tomu existuje množství benchmarků a akademických článků). To ale není téma pro patlaly :)

1259
Vývoj / Re:Vyplatí se učit C++?
« kdy: 29. 12. 2015, 12:48:31 »
Sice to není úplné RAII, ale při použití rozhraní Autocloseable v Javě zrovna u toho SQL dosáhneš podobného výsledku.
Přiznám se, že o tomto jsem nevěděl. Většina projektů v naší firmě zamrzla na JDK 1.6. Taky je dobrý switch se stringy.

To je škoda, protože Java se docela vyvíjí (i když já osobně za nejlepší na Javě považuju JVM, ne ten jazyk :-). Na druhou stranu znám projekty, které z různých důvodů používají pořád 1.4.2 (a pořád se na nich něco upravuje).
Tak ono to je něco jako using v C#. Na správu všeho kromě paměti by to mělo být povinné (v code guidelines).

1260
Vývoj / Re:Vyplatí se učit C++?
« kdy: 29. 12. 2015, 01:17:04 »
Stručně můj názor:
Ten, kdo neumí C++, je jen programátor, zatímco ten, kdo C++ umí, je pan Programátor.
A je jedno, v čem programuje!
Nepravda. C++ je složité, ale není to jediné kritérium odlišující lopatu od profíka.

Stran: 1 ... 82 83 [84] 85 86 ... 101