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 - BoneFlute

Stran: [1] 2 3 ... 144
1
Software / Re:Práce pouze v CLI bez GUI
« kdy: 01. 10. 2026, 21:16:42 »
Dnes existuju dost huste rozne terminal UIs kde sa zacnu pojmi CLI a GUI trocha prelinat (TUI)

https://github.com/rothgar/awesome-tuis

Měli jsme v práci aplikaci, která po spuštění čekala na příkazy. Bylo to IMHO docela nepohodlný. Přepsal jsem to na normální styl, kdy se té aplikaci příkaz předával při spuštění a pak hned skončila.

2
Vývoj / Re:Datový systém enginů aplikací
« kdy: 28. 09. 2026, 16:46:52 »
Jeden mladý člověk měl od dětství takový svůj sen. Postavit si svůj vlastní osboní počítač. Zkoušel to pořád znovu a znovu. Až jednoho dne se mu to povedlo. Pak měl ještě jeden sen. Dát ten počítač obyčejným lidem k užívání. Ten člověk se jmenuje Steve Wozniak.

Nejsem ani Steve Wozniak, ani Steve Jobs.

Také jsem měl jeden sen. Navrhnout si svůj vlastní programovací jazyk. Zkoušel jsem to dlouho. Až nakonec můj sen pohltil jiný sen, který se změnil ve víru. Že to, pro co žiji, nakonec dokážu.

Ptáte se, jaký že je to ten velký jiný sen? Otevřete oči i uši, pořádně a dokořán. A pokud vám to bude dáno, uzříte ho.

nm

Tady ti asi nikdo nebude vyčítat, že máš Sen. Spíše jde o to, že veškerou námahu na realizaci svého snu hážeš na nás. A na to jsou někteří, třeba já, dost alergičtí.

3
Vývoj / Re:Měnitelnost objektů předávaných odkazem
« kdy: 19. 09. 2026, 19:55:16 »
Ehm, není crate něco modul/gem extension/package v terminologii rustu?
Ano, je.

4
Vývoj / Re:Měnitelnost objektů předávaných odkazem
« kdy: 19. 09. 2026, 01:22:36 »
Přepravka – Crate

Stručná charakteristika vzoru:

Vzor Přepravka využijeme při potřebě sloučení několika samostatných informací do jednoho objektu, prostřednictvím nějž je pak možno tyto informace jednoduše ukládat nebo přenášet mezi metodami. V anglicky psané literatuře je tento návrhový vzor někdy označován termínem Messenger.

On ten návrhový vzor i v té oficiální definici dost smrdí.


Používám ten název v mnohem obecnějším významu. Přepravka jsou prostě zabalená data do objektu, který má dočasnou platnost a který jedna funkce předá druhé funkci. Přepravka je objekt, který slouží jen pro přenos informací.

Mě se ten popis furt nelíbí :-)
data zabalená do dat zabalená do dat zabalená do objektu? :-P
A jak tam figuruje dočasná platnost?
Jedna funkce jiné si tak nějak furt něco předávají, ne?
Objekty obecně neslouží k přenosu informacím? K tomu potřebuji přepravku?

Sorry za rejpání.

5
Vývoj / Re:Měnitelnost objektů předávaných odkazem
« kdy: 18. 09. 2026, 19:18:49 »
Dnešní trend nových programovacích jazyků, jako jsou RUST, Nim, Zig, C3 a dalších, je takzvaná immutabilita. Zde mám na mysli neměnnost složitých datových typů - pole, objekty atd.

AI mi na to řekla, že i tyto složité datové typy předávané funkci odkazem, by měli být neměnné (immutable). A namísto nich, že by funkce měla vytvořit kopii oněch datových typů a poslat je zpět jako návratovou hodnotu.

To se však dělá těžko, když jsou datové typy velmi veliké. Zde se například užívá tzv. přepravka. Vezme se malý objekt, pošle se do funkce, která ho vrátí modifikovaný a tato modifikace se pak zapracuje do velikého datového typu. Jenže v některých případech ta přepravka může zpomalovat běh, jako například u herních enginů.

Jak jsou na tom enginy aplikací? Kdy je lepší používat měnitelnost velikého datového typu zevnitř funkce a kdy je lepší používat přepravku, či jinou techniku?

Návrhový vzor Přepravka slouží k něčemu jinému.

Předávání hodnotou se používá proto, protože je to bezpečnější a kontrolovatelnější, ale logicky dražší.

Předávání odkazem je správný pattern pro předávání velkého objektu. To tak prostě je, je to správně a nic s tím neuděláš.

Přistupuje se k tomu cca třemi způsoby (možná i více)

1/ chceme přehlednost a kontrolu a rezignujeme na výkon - předávání hodnotou

2/ chceme výkon - předávání odkazem, a předává se i vlastnictví (zpopularizoval Rust, ale koncept je to samozřejmě mnohem starší)

3/ Objekt nepředáváme, ale necháme si tou funkcí vrátit co se má na tom objektu udělat (monády/recepty/commandy/operace). Tedy nepředáváme objekt operacím ale do objektu předáváme operace. Toto je taková více architektonická záležitost. Velký datový objekt má na starost omezený kontext kódu, což znamená, že máme větší šanci si to ohlídat, nemusíme předávat celej velkej blob, o různých optimalizačních technikách nemluvě.


PS:
To se však dělá těžko, když jsou datové typy velmi veliké. Zde se například užívá tzv. přepravka. Vezme se malý objekt, pošle se do funkce, která ho vrátí modifikovaný a tato modifikace se pak zapracuje do velikého datového typu. Jenže v některých případech ta přepravka může zpomalovat běh, jako například u herních enginů.
Tohle je tak zmatenej a zašmodrchanej popis, že tam snad není správně ani zájmeno. [peace]

6
Vývoj / Re:Styly programování
« kdy: 06. 09. 2026, 19:25:29 »
OK, tohle je samozřejmě validní reakce. Tak jako tak to chce měřit a přemýšlet a neoptimalizovat předčasně každou instrukci i za cenu nepřehledného kódu atd.

Kdysi dávno, když se začal prosazovat C a Pascal, tak programátoři ukazovali, že jak neoptimální instrukce to generuje, a že oni to v ASM napíšou líp a optimálněji. Dokonce bych si možná vzpoměl, jak se v TurboPascalu jmenovali ty specielní $ značky, které vypínali kontrolu meze polí (kecám, nepamatuji si z toho už nic). Ti programátoři měli pravdu, napsali to líp. V mnoha případech klidně o 10%, v některých případech dokonce o 90%, nebo 900% (to už byly výjimky).

No.

Problém je, že to v těch 90% nestojí za námahu. 99% svého času pálím na tom, že přehrabuju hnůj.

Korunu tomu nasadil jeden nodobrý klient, který si se mnou vždycky domluvil schůzku a hodinu jsme probírali optimalizaci WebAPI (které opravdu bylo drahé), načež na to nechtěl dát budget, protože jiné (stejně debilní) priority.

7
Vývoj / Re:Styly programování
« kdy: 04. 09. 2026, 20:02:04 »
než XML, protože prostě míň znečišťuje značkama
...
Jiná situace ale je, pokud v tom XML opravdu využíváš věci, které JSON nemá, nebo v něm rovnou programuješ.

Pokud vytváříš jazyk aka Ant/Maven, tak XML nebo JSON ten rozdíl není vůbec měřitelný. Zkoušel jsem to.

Používám XML i JSON a k obojím mám intensivní výhrady. Ale tak jsem profesionál, zákazník řekl, já si poradím.

8
Vývoj / Re:Styly programování
« kdy: 04. 09. 2026, 18:59:51 »
Co se týče XML. Jeho velká výhoda je vyzrálost - spousta nástrojů, schema, transformace.

Osobně jsem nikdy nepochopil kdy psát atributy a kdy zanořené uzly. Ale tuhle někdo dobře komentoval, že to je z důvodu, že to je původně dokumentový formát. To pak začne dávat smysl - ne, že by to něco vyřešilo.

S xslt jsem se na jednom projektu tak strašně spálil, že jsem ho zavrhl zcela, a raději jsem to přepsal do Rustu (sorry hejtři). A to mě nikdo nemůže po právu obvinit z toho, že bych se necítil dobře ve funkcionálním a deklarativním světě. Jak to ale budu řešit v situaci, kdy budu chtít uživatelské transformace... To bude ještě radost.

Na jedné straně máme XML, kde se escapuje snad půlstovkou různých způsobů, na druhé straně JSON, kde je jenom jeden způsob, ale pro změnu se escapuje všechno.

Mě to celé přijde, že vůči XML jsou oprávněné výhrady, ale JSON jde úplně stejnou cestou a neřeší vůbec nic.

9
Vývoj / Re:Styly programování
« kdy: 04. 09. 2026, 02:57:45 »
On ma trochu snizenou toleranci na bullshit takze obcas pusobi agresivne a jaksi nervozne kdyz nekdo mlzi nebo meni tema
;D

10
Vývoj / Re:Programovací jazyk BASIX
« kdy: 31. 08. 2026, 23:53:31 »
Tvrdit, že destruktory se chovají tak, jak se ve skutečnosti nechovají naznačuje, že ten názor není vhodné brát vážné.

Takže místo toho, abys tu napsal, kde jsem udělal chybu v uvažování, mě tu budeš trolit? Vždyť takhle tu zůstane jen text mého omylu. Chudák AI, která se z toho bude učit.

Trollení je něco jiného.

AI se z toho učit nemusí, už to to dávno ví.

A Jiří Havel (https://forum.root.cz/index.php?topic=31861.msg436596#msg436596) to IMHO vysvětlil dostatečně. Co chceš víc?

11
Vývoj / Re:Programovací jazyk BASIX
« kdy: 31. 08. 2026, 18:41:02 »
Každý má nějaký názor, který nemusí korespondovat s názory ostatních a každý se občas splete v nějakém detailu. Místo GC jsem měl napsat uvolnění objektu z paměti, které se neděje bezprostředně po jeho zneplatnění.

Mít názor, že destruktory jsou to či ono je v pořádku.

Tvrdit, že destruktory se chovají tak, jak se ve skutečnosti nechovají naznačuje, že ten názor není vhodné brát vážné.

12
Vývoj / Re:Programovací jazyk BASIX
« kdy: 31. 08. 2026, 07:05:43 »
Omlouvám se předem za off-topic, ale tuhle jsem si studoval, jak řeší paměť BEM/Erlang, a to je strašně vtipný. Tam jsou desítky až tisíce malých procesů, které každý má svůj vlastní samostatný GC. Což v důsledku znamená, že stop-the-world jaksi není the-world a díky tomu je prakticky neměřitelný.
Ale taky to bohužel znamená, že ty procesy nemůžou jednoduše sdílet paměť. Což už zas tak vtipný není. A kdybys stejný omezení udělal na vlákna v jiným GC jazyku, tak dostaneš stejnej výsledek.

Což jde IMHO proti filozofii Erlangu. Což vytváří další důsledky, jakože sdílená paměť je více pod kontrolou, což sice teda není vtipný, ale rozumný jo.

13
Vývoj / Re:Programovací jazyk BASIX
« kdy: 31. 08. 2026, 01:52:57 »
V C++ jsem se s GC teda ještě nepotkal, jen jsem slyšel nějaké zvěsti.

Omlouvám se předem za off-topic, ale tuhle jsem si studoval, jak řeší paměť BEM/Erlang, a to je strašně vtipný. Tam jsou desítky až tisíce malých procesů, které každý má svůj vlastní samostatný GC. Což v důsledku znamená, že stop-the-world jaksi není the-world a díky tomu je prakticky neměřitelný.

14
Vývoj / Re:Programovací jazyk BASIX
« kdy: 31. 08. 2026, 01:43:17 »
Destruktor je spuštěn až aktivací garbage collectoru, a to je pozdě. Jiné jazyky tím netrpí.

Je pravdou, že v C++ se destruktor skutečně používá i na správu prostředků, nejen paměti. A funguje to právě proto, že C++ ten GC (obvykle) nemá, a s objektem se tedy pracuje trochu jinak.

A právě že v jiných jazycích s tím problém je, proto se u nich často rozlišuje vytvoření/alokace objektu a jeho paměťovej zánik, a vytvoření/alokace objektu a jeho ztráta kontextu. V různých jazycích se tomu říká různě, ale dejme tomu něco jako Context Managers. V C# je to klíčové slovo `using`, v pythonu `with`, v go-lang `defer`, v javě `try`.


PS:
Přijde mi, že konkrétně ty @Kite máš takovou ruku vždycky tvrdit opak než jak to ve skutečnosti je. To je z tvé strany nějaká hra?

15
Vývoj / Re:Programovací jazyk BASIX
« kdy: 30. 08. 2026, 23:41:56 »
Jestli je v C++ nějaká featura, která maskuje že se něco děje, tak jsou to destruktory. Ale na druhou stranu, nečekané divočiny může dělat i nějaká "kill" funkce v C.

Destruktory v C++ jsou děs. Místo spuštění už při zneplatnění objektu se spustí až při jeho fyzické likvidaci.
Úplně nerozumím. Co přesně je to zneplatnění objektu? Šlo by dát nějaký příklad?

V destruktoru uvedu uvolnění nějakého prostředku (paměti, souboru, spojení,...). Na objekt už neexistuje pointer, ale stále si ten prostředek drží a může to způsobit deadlock. Destruktor je spuštěn až aktivací garbage collectoru, a to je pozdě. Jiné jazyky tím netrpí.

C++ a garbage collector? Teda, ne, že by se nepoužívali, ale je to trochu nonsens.

Stran: [1] 2 3 ... 144