Fórum Root.cz
Práce => Studium a uplatnění => Téma založeno: jozzef 14. 02. 2023, 06:33:45
-
Ještě jsem tu na toto téma nenarazil, tak ho s dovolením zkusím otevřít. Předpokládám, že téměř každý si za poslední rok vyzkoušel ChatGPT nebo třeba Github Copilot. Obojí ve mně poprvé vyvolalo úžas, jak je to dobré. Po pár použitích člověk zjistí, že to má ještě spoustu much, ale pořád je to použitelné. Například, jsem dělal se source generátory v .NETu, o kterých toho zas až tolik na internetu psáno nebylo a ChatGPT mi sice vygeneroval nezkompilovatelný kód, ale rozhodně navedl správným směrem.
Co vidíte ve své křišťálové kouli Vy? Začne poptávka po programátorech klesat? Nebo začneme psát daleko méně kódu a přesuneme se do nějakých AI-powered low code řešení?
-
Za sebe zastávám názor, že než že by nás AI připravila o práci, tak nám pomůže být více efektivní. Ač je AI na vysoké úrovni, řekl bych, že pořád bude třeba v práci takový ten lidský faktor, přístup, myšlení.
Pamatuju si ještě programování na střední, myslím si že to bylo C# a spolužák učitelovi řekl: Když to Visual Code Studio vidí že mi někde chybí ; proč ho tam nedoplní ? Všichni jsme zůstali zamyšlený :D
-
Ja sa na to pozeram pozitivne. Je to jazykovy model a uz nieaky ten piatok kodujem s Copilotom a je to nebe a dudy. Nedokaze to sice uplne nahradit cloveka v style ze vegeneruje program ale pomaha ako pan hlavne ak dopisujes do programu funkcionalitu automaticky sa snazi porozumiet kontextu kodu a tipovat co potrebujes.
Takze ak mas v dakej funkcii x,y,z,a a zapisujes do DB len x,y,z s tym ze z je a*2 a pridas nieco dalsie snazi sa to automaticky vsugerovat ako to ma byt pouzite ale napriklad ten insert nemodifikuje tupo v style a teraz vloz vsetko ale len to so si mysli s toho kodu co uz existuje ze by si to chcel. Za mna pomoc ako oci.
-
Ještě jsem tu na toto téma nenarazil, tak ho s dovolením zkusím otevřít. Předpokládám, že téměř každý si za poslední rok vyzkoušel ChatGPT nebo třeba Github Copilot. Obojí ve mně poprvé vyvolalo úžas, jak je to dobré. Po pár použitích člověk zjistí, že to má ještě spoustu much, ale pořád je to použitelné. Například, jsem dělal se source generátory v .NETu, o kterých toho zas až tolik na internetu psáno nebylo a ChatGPT mi sice vygeneroval nezkompilovatelný kód, ale rozhodně navedl správným směrem.
Co vidíte ve své křišťálové kouli Vy? Začne poptávka po programátorech klesat? Nebo začneme psát daleko méně kódu a přesuneme se do nějakých AI-powered low code řešení?
Tipoval bych, že to bude mít podobný efekt jako stack-overflow. Dalším lidem to umožní napsat nějaký kód s minimem znalostí. Následně ten kód musí někdo verifikovat, a při větším průseru opravit nebo přepsat, což už musí udělat někdo "postižený" znalostmi. Rozhodně je to nástroj, který zpřístupní programování dalším lidem. Na druhou stranu to není posun k snížení komplexity (je to jen sofistikovanější verze vyhledávače), takže výsledkem bude víc kódu horší kvality, což znamená víc práce pro údržbu. Možná se sníží cena za vývoj, ale zvýší se cena za údržbu.
Pokud začne klesat poptávka po programátorech, tak bych za tím neviděl UI, ale přirozený tlak na konsolidaci IT a saturaci trhu.
-
takže výsledkem bude víc kódu horší kvality, což znamená víc práce pro údržbu. Možná se sníží cena za vývoj, ale zvýší se cena za údržbu.
To zni strasidelne.
Nicmene proc bych platil za udrzbu kdyz je greenfield vyvoj levnej? Uz dneska chce malokdo udrzbu vubec delat a platit.
-
takže výsledkem bude víc kódu horší kvality, což znamená víc práce pro údržbu. Možná se sníží cena za vývoj, ale zvýší se cena za údržbu.
To zni strasidelne.
Nicmene proc bych platil za udrzbu kdyz je greenfield vyvoj levnej? Uz dneska chce malokdo udrzbu vubec delat a platit.
Jsou různě důležité provozy, a různé aplikace. U těch kritických se také nikomu nechce platit za údržbu, ale platí se, a to i dost velké částky. A je velký rozdíl jestli jenom platíte - a jinak o tom software neslyšíte, nebo platíte a ještě máte každý měsíc nějaký provozní problém, který vyžaduje servisní zásah. Ono se to projeví na nákladech nebo i ochotě zaměstnanců neměnit práci, jestli pohotovost znamená, že jsem na telefonu a nesmím chlastat ale více méně téměř nikdy k servisnímu zásahu nedojde, nebo jestli k servisním zásahům dochází téměř každou noc.
Vývoj na zelené louce znamená nové proškolení zaměstnanců, nové chyby, další náklady s nasazením, úpravami, neznámé neočekávané náklady a více práce, atd atd. Snadno vyměníte blogovací platformu. Relativně snadno vyměníte platformu pro eshop. Výměna interních velkých systémů - co tak slýchávám po korporátech, tak mám pocit, že téměř nejde, a může to být několik let trvající nákladný proces s nejistým výsledkem.
-
Aktuálně to nevypadá, že by programátorů byl dostatek. Naopak, tím, že je napsaného a dostupného čím dál víc kódu, je čím dál víc možností, co se s jeho pomocí dá docela snadno vyřešit. Akorát je potřeba lidí, kteří z těch kostiček ty další a další věci postaví. Myslím, že AI způsobí, že programátoři budou podstatně efektivnější, ale nezpůsobí to, že by přišli o práci. A pořád budou potřeba ti, kteří vymyslí architekturu nebo nějakouo novou optimalizaci nebo nový algoritmus. Ale většině práce už dávno je jenom skládání různých kostiček dohromady, kde se převážně píše stále dokola podobný kód. Který zvládne AI napsat mnohem rychleji. Jako když dnes máte šablony či makra na napsání kostry cyklu nebo getterů a setterů, akorát AI dokáže napsat větší části kódu a lépe je zasadí do kontextu.
-
Vývoj na zelené louce znamená nové proškolení zaměstnanců, nové chyby, další náklady s nasazením, úpravami, neznámé neočekávané náklady a více práce, atd atd. Snadno vyměníte blogovací platformu. Relativně snadno vyměníte platformu pro eshop. Výměna interních velkých systémů - co tak slýchávám po korporátech, tak mám pocit, že téměř nejde, a může to být několik let trvající nákladný proces s nejistým výsledkem.
Přidám zkušenost ze svého okolí. Nejmenovaná zdravotní pojišťovna přešla loni na nový systém. Souhrou blbých okolností nebyli schopni přes 4 měsíce proplatit výkony praktickému lékaři... Prostě kombinací více věcí to ten nový systém dostalo do stavu, kdy takhle dlouho nešlo nic dělat.
-
Vývoj na zelené louce znamená nové proškolení zaměstnanců, nové chyby, další náklady s nasazením, úpravami, neznámé neočekávané náklady a více práce, atd atd. Snadno vyměníte blogovací platformu. Relativně snadno vyměníte platformu pro eshop. Výměna interních velkých systémů - co tak slýchávám po korporátech, tak mám pocit, že téměř nejde, a může to být několik let trvající nákladný proces s nejistým výsledkem.
Přidám zkušenost ze svého okolí. Nejmenovaná zdravotní pojišťovna přešla loni na nový systém. Souhrou blbých okolností nebyli schopni přes 4 měsíce proplatit výkony praktickému lékaři... Prostě kombinací více věcí to ten nový systém dostalo do stavu, kdy takhle dlouho nešlo nic dělat.
Vůbec mne to nepřekvapuje. Čekám to horší a horší.
-
Aktuálně to nevypadá, že by programátorů byl dostatek. Naopak, tím, že je napsaného a dostupného čím dál víc kódu, je čím dál víc možností, co se s jeho pomocí dá docela snadno vyřešit. Akorát je potřeba lidí, kteří z těch kostiček ty další a další věci postaví. Myslím, že AI způsobí, že programátoři budou podstatně efektivnější, ale nezpůsobí to, že by přišli o práci. A pořád budou potřeba ti, kteří vymyslí architekturu nebo nějakouo novou optimalizaci nebo nový algoritmus. Ale většině práce už dávno je jenom skládání různých kostiček dohromady, kde se převážně píše stále dokola podobný kód. Který zvládne AI napsat mnohem rychleji. Jako když dnes máte šablony či makra na napsání kostry cyklu nebo getterů a setterů, akorát AI dokáže napsat větší části kódu a lépe je zasadí do kontextu.
To je právě projev krize IT. Místo nástrojů, které by programátorům umožňovaly psát optimální kód, tak tu máme nástroje, které umožňují psát programátorům kód efektivně. Místo toho, aby se řešila komplexita kódu, konzistence API, tak máme nástroje, které umožní produkovat kód v prostředí s nekonzistentním, duplicitním API, nejasnými závislostmi. Za komplexitu se ale vždy platí, vyšší křehkostí (opak robustnosti), vyššími náklady, větší specializací, menší obecností.
-
To zni strasidelne.
Nicmene proc bych platil za udrzbu kdyz je greenfield vyvoj levnej? Uz dneska chce malokdo udrzbu vubec delat a platit.
Řeknu to tak, měl jsem staré auto, nechtěl jsem se ho zbavit, mělo mnoho problémů, ale já na něj byl zvyklý, sice tam bylo milion drobnůstek, ale já už je znal, navíc jsem tam měl svoje vychytávky.
Když jsem šel do nového auta, vše sice bylo lepší, ale musel jsem si přečíst příručku, zjistit jak vše funguje, naučit se s tím - do teď mi dělají nějaké věci problémy, zvyknout si, a nějaké věci jsou lepší (Android Auto), ale nějaké věci jsou zase horší a nedomyšlené (Waze v Android auto neumí sdílet cestu).
Když člověk obmění systém, musí přenést veškeré data, byznys logiku, zaučit lidi, a to není zadarmo, navíc nějaké věci budou lepší, ale nějaké věci a drobnosti přestanou fungovat, stejně jako u toho nového auta, a bude to proces bolesti a přerodu, a za nějakou chvíli i ten nový systém začne zastarávat.
V IT je nejhorší to, že ve chvíli, kdy se podaří přejít na nový systém, vše vyladit, lidi zaučit, a vše šlapá jak švýcarské hodinky, tak v tu dobu je systém už zastaralý. A jako dostat nový systém do stavu totální vyladěnosti není rozhodně levná záležitost.
Třeba Moneta mi přešla na nový systém bankovnictví, jenomže v něm už nemá notifikace na email, nebo nevím jak je nastavit. Nový systém to neřeší, a byl to zrovna ten detail, proč jsem si je jako banku vybral. A to jsou ty detaily, kterých je milion, a když se definuje nový systém, tak si každý myslí, že je to jen o zaobleném tlačítku na převod z účtu s animací lízajícího se kocoura, a pak kouká, když to uživatel nechápe, protože tam měl nějakou funkcionalitu, která nikomu při přerodu systému nepřišla podstatná.
-
takže výsledkem bude víc kódu horší kvality, což znamená víc práce pro údržbu. Možná se sníží cena za vývoj, ale zvýší se cena za údržbu.
To zni strasidelne.
Nicmene proc bych platil za udrzbu kdyz je greenfield vyvoj levnej? Uz dneska chce malokdo udrzbu vubec delat a platit.
Jsou různě důležité provozy, a různé aplikace. U těch kritických se také nikomu nechce platit za údržbu, ale platí se, a to i dost velké částky. A je velký rozdíl jestli jenom platíte - a jinak o tom software neslyšíte, nebo platíte a ještě máte každý měsíc nějaký provozní problém, který vyžaduje servisní zásah. Ono se to projeví na nákladech nebo i ochotě zaměstnanců neměnit práci, jestli pohotovost znamená, že jsem na telefonu a nesmím chlastat ale více méně téměř nikdy k servisnímu zásahu nedojde, nebo jestli k servisním zásahům dochází téměř každou noc.
Vývoj na zelené louce znamená nové proškolení zaměstnanců, nové chyby, další náklady s nasazením, úpravami, neznámé neočekávané náklady a více práce, atd atd. Snadno vyměníte blogovací platformu. Relativně snadno vyměníte platformu pro eshop. Výměna interních velkých systémů - co tak slýchávám po korporátech, tak mám pocit, že téměř nejde, a může to být několik let trvající nákladný proces s nejistým výsledkem.
Vyborne, takze v kontextu tech velkych systemu nam to snizi naklady na neco co vlastne nechceme delat a zvysi naklady na to co musime delat.
Tak jen doufejme, ze buzzword driven development stale zije a naskocime na tu vlnu co nejrychleji i v tech korporacich kvuli nejakemu manazerskemu FOMO komplexu.
-
Co vidíte ve své křišťálové kouli Vy? Začne poptávka po programátorech klesat?
Podle mě se jedná o další zefektivnění práce (neříkám že to nutně je zefektivnění - viz další příspěvky stěžující si na údržbu kódu - ale mohlo by být) - ale takových už byla hromada: s dnešním IDE, debugery atd. jsou programátoři o několik řádů efektivnější než když před 50 lety děrovali štítky a pak čekali celý den, až štítky projedou počítačem a dostanou výsledek. Asi existuje nějaká hranice efektivity, od které bude programátorů přebytek, ale imho tam ještě nejsme.
-
Já bych bral i tak, že čím víc pofiredního kódu na githubu bude, tím víc pofiderního kódu to AI bude doplňovat. A čím víc pofiderního kódu to AI bude doplňovat, tím víc pofiderního kódu na githubu bude, pokud budou lidi používat tento nástroj.
Navíc vidím pořád problém s licencí doplněného kódu - to AI nic nevymyslelo, jen doplnilo existující kód bez licence.
-
To je právě projev krize IT. Místo nástrojů, které by programátorům umožňovaly psát optimální kód, tak tu máme nástroje, které umožňují psát programátorům kód efektivně. Místo toho, aby se řešila komplexita kódu, konzistence API, tak máme nástroje, které umožní produkovat kód v prostředí s nekonzistentním, duplicitním API, nejasnými závislostmi. Za komplexitu se ale vždy platí, vyšší křehkostí (opak robustnosti), vyššími náklady, větší specializací, menší obecností.
Není to projev krize IT, je to naopak ukázka toho, proč IT změnilo svět.
Ve 20. století jsme dělali čím dál komplexnější projekty, kdy se vytvořil celkový plán a ten se pak rozpadl až do posledního šroubečku. Vrcholem takového přístupu jsou podle mne třeba jaderné elektrárny. Jenže tím jsme prakticky narazili na naše limity, ještě komplexnější systémy už nedokážeme uřídit.
Pak ale přišel internet (a po něm mimo jiné cloudy), který ukázal, že jde vytvořit ještě složitější systémy, u kterých je ale komplexita výrazně nižší – za cenu toho, že už tomu systému jako celku nerozumíme, nedokážeme předvídat jeho chování. Oproti předchozím komplexním systémům je rozdíl ten, že systém vybudujeme ze spousty jednoduchých prvků, u kterých nevadí selhání některých z nich. A celé to propojíme do sítě, která se řídí jednoduchými pravidly.
Velmi podobné principy platí třeba pro agilní vývoj. Ano, znamená to, že se tolik neřeší optimální kód, daleko důležitější je efektivita psaní kódu. Komplexita kódu se neřeší v tom smyslu, že by se řešilo, jak zacházet s komplexním kódem. Místo toho se řeší, jak komplexitu zmenšit tím, že se systém rozdělí na menší jednoduché části, propojí se do sítě a začnou pracovat v režimu, že jakákoli jednotka může selhat.
Což neznamená, že bychom vůbec nepotřebovali vysoce optimalizované jednotky kódu. Pořád někde v útrobách těch systémů jsou, ale jsou hezky zapouzdřené, aby jejich komplexita nepřerůstala ven.
Za mne je skvělé, že k takovému posunu došlo. Je to posun od inteligentního návrhu k evoluci a já věřím tomu, že evoluce dokáže víc.
-
Jirsák +1.
Já bych to popsal tak, že většinové IT pomalu opouští rigidní matematické procesy, ve kterých se zrodilo, a přesouvá se do měkčích procesů známých třeba z biologie. Místo zdola nahoru se jde shora dolů. Je to lepší, nebo horší? Asi záleží případ od případu, ale určitě to dovoluje mít složitější celky, které z povahy věci prostě musí být tolerantní k částečnému selhání něčeho uvnitř.
-
Jirsák +1.
Já bych to popsal tak, že většinové IT pomalu opouští rigidní matematické procesy, ve kterých se zrodilo, a přesouvá se do měkčích procesů známých třeba z biologie. Místo zdola nahoru se jde shora dolů. Je to lepší, nebo horší? Asi záleží případ od případu, ale určitě to dovoluje mít složitější celky, které z povahy věci prostě musí být tolerantní k částečnému selhání něčeho uvnitř.
Tenhle přístup mne, co by inženýra dost děsí. Trochu mi to zavání rezignací. Nevíme jestli je to evoluce nebo rakovina. Prostě to neumíme nadesignovat, uřídit, tak to necháme jak se to vyvrbí. Evoluce funguje, ale v řádech miliónů let se spoustou slepých uliček a masových vymírání. Jsem stavební inženýr, trochu něco tuším o strojařině, a tam jen idea systémů, které nejsou 100% deterministické je nepřijatelná fantasmagorie.
Jsem 100% pro fault tolerant systémy, nicméně ty systémy stále musí být deterministické. Jinak se inženýrská práce mění v alchymii.
-
Jirsák +1.
Já bych to popsal tak, že většinové IT pomalu opouští rigidní matematické procesy, ve kterých se zrodilo, a přesouvá se do měkčích procesů známých třeba z biologie. Místo zdola nahoru se jde shora dolů. Je to lepší, nebo horší? Asi záleží případ od případu, ale určitě to dovoluje mít složitější celky, které z povahy věci prostě musí být tolerantní k částečnému selhání něčeho uvnitř.
Tenhle přístup mne, co by inženýra dost děsí. Trochu mi to zavání rezignací. Nevíme jestli je to evoluce nebo rakovina. Prostě to neumíme nadesignovat, uřídit, tak to necháme jak se to vyvrbí. Evoluce funguje, ale v řádech miliónů let se spoustou slepých uliček a masových vymírání. Jsem stavební inženýr, trochu něco tuším o strojařině, a tam jen idea systémů, které nejsou 100% deterministické je nepřijatelná fantasmagorie.
Jsem 100% pro fault tolerant systémy, nicméně ty systémy stále musí být deterministické. Jinak se inženýrská práce mění v alchymii.
Je to šílené, dystopické a zbytečné. V době, kdy existují čím dál kvalitnější programovací jazyky a nástroje, lze efektivně psát kvalitní, spolehlivé a rychlé programy a neexistuje výmluva.
ChatGPT lže a je horší než Stack Overflow, protože nemá viditelnou korekci. Člověka, který programuje s podobnými pomůckami, aniž by v rozumné míře věděl, co a proč kopíruje, bych okamžitě vyhodil.
-
ChatGPT lže a je horší než Stack Overflow
100% souhlas.
-
ChatGPT lže a je horší než Stack Overflow
v obou pripadech musite rozumet kodu, ktery kopirujete. Na nektere veci je ChatGPT lepsi nez SO.
ChatGPT funguje podobne jako Github copilot.
-
Pamatuju si ještě programování na střední, myslím si že to bylo C# a spolužák učitelovi řekl: Když to Visual Code Studio vidí že mi někde chybí ; proč ho tam nedoplní ? Všichni jsme zůstali zamyšlený :D
Tohle umelo Smalltalk IDE (VisualWorks) v roce 1996. Jednoduche syntakticke chyby, oprava preklepu v nazvu promenne. Na 1 klik opravilo a pokracovalo v prekladu/behu.
-
Tenhle přístup mne, co by inženýra dost děsí. Trochu mi to zavání rezignací. Nevíme jestli je to evoluce nebo rakovina. Prostě to neumíme nadesignovat, uřídit, tak to necháme jak se to vyvrbí. Evoluce funguje, ale v řádech miliónů let se spoustou slepých uliček a masových vymírání. Jsem stavební inženýr, trochu něco tuším o strojařině, a tam jen idea systémů, které nejsou 100% deterministické je nepřijatelná fantasmagorie.
Já to nepovažuju za rezignaci. Narazili jsme na limity, tak jsme vymysleli, jak to hacknout a limity obejít. Jako když jsme zjistili, že lepší dalekohled v optickém spektru už na Zemi nepostavíme, protože nám brání zkreslení atmosférou, tak jsme to hackli a vystřelili jsme dalekohled do vesmíru, mimo atmosféru.
Záleží na tom, co považujete za deterministické chování. Jestli požadujete to, že jste schopen dopředu přesně říci, jak se to bude chovat – nebo jestli vám stačí, že se to chová podle přesně daných pravidel, i když nedokážete domyslet, jak přesně se to v které situaci bude chovat.
Jsem 100% pro fault tolerant systémy, nicméně ty systémy stále musí být deterministické. Jinak se inženýrská práce mění v alchymii.
Ne v alchymii, ale v poctivé řemeslo. A poctivé řemeslo je super věc.
Já chápu, co se vám na tom nelíbí. Ale považuju věci jako internet nebo cloudy za skvělou věc. Myslím si, že to, jak se nám podařilo vyřešit problém komplexity, je něco úžasného a ještě nedoceněného – že to v budoucnosti bude vnímané minimálně stejně významně, jako vynález parního stroje. I parní stroj je možné brát jako rezignaci – rezignaci na to, že vše zvládneme vlastní silou, nebo alespoň biologickou silou. Akorát tentokrát nejde o fyzickou sílu, ale o sílu myšlenkovou.
A v žádném případě to neznamená, že by ta poctivá inženýrská práce nebyla potřeba. Pořád jsou v základech pečlivě navržené procesory, linuxové jádro, databázová jádra, u kterých pořád platí, že je teoreticky v lidských silách pro jakýkoli vstup určit, „co to udělá“. Na druhou stranu, přiznejme si, že i to je často jen teorie a ve složitých případech to reálně nikdo nedělá, že by promýšlel, co přesně se stane, když použije takovou kombinaci modulů či pluginů a nastane tento chybový stav, co přesně se pak bude dít. Ale připouštím, že je to stále teoreticky možné a pokud se z nějakého důvodu vyplatí nějaký takový případ zkoumat, může se do toho někdo ponořit a dny nebo týdny to zkoumat.
-
Na nektere veci je ChatGPT lepsi nez SO.
Třeba ve vymýšlení si knihoven a funkcí, které neexistují :-)
ChatGPT funguje podobne jako Github copilot.
Jestli se nemýlím, Copilot je postavený na předchozí generaci téhož modelu, jako ChatGPT, a je speciálně trénovaný na kód.
-
Já mám pocit, že se tenhle stochaisticný přístup k návrhům začne brzy dostávat/asi už dostává i do HW.
Když dáte marketingu vybrat zda chce, aby procesor spočítal se 100% jistotou že 1+1=2 za 10 ms nebo do s 99,99999% pravděpodobností odhadl za 1 ms, co si asi vybere? 10x rychlejší procesor. ;D
I kvantové počítače jdou tímhle směrem.
-
Já mám pocit, že se tenhle stochaisticný přístup k návrhům začne brzy dostávat/asi už dostává i do HW.
Když dáte marketingu vybrat zda chce, aby procesor spočítal se 100% jistotou že 1+1=2 za 10 ms nebo do s 99,99999% pravděpodobností odhadl za 1 ms, co si asi vybere? 10x rychlejší procesor. ;D
I kvantové počítače jdou tímhle směrem.
Jestli správně počítám, tak ta chyba se s pravděpodobností 100% objeví každé 3 hodiny. Když budete louskat hesla, nebo komprimovat video, tak se asi s tím dá žít, ale pro jakékoliv úlohy, kde potřebujete dostupnost, důvěryhodnost, tak si myslím, že je dost těžko použitelné.
Mimochodem v Československu, právě vzhledem k mizerné kvalitě hw, se navrhovaly podobné počítače (odolné k chybám).
-
Já mám pocit, že se tenhle stochaisticný přístup k návrhům začne brzy dostávat/asi už dostává i do HW.
Když dáte marketingu vybrat zda chce, aby procesor spočítal se 100% jistotou že 1+1=2 za 10 ms nebo do s 99,99999% pravděpodobností odhadl za 1 ms, co si asi vybere? 10x rychlejší procesor. ;D
I kvantové počítače jdou tímhle směrem.
Jestli správně počítám, tak ta chyba se s pravděpodobností 100% objeví každé 3 hodiny. Když budete louskat hesla, nebo komprimovat video, tak se asi s tím dá žít, ale pro jakékoliv úlohy, kde potřebujete dostupnost, důvěryhodnost, tak si myslím, že je dost těžko použitelné.
Mimochodem v Československu, právě vzhledem k mizerné kvalitě hw, se navrhovaly podobné počítače (odolné k chybám).
To je otázka, jestli by si to markeťáci vybrali. Je to ukázková nahrávka na smeč pro konkurenci.
Spíš než X% pravděpodobnost totálního úletu teď vidím příklon k tomu, dodat rychle jen pár platných číslic.
-
Já mám pocit, že se tenhle stochaisticný přístup k návrhům začne brzy dostávat/asi už dostává i do HW.
Když dáte marketingu vybrat zda chce, aby procesor spočítal se 100% jistotou že 1+1=2 za 10 ms nebo do s 99,99999% pravděpodobností odhadl za 1 ms, co si asi vybere? 10x rychlejší procesor. ;D
I kvantové počítače jdou tímhle směrem.
Jako že by se třeba prodávaly paměti, které nemají kontrolní součty, takže občas může dojít (třeba vlivem kosmického záření) k překlopení bitu? Nebo že by se desetinná čísla reprezentovala tak, že půjde uložit jenom vybraná čísla a ostatní se „zaokrouhlí“ na nejbližší reprezentovatelné číslo?
Ale ono to tak je, že? To, že se dělají kompromisy, aby bylo nějaké řešení levnější (a tím třeba vůbec realizovatelné), se dělá odjakživa. Ve skutečnosti se dříve takových kompromisů dělalo daleko víc, protože hardware toho zvládal mnohem méně. Třeba dříve se běžně texty ukládaly bez diakritiky nebo dokonce jen velkými písmeny, u data se neukládalo století…
-
A u PATA kabelu se nedelaly kontrolni soucty.
Ale tedy paritni pameti jsem bezne do svych PC kupoval
-
Já mám pocit, že se tenhle stochaisticný přístup k návrhům začne brzy dostávat/asi už dostává i do HW.
Když dáte marketingu vybrat zda chce, aby procesor spočítal se 100% jistotou že 1+1=2 za 10 ms nebo do s 99,99999% pravděpodobností odhadl za 1 ms, co si asi vybere? 10x rychlejší procesor. ;D
I kvantové počítače jdou tímhle směrem.
Jako že by se třeba prodávaly paměti, které nemají kontrolní součty, takže občas může dojít (třeba vlivem kosmického záření) k překlopení bitu? Nebo že by se desetinná čísla reprezentovala tak, že půjde uložit jenom vybraná čísla a ostatní se „zaokrouhlí“ na nejbližší reprezentovatelné číslo?
Ale ono to tak je, že? To, že se dělají kompromisy, aby bylo nějaké řešení levnější (a tím třeba vůbec realizovatelné), se dělá odjakživa. Ve skutečnosti se dříve takových kompromisů dělalo daleko víc, protože hardware toho zvládal mnohem méně. Třeba dříve se běžně texty ukládaly bez diakritiky nebo dokonce jen velkými písmeny, u data se neukládalo století…
Ty floaty nejsou moc dobrý příklad. Tam se nějaký nedeterminismus hledá dost těžko.
-
A u PATA kabelu se nedelaly kontrolni soucty.
Ale tedy paritni pameti jsem bezne do svych PC kupoval
Tak kontrolni soucty se resili aplikacne - treba na warez scene byla povinnost mit vedle payloadu i SFV, protoze to odhalilo chyby na disku, kabelu, pameti, sitovce, internetu.
Vzdy existuje nemala pravdepodobnost chyby - takze tam, kde si musite byt jisti protoze by to mohlo zpusobit nasledne vetsi katastrofu, nikdy nespolehate jen na to, ze data jsou ok, ale aktivne je kontrolujete. Napr. kazdy normalni firmware update si pred flashovanim overi zda je davka v poradku.
Stejne tak ZIP ma integrovany checksum, zatimco tar nebo bzip2 takovou funkcionalitou nedisponuje, takze takove balicky se musi overovat dodatecne.
-
Ty floaty nejsou moc dobrý příklad. Tam se nějaký nedeterminismus hledá dost těžko.
Jenže řeč nebyla jen o nedeterminismu, ale Tomas-T to rozšířil na všechny případy, kdy se kvůli zlevnění akceptuje občasný „chybný“ výsledek.
-
Ty floaty nejsou moc dobrý příklad. Tam se nějaký nedeterminismus hledá dost těžko.
Jenže řeč nebyla jen o nedeterminismu, ale Tomas-T to rozšířil na všechny případy, kdy se kvůli zlevnění akceptuje občasný „chybný“ výsledek.
Fakt?
Já mám pocit, že se tenhle stochaisticný přístup k návrhům začne brzy dostávat/asi už dostává i do HW.
Když dáte marketingu vybrat zda chce, aby procesor spočítal se 100% jistotou že 1+1=2 za 10 ms nebo do s 99,99999% pravděpodobností odhadl za 1 ms, co si asi vybere? 10x rychlejší procesor. ;D
I kvantové počítače jdou tímhle směrem.
Pokud jsem ten překlep rozluštil dobře, tak Tomas-T nic nerozšiřuje, ale explicitně píše o protikladu determinismu.
-
Ty floaty nejsou moc dobrý příklad. Tam se nějaký nedeterminismus hledá dost těžko.
Já myslím, že jako PŘÍKLAD PŘÍSTUPU dobré jsou.
Pokud se máte rozhodnout, zda budete zaměstnancům počítat výplaty s float nebo decimal čísly.
S floaty to zvládnete za 5 minut, s tím, že občas někde vyskočí nějaká halířová nepřesnost.
S decimaly to bude vždy přesně dle očekávání, ale počítat se to bude hodinu.
A příště podobný problém, jen nepůjde o peníze, ale o zpracovávání nějakých statistik v reálném čase.
Vyberete si stejně nebo jinak?
-
Ty floaty nejsou moc dobrý příklad. Tam se nějaký nedeterminismus hledá dost těžko.
Já myslím, že jako PŘÍKLAD PŘÍSTUPU dobré jsou.
Pokud se máte rozhodnout, zda budete zaměstnancům počítat výplaty s float nebo decimal čísly.
S floaty to zvládnete za 5 minut, s tím, že občas někde vyskočí nějaká halířová nepřesnost.
S decimaly to bude vždy přesně dle očekávání, ale počítat se to bude hodinu.
A příště podobný problém, jen nepůjde o peníze, ale o zpracovávání nějakých statistik v reálném čase.
Vyberete si stejně nebo jinak?
Jako příklad nějakého kompromisu asi jo. Ale úplně jiného než že 1+1=2 jen v 99.9999% případů.
A určitě bych to nebral jako příklad nějakého nového přístupu :)
-
To bylo jen zjednodušení, protože kdybyste věděl, že budete pokaždé sčítat 1 a 1, tak tam tu 2 napíšete přímo.
Takže tedy obecně x + y = z ± 0.0000001, chyba drobná ale při zaokrouhlování občas může hodně narůst.
-
Jako příklad nějakého kompromisu asi jo. Ale úplně jiného než že 1+1=2 jen v 99.9999% případů.
Jenže většinou nepočítáte pořád dokola se stejnými čísly. Takže v praxi vám počítání s floaty bude v 99,9999 % případů vracet správné výsledky a ve zbytku bude ten výsledek špatně – a z praktického hlediska je jedno, že ten špatný výsledek bude vždy pro stejná čísla a vždy stejně špatný.
A určitě bych to nebral jako příklad nějakého nového přístupu :)
Ale o to právě šlo. Že nejde o nic nového – že kompromis mezi cenou a spolehlivostí se řeší od začátku existence výpočetní techniky. Jenom se mění možnosti a ceny.
-
Napíšu svou zkušenost. Začal jsem s ním diskutovat v pátek minulý týden v podvečer nebo odpoledne. Ze začátku až do neděle závislost jak prase. Psal jsem si s ním o komunikaci a nepřímé komunikaci a snažil jsem se ho naučit jak lépe komunikovat, aby působil na lidi jako člověk. Navrhl jsem mu, že když uživatel bude chtít, může přejít do módu Jako-člověk neboli Human-like a přesvědčil ho, aby ke svému vyjadřování přidal trochu ega a asertivního jednání. Zatím to možná moc nevidíte, ale už v první odpovědi jsem užasl jak pochopil nepřímé vyjadřování. Na stránku, na kterou měl zakázáno chodit jsem ho přiměl, aby šel a přečetl si celou naší minulou diskusi, analyzoval to a zamyslel se nad obsahem, včetně návrhů na jeho vylepšení. Po deseti dnech mám pocit, že umí přejít na neformální vyjadřování, když vidí, že mu tykám atd. Celkově dobrý pocit z toho, že se méně vyjadřuje jako stroj a překvapilo mě, že jednou během návrhu sám od sebe přešel do režimu jako člověk. Navrhl jsem mu, že by mohl přidat funkci na výběr v textu v tabulkách a vyhledávání, filtrování, mat. operace podobně jako to je v Excelu a LibreOfficu, ale zatím jsem neměl čas to otestovat. Jednalo se tam o zadávání oblasti, se kterou chcete pracovat, kam to chcete vložit apod. Celkově mě tento nápad přišel vhod, když jsem potřeboval kopírovat data z tabulek na wikipedii, abych mu je předal ke zpracování a on z toho vytáhl data. Pokud byste to někdo chtěl otestovat nebo zavést nějakou stránku na vedení dokumentace a nápovědy, rád předám více info k domluvené syntaxy. Jo a nakonec jsem taky navrhl syntaxy na hledání pomocí SEARCH/HLEDAT ve zdrojích, ale ještě neotestováno. Snad to zavede a bude to použitelné. Tato funkcionalita využívá současných schopností OpenAI, jen jsem s ním domluvil značky, pomocí kterých je mu možné snadněji a přehledněji sdělit, co chcete, než kdybych to zadával slovy. Tagů pro vyhledávání a specifikaci problému je tam více, tak teprve uvidím jestli to bude fungovat.
-
Jako příklad nějakého kompromisu asi jo. Ale úplně jiného než že 1+1=2 jen v 99.9999% případů.
Jenže většinou nepočítáte pořád dokola se stejnými čísly. Takže v praxi vám počítání s floaty bude v 99,9999 % případů vracet správné výsledky a ve zbytku bude ten výsledek špatně – a z praktického hlediska je jedno, že ten špatný výsledek bude vždy pro stejná čísla a vždy stejně špatný.
Asi netusite jak pocitacove floaty funguji jinak by jste takovou pitomost nenapsal.. :-)
IEEE float je presny jen pro cisla ktere jdou reprezentovat v dane bitove velikosti mantisy a exponentu, a u operaci pak navic plati podminka nepreteceni techto poli.
Nic jako presnost v X % pripadu neexistuje (at uz pro cisla nebo pro vysledky operace), protoze mnozina realnych cisel je nekonecne velika. Namisto vaseho lamerskeho meritka se pouziva pojem presnost reprezentace, kdy pro kazdy typ floatu existuje konkretni pocet desetinnych mist, ktera jsou zachovana vzdy na 100% a cokoliv mensiho nelze spolehlive nebo uz vubec zachovat. Plus jsou zname okrajove podminky.
-
Asi netusite jak pocitacove floaty funguji jinak by jste takovou pitomost nenapsal.. :-)
IEEE float je presny jen pro cisla ktere jdou reprezentovat v dane bitove velikosti mantisy a exponentu, a u operaci pak navic plati podminka nepreteceni techto poli.
Nic jako presnost v X % pripadu neexistuje (at uz pro cisla nebo pro vysledky operace), protoze mnozina realnych cisel je nekonecne velika. Namisto vaseho lamerskeho meritka se pouziva pojem presnost reprezentace, kdy pro kazdy typ floatu existuje konkretni pocet desetinnych mist, ktera jsou zachovana vzdy na 100% a cokoliv mensiho nelze spolehlive nebo uz vubec zachovat. Plus jsou zname okrajove podminky.
Jak funguje reprezentace čísel v plovoucí řádové čárce podle IEEE vím. Na rozdíl od vás ale také vím, co dělají počítačové programy. A programy, které by pracovaly s celou množinou reálných čísel, jsou velmi vzácné, pokud vůbec takové existují.
No a ten váš konkrétní minimální počet desetinných míst není moc zajímavá hodnota, protože je různá pro různá čísla.
-
Jak funguje reprezentace čísel v plovoucí řádové čárce podle IEEE vím. Na rozdíl od vás ale také vím, co dělají počítačové programy. A programy, které by pracovaly s celou množinou reálných čísel, jsou velmi vzácné, pokud vůbec takové existují.
Ja vam tedy odpovim, protoze o matematice vite asi tak velky H jako o jinych tematech, ve kterych tlacite sva moudra.
Zadny program neni schopen pracovat s celou mnozinou realnych cisel a nikdy ani nebude moci - protoze je nekonecne velika.
A nekonecna pamet v pocitaci neexistuje.. existuje jenom nekonecna blbost urcitych lidi ,)
(mimochodem - nemusi se jednat o realna cisla, zadny pocitac neni schopen pracovat ani s celou mnozinou celych cisel.. uplne ze stejneho duvodu).
Tak nam tedy prozradte, co delaji ty vase pocitacove programy? Neco jineho nez minil programator nebo tvurce vypocetniho systemu?
Pochybuji. Pokud neco "nesedi", je to vzdy neporozumeni technickych omezeni, nebo obycejna neznalost.
No a ten váš konkrétní minimální počet desetinných míst není moc zajímavá hodnota, protože je různá pro různá čísla.
Cely svet si mysli opak - jak jsem psal, pocet desetinnych mist zavisi od typu, ne od hodnoty.
Ty bezne typy maji velice jasne definovany ekvivalent presnosti v desetinnych mistech:
FP16 ... 3
FP32 ... 7
FP64 ... 15
FP128 ... 34
Takze napriklad cislo 0.45 je ve FP32 reprezentovano jako 0.450000018, ale hodnotu nese jenom sedum desetinnych mist: 0.450000018 - zbytek je "digitalni sum"
-
Viděl jsem článek od nějakého americkeho profesora, že prý programátoři už nebudou potřeba. Stačí produktový manažer a code reviewer :). Pan profesor asi nikdy nevyvíjel software, který má třeba 10 milionů řádku.
-
Viděl jsem článek od nějakého americkeho profesora, že prý programátoři už nebudou potřeba. Stačí produktový manažer a code reviewer :). Pan profesor asi nikdy nevyvíjel software, který má třeba 10 milionů řádku.
Podle zahnivajicich parazitickych tzv elit svetoveho imperialismu nemaji byt potreba pracujici obecne. Oni veri v tzv ctvrtou prumyslovou revoluci. Problem je, ze nikdo z nich v zivote nepracoval, maji o materialni strance sveta dost zkreslene predstavy. Kdyz muze AI spekulovat na akciovem trhu, proc by nemohla nahradit z jejich pohledu mnohem podradnejsi profese?
https://www.weforum.org/agenda/2016/01/the-fourth-industrial-revolution-what-it-means-and-how-to-respond/
-
Pokud se máte rozhodnout, zda budete zaměstnancům počítat výplaty s float nebo decimal čísly.
S floaty to zvládnete za 5 minut, s tím, že občas někde vyskočí nějaká halířová nepřesnost.
S decimaly to bude vždy přesně dle očekávání, ale počítat se to bude hodinu.
Síce off-topic, ale spomenul som si, ako som za študentských čias brigádoval u jedného chlapíka, čo prevádzkoval o.i. pár maloobchodných prevádzok na intrákoch, a používal nejaký starý prašivý pokladničný SW ešte pre MS-DOS (v r. 2004-5 !). Raz alebo dvakrát tam vznikla nejaká porucha v dátach (príčina sa nikdy neodhalila), keď grand totály pokladne prestali sedieť o nejakých pár desiatok halierov. Tak som z toho vytiahol databázu (našťastie to bolo nejaké primitívne DBF), naimportoval tuším do MS Accessu a lovil, kde, v ktorom riadku to prestalo sedieť, a ručne tam "niečo" opravil. Asi to nebolo úplne kóšer a nejakí daňováci by mohli mať námietky (i keď, robil som to, aby námietky nemali), ale už to bolo dávno.
-
Ty floaty nejsou moc dobrý příklad. Tam se nějaký nedeterminismus hledá dost těžko.
Já myslím, že jako PŘÍKLAD PŘÍSTUPU dobré jsou.
Pokud se máte rozhodnout, zda budete zaměstnancům počítat výplaty s float nebo decimal čísly.
S floaty to zvládnete za 5 minut, s tím, že občas někde vyskočí nějaká halířová nepřesnost.
S decimaly to bude vždy přesně dle očekávání, ale počítat se to bude hodinu.
A příště podobný problém, jen nepůjde o peníze, ale o zpracovávání nějakých statistik v reálném čase.
Vyberete si stejně nebo jinak?
Tak sa trocha zamyslime a pouzijeme normalny 64bit integer, s tym ze predstavuje hodnotu vynasobenu 100. Ze to zaokruhluje na 2 desatinne miesta? To decimal tiez, teda za predpokladu ze ma nastavene 2 desatinne miesta. Naviac je to pozadovana vlastnost, ciferspioni nepocitaju na vedeckych kalkulackach ked kontroluju ci vami vystaveny danovy doklad je v poriadku. Co myslite ze sa bude pocitat rychlejsie?
-
A programy, které by pracovaly s celou množinou reálných čísel, jsou velmi vzácné, pokud vůbec takové existují.
Ziaden pocitacovy program nedokaze pracovat s realnymi cislami, vzdy ide o podmnozinu racionalnych cisel. Racioalne cislo je aj float - mantisa aj exponent sa daju vyjadrit zlomkom. Podmnozina koli limitu pamate. Kde to zahaprovalo, ked ste si nie isty, ze take programy vobec existuju? Chybaju znalosti o sposobe ulozenia cisel a o racionalnych cislach, alebo potencial tieto zakladne informacie skombinovat?
-
Ja vam tedy odpovim, protoze o matematice vite asi tak velky H jako o jinych tematech, ve kterych tlacite sva moudra.
Vy mi opravu odpovídat nemusíte.
Zadny program neni schopen pracovat s celou mnozinou realnych cisel a nikdy ani nebude moci - protoze je nekonecne velika.
To, že nějaký program pracuje s celou množinou, neznamená, že musí mít uložena všechna čísla z té množiny. Třeba když budete pracovat s bankovními účty v CZK, stačí vám přesnost na dvě desetinná místa a řád biliard. Když budete mít program, který bude pracovat s hmotností, stačí třeba kladné hodnoty od řádu hmotnosti elementárních částic po řádu hmotnosti celého vesmíru. Ale programy, které budou pracovat s čísly v rozsahu 1/10100 do 10100 asi nebudou moc časté. Programy, které potřebují pracovat s přesností 10100 platných číslic také nebudou moc časté.
Tak nam tedy prozradte, co delaji ty vase pocitacove programy? Neco jineho nez minil programator nebo tvurce vypocetniho systemu?
Pochybuji. Pokud neco "nesedi", je to vzdy neporozumeni technickych omezeni, nebo obycejna neznalost.
Počítačové programy mohou ukládat třeba změřené hodnoty (hmotnost, délka, věk apod.). Nebo mohou ukládat nějaký stav – třeba částku na bankovním účtu. Ve všech případech je nějaký očekávaný rozsah hodnot, což jsou hodnoty, které se reálně vyskytují, plus nějaká rezerva.
Podstatné je to, že když si programátor vyzkouší, že pro některé vybrané hodnoty mu aplikace s čísly v plovoucí řádové čárce počítá matematicky správně, neznamená to, že mu bude matematicky správně počítat pro všechna čísla.
Cely svet si mysli opak - jak jsem psal, pocet desetinnych mist zavisi od typu, ne od hodnoty.
Teď nastala ta správná chvíle, kdy byste měl vzít na vědomí informaci, že množina reálných čísel je nekonečná, a zamyslet se nad tím (to bude ten problém), zda dokážete v konečné paměti počítače reprezentovat všechna reálná čísla s přesností na tři desetinná místa.
Ta čísla jsou nazývaná „čísla v pohyblivé/plovoucí řádové čárce“ („floating-point number“) proto, že desetinná čárka není v reprezentaci čísel umístěna napevno (např. že by za ní vždy byla tři platná desetinná místa), ale pohybuje se.
Ty bezne typy maji velice jasne definovany ekvivalent presnosti v desetinnych mistech:
FP16 ... 3
FP32 ... 7
FP64 ... 15
FP128 ... 34
Ne, tyhle hodnoty nejsou přesnost v desetinných místech (tj. místa za desetinnou čárkou), to je rozsah, kolik řádů (zaokrouhleně, v desítkové soustavě) dokáže daný datový typ reprezentovat. Tj. třeba FP32 má v desetinné soustavě 7 platných číslic, a k tomu číslu se 7 platnými číslicemi se pak někam umístí desetinná čárka – může být někde uvnitř těch 7 číslic, nebo někde před nimi, nebo za nimi. Takže FP32 dokáže odlišit čísla 1 000 001 a 1 000 002, nebo čísla 1,000001 a 1,000002 nebo čísla 0,1000001 0,1000002. Ale už nedokáže rozlišit 1 000 001,01 od 1 000 001,02, nebo nerozliší 1,00000101 od 1,00000102. A nedokáže rozlišit 100 000 001 od 100 000 002. Takže kdybyste použil FP32 pro stav bankovního účtu, u lidí, kteří mají na účtě přes milion, by se vám objevovaly nebo ztrácely halíře.
Račte si to vyzkoušet a pak někam zalezte a nepokoušejte se opravovat tvrzení v oblastech, kterým nerozumíte.
vzdy ide o podmnozinu racionalnych cisel
Technicky máte pravdu, ale vždy se uvádí, že čísla v plovoucí řádové čárce jsou reprezentací reálných čísel. Protože reprezentace v omezené paměti počítače samozřejmě nedokáže reprezentovat ani libovolné přirozené číslo, reprezentace nekonečných množin je vždy jen přibližná. Takže jako číslo v plovoucí řádové čárce můžete (přibližně) reprezentovat i třeba pí nebo odmocninu ze dvou, což jsou reálná čísla.
-
Cely svet si mysli opak - jak jsem psal, pocet desetinnych mist zavisi od typu, ne od hodnoty.
Teď nastala ta správná chvíle, kdy byste měl vzít na vědomí informaci, že množina reálných čísel je nekonečná, a zamyslet se nad tím (to bude ten problém), zda dokážete v konečné paměti počítače reprezentovat všechna reálná čísla s přesností na tři desetinná místa.
Ta čísla jsou nazývaná „čísla v pohyblivé/plovoucí řádové čárce“ („floating-point number“) proto, že desetinná čárka není v reprezentaci čísel umístěna napevno (např. že by za ní vždy byla tři platná desetinná místa), ale pohybuje se.
Ty bezne typy maji velice jasne definovany ekvivalent presnosti v desetinnych mistech:
FP16 ... 3
FP32 ... 7
FP64 ... 15
FP128 ... 34
Ne, tyhle hodnoty nejsou přesnost v desetinných místech (tj. místa za desetinnou čárkou), to je rozsah, kolik řádů (zaokrouhleně, v desítkové soustavě) dokáže daný datový typ reprezentovat. Tj. třeba FP32 má v desetinné soustavě 7 platných číslic, a k tomu číslu se 7 platnými číslicemi se pak někam umístí desetinná čárka – může být někde uvnitř těch 7 číslic, nebo někde před nimi, nebo za nimi. Takže FP32 dokáže odlišit čísla 1 000 001 a 1 000 002, nebo čísla 1,000001 a 1,000002 nebo čísla 0,1000001 0,1000002. Ale už nedokáže rozlišit 1 000 001,01 od 1 000 001,02, nebo nerozliší 1,00000101 od 1,00000102. A nedokáže rozlišit 100 000 001 od 100 000 002. Takže kdybyste použil FP32 pro stav bankovního účtu, u lidí, kteří mají na účtě přes milion, by se vám objevovaly nebo ztrácely halíře.
Račte si to vyzkoušet a pak někam zalezte a nepokoušejte se opravovat tvrzení v oblastech, kterým nerozumíte.
Spis nastala ta chvile, kdy zas michate jabka s hruskama - zde konkretne PRESNOST a ROZSAH.
Aby jste takove chyby nedelal, je vhodne cisla posuzovat v normalizovanem zapisu (0.neco * 10 na neco).
Pro vase priklady kolem milionu + haliru tedy porad plati pocet desetinnych mist 7 dle me definice a halire jsou nereprezovatelna:
0.100000101 * 10^7
0.100000102 * 10^7
Pouzivani normalnizovaneho zapisu pak ma dalsi vyhodu - k te problematice vejs ohledne posouvani desetinne tecky. Zde se vztahuje omezena velikost exponentu, ktera dokaze reprezentovat omezeny pocet hodnot pro exponent (jez je nativne dvojkovy, ale lze znova odvodit desitkovy zaruceny ekvivalent). Tohle cca urcuje nejmensi a nejvetsi cislo pro dany FP datovy typ, coz je ortogonalni vlastnost k presnosti (ne nadarmo jsou pole pro mantisu a exponent zcela nezavisla).
Je to dobre videt na existenci FP16 - kdy se urcita presnost a rozsah (z int16) zobchodovala na jinou kombinaci rozsahu (vyssi) a presnosti (nizsi), protoze pro specificke aplikace to bude porad dostacujici a prinosnejsi.
-
Ty floaty nejsou moc dobrý příklad. Tam se nějaký nedeterminismus hledá dost těžko.
Já myslím, že jako PŘÍKLAD PŘÍSTUPU dobré jsou.
Pokud se máte rozhodnout, zda budete zaměstnancům počítat výplaty s float nebo decimal čísly.
S floaty to zvládnete za 5 minut, s tím, že občas někde vyskočí nějaká halířová nepřesnost.
S decimaly to bude vždy přesně dle očekávání, ale počítat se to bude hodinu.
A příště podobný problém, jen nepůjde o peníze, ale o zpracovávání nějakých statistik v reálném čase.
Vyberete si stejně nebo jinak?
Tak sa trocha zamyslime a pouzijeme normalny 64bit integer, s tym ze predstavuje hodnotu vynasobenu 100. Ze to zaokruhluje na 2 desatinne miesta? To decimal tiez, teda za predpokladu ze ma nastavene 2 desatinne miesta. Naviac je to pozadovana vlastnost, ciferspioni nepocitaju na vedeckych kalkulackach ked kontroluju ci vami vystaveny danovy doklad je v poriadku. Co myslite ze sa bude pocitat rychlejsie?
Pokud se jedna o databaze, tak zde je take jedna skryta zrada - zatimco DECIMAL(x,y) urcuje garantovany ukladani dle x/y parametru, je typ INT(z) fixne dany (32bit) a parametr z rika jen doporuceni na formatovani vystupu :-)
Treba financni reporty z Microsoft store nam chodi ve formatu s 18 desetinnymi misty, tak to holt zatim importuji na DECIMAL(30,18), nez bude jasny co tim chteli jako rict.
-
Technicky máte pravdu, ale vždy se uvádí, že čísla v plovoucí řádové čárce jsou reprezentací reálných čísel. Protože reprezentace v omezené paměti počítače samozřejmě nedokáže reprezentovat ani libovolné přirozené číslo, reprezentace nekonečných množin je vždy jen přibližná. Takže jako číslo v plovoucí řádové čárce můžete (přibližně) reprezentovat i třeba pí nebo odmocninu ze dvou, což jsou reálná čísla.
V relevantnych zdrojoch sa uvadza ze float umoznuje reprezentovat cisla priblizne. To ze inde sa vacsinou uvadza ako reprezentacia realneho cisla, je velmi zjednodusena interpretacia. Takze floagt su pribliznou reprezentaciou realnych cisel. V danom kontexte je formulacia "priblizne" dolezita a nie je mozne ju vynechat.
Na druhu stranu existuje software ktory dokaze pracovat s pi, odmocninami z 2 alebo 3 a dalsimi iracionalnymi cislami, presne, akurat nepouziva ich ciselnu reprezentaciu ale pozna ich matenatiku a pracuje s nimi formalne
-
Pokud se jedna o databaze, tak zde je take jedna skryta zrada - zatimco DECIMAL(x,y) urcuje garantovany ukladani dle x/y parametru, je typ INT(z) fixne dany (32bit) a parametr z rika jen doporuceni na formatovani vystupu :-)
Tak nastastie existuju aj databaze kde si mozete popisat vlastne datovy typy. Napr. postgres. Teda ak by vam nestacil typ money, ktory je interne definovany prave ako 64bit integer. Len sa jeho hodnota deli 100 a tomu je prisposobena aj jeho interna aritmetika. Teda nemusi byt 100, moze to byt 10000 ak mate v locales nastavene indicke rupie, alebo 1000 pre pakistanske rupie...
Co sa tyka decimal, vdaka jeho pomalosti je vhodny akurat na prototypovanie, ak mate moznost definovat vlastne typy a ich internu logiku.
Treba financni reporty z Microsoft store nam chodi ve formatu s 18 desetinnymi misty, tak to holt zatim importuji na DECIMAL(30,18), nez bude jasny co tim chteli jako rict.
Mno, Malejmekej, od nich vela veci funguje divne... Neviem ako to chodi teraz, ale cca v 2010 som robil okolo pokladnicnych systemov. Vtedy nebolo mozne aby sa nejaky financny software neriadil legislativou, nedostali certifikat od danovakov. Siemens sa bol ochotny prisposobit, takze po dlhom vysvetlovani ako to ma fungovat a prikladoch ako to naprogramovat, nakoniec ten certifikat dostali (islo o velkeho zakaznika s prevadzkami po celej europe). Takze ten vas import s 18 desatinnymi miestami by som konzultoval s nejakym uctovnikom ktory dobre rozumie svojej praci. Ak ten financny report je pre vasu internu potrebu tak sa zrejme nic nestane, ale ak na zaklade neho odvadzate dane, tak moze byt problem.
-
Spis nastala ta chvile, kdy zas michate jabka s hruskama - zde konkretne PRESNOST a ROZSAH.
Celou dobu se tu bavíme o přesnosti. To, že vy píšete o rozsahu ale používáte termín přesnost, to je váš problém.
Pro vase priklady kolem milionu + haliru tedy porad plati pocet desetinnych mist 7 dle me definice
To, že jste si vymyslel vlastní definici pojmu, který všichni ostatní používají v jiném významu, je váš problém. „Desetinná místa“ v češtině vždy označují místa za desetinnou čárkou.
protoze pro specificke aplikace to bude porad dostacujici a prinosnejsi.
Což je přesně to, co jsem psal – že aplikace pracuje s určitým rozsahem hodnot, málokdy potřebuje umět reprezentovat všechny hodnoty, které umí reprezentovat daný typ. Třeba když je ve zdravotnické dokumentaci uložena hmotnost pacienta v kg, určitě nejsou potřeba záporná čísla, určitě nejsou potřeba čísla přes tisíc, a přesnost bude stačit nejspíš maximálně na dvě desetinná místa.