O víkendu probíhá konference OpenAlt 2025. Na programu je spousta zajímavých přednášek. Pokud jste v Brně, stavte se. Vstup zdarma.
Josef Průša představil novou velkoformátovou uzavřenou CoreXY 3D tiskárnu Prusa CORE One L a nový open source standard chytrých cívek OpenPrintTag i s novou přepracovanou špulkou.
Na GOG.com běží Autumn Sale. Při té příležitosti je zdarma hororová počítačová hra STASIS (ProtonDB: Platinum).
Ubuntu 25.10 má nově balíčky sestavené také pro úroveň mikroarchitektury x86-64-v3 (amd64v3).
Byla vydána verze 1.91.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.
Ministerstvo průmyslu a obchodu vyhlásilo druhou veřejnou soutěž v programu TWIST, který podporuje výzkum, vývoj a využití umělé inteligence v podnikání. Firmy mohou získat až 30 milionů korun na jeden projekt zaměřený na nové produkty či inovaci podnikových procesů. Návrhy projektů lze podávat od 31. října do 17. prosince 2025. Celková alokace výzvy činí 800 milionů korun.
Google v srpnu oznámil, že na „certifikovaných“ zařízeních s Androidem omezí instalaci aplikací (včetně „sideloadingu“) tak, že bude vyžadovat, aby aplikace byly podepsány centrálně registrovanými vývojáři s ověřenou identitou. Iniciativa Keep Android Open se to snaží zvrátit. Podepsat lze otevřený dopis adresovaný Googlu nebo petici na Change.org.
Byla vydána nová verze 18 integrovaného vývojového prostředí (IDE) Qt Creator. S podporou Development Containers. Podrobný přehled novinek v changelogu.
Cursor (Wikipedie) od společnosti Anysphere byl vydán ve verzi 2.0. Jedná se o multiplatformní proprietární editor kódů s podporou AI (vibe coding).
Google Chrome 142 byl prohlášen za stabilní. Nejnovější stabilní verze 142.0.7444.59 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 20 bezpečnostních chyb. Za nejvážnější z nich bylo vyplaceno 50 000 dolarů. Vylepšeny byly také nástroje pro vývojáře.
Jelikož je dneska SMP všude kolem nás, řekl jsem si, že se v C++ naučím vícevláknově programovat (tady jsem se o tom zmínil) a chtěl jsem se zeptat odkud čerpat informace.
V tomhle směru nemám zkušenosti v žádném programovacím jazyce, takže mi ještě zbejvá pochopit i to, jak to celý funguje - různý locky, výjimky, čtení souboru ve víc vláknech a co já vím.
Nevíte o nějakym dobrym zdroji? Jde mi samozřejmě o POSIXová vlákna (pthread). Potřebuju něco, kde je to dobře vysvětlený a kde je hodně příkladů. V Mistrovství v C++ o tom nic není.
Taky jsem přemejšlel na čem si to vyzkoušet. Nejvíc mě samozřejmě baví programovat věci, který potom nějak využiju, ale když to ještě k tomu skloubím s tím, že to musí bejt něco náročnýho na procesor (aby to mělo smysl dělat ve více vláknech), tak mě nic moc nenapadá... Třeba nějaký enkódování, ale nevím jak moc by mě to bavilo...
Btw. GPL vítězí nad Skype 
Update: Tak jsem napsal svou první mt aplikaci. Počítá počet inkrementací za sekundu
Pak jsem ale zjistil, že když to napíšu st (pomocí alarm), tak je to sice pomalejší, ale když to optimalizuju s -O3, tak to vyjde nastejno a mt už -O3 nijak nezrychlí. Taky jsem poprvé použil volatile, protože to gcc/g++ s -O3 přeháněl 
Tiskni
Sdílej:
Nevim, jsou pthreads dostatečně multiplatformní? Třeba jednou budeš používat nějaký neposixový operační systém, co můžeš vědět.Takže Windows? Tak se případně naučí pár funkcí navíc, žádná věda to není.
Tož naučí se, co by se nenaučil, ale ty programy se sami nepřepíšou. No není to škoda? :-P
Nevim, přijde mi lepší dělat programy rovnou jako multiplatformní, když tomu nic nebrání.POSIX slouží sám o sobě k multiplatformnímu vývoji. Že je Redmond centrálou blbů, za to ostatní nemůžou. Navíc je to pár funkcí - když si vezmu, že jsem se učil WinAPI, MFC, GTKmm i Qt, připadá mi tato diskuze trochu směšná
Spoléhat se na každou věc na nějakou extra knihovnu je zbytečné - a kdo to pak má používat.
Že je Redmond centrálou blbů...
Proč je Redmond centrálou blbů?
Nedělají to náhodou proto, že buď jsou toho názoru, že jejich řešení bude ve výsledku lepší, nebo proto, že jim to přinese zisk?B je správně, upevňuje to monopol. Nepřijde mi, že bychom na Unixech o něco lepšího přicházeli.
Ať tak nebo tak, v tomhle se moc neliší od většiny ostatních firem.Když se podívám na ostatní moderní OS, tak ty se POSIXem vesměs řídí. Takže liší.
A už vůbec mi to nepřijde jako jednání blba.Blbcem jsem nemyslel hloupého člověka, ale spíš něco jako "parchanta" apod.
) OS podaří přesvědčit lidi o tom, že je to ten OS který chtějí/potřebují, pak se monopol někoho jako Microsoft konat nebude. To je ten hlavní problém. Obyčejný user nepotřebuje Linux, když mu všechno "funguje" na Windows. To že je to technicky OS na dvě věci jim fakt nevadí. Pak se ale nemůžeme divit, že se někdo drží na špici způsoby na hraně zákona a pod hranicí etiky.
B je správně, upevňuje to monopol. Nepřijde mi, že bychom na Unixech o něco lepšího přicházeli.Dneska se celý den pokouším portovat svůj program, který komunikuje po sériovém portu, aby fungoval i ve Windows. A jak to v Linuxu šlo jednoduše, tak to v moftech jde složitě. Bych řekl, že na Unixech přicházíme o způsob, jak snadno zabít spoustu času.
POSIX slouží sám o sobě k multiplatformnímu vývoji. Že je Redmond centrálou blbů, za to ostatní nemůžou.Mimochodem, Windows volitelně podporují pthready prostřednictvím Interixu.
To že je to tady víc na očích je věc jiná.Vláda je místem, kde takové věci nemají co dělat. Tečka.
Výkřiky typu Redmond je centrála blbců, to je vtipný. Ty lidi na rozdíl od tebe už něco dokázali, a málo toho není.Dokázali co? Kopírovat nápady skutečně inovativních firem a podvolit si trh. Pro spotřebitele jedno lepší než druhé.
Tobě jde o to, aby byl trh příznivý pro tebe.
V lékeřství nebo školství se dějí věci úplně stejné. Tam mají co dělat? Právě tam by neměli... Je to všude tak to nekonkretizuj tam kde to není vhodné prosímtě.
IMHO okopírovat a implementovat nápad v closed-source světe je daleko složitější než v open-source světe. Takže jejich invenci bych neshazoval. To s podvolením trhu, no, to je pravda, ale je to komerční subjekt, tak to prostě chodí, buď vládneš a nebo tě někdo ovládá a sežere.
To s podvolením trhu, no, to je pravda, ale je to komerční subjekt, tak to prostě chodí, buď vládneš a nebo tě někdo ovládá a sežere.Není to tak černobílé.
Uvedl jsi příklad, já ti dokážu uvést protipříklad. Je nesmyslné obořovat se výhradně proti jedné skupině a ignorovat při tom stejné jednání všude jinde.
Je to přesně takhle černobílé, alespoň v dnešní době. Každý tvůj zisk jde na úkor ztrát konkurence. Ty máš buď možnost se s konkurencí spojit ve prospěch obou, nebo chtě nechtě budete v konkurenčním boji. A když jde o prachy tak to moc čistý boj není. A nebo mě pouč odborníku. Zatím jsi řekl pouze to, že to není černobílé. Něco konkrétního by bylo?
buď vládneš a nebo tě někdo ovládá a sežere.Kdyby tohle byla pravda, tak je v každém odvětví jen jedna solidní firma.
Uvedl jsi příklad, já ti dokážu uvést protipříklad. Je nesmyslné obořovat se výhradně proti jedné skupině a ignorovat při tom stejné jednání všude jinde.Co to prosímtě meleš? Doli na začátku řekl "něco podobného je i vláda", takže se zjevně neobořuje proti výhradně jedné skupině (MS) ani výhradně proti dvěma skupinám (MS a vláda), ale proti tolika skupinám, proti kterým má výhrady.
Ty máš buď možnost se s konkurencí spojit ve prospěch obou, nebo chtě nechtě budete v konkurenčním boji.A nebo konkurenci něco okopírovat, pak se s ní soudit (MS na to má, konkurence ne) a pak ji finančně vyčerpanou koupit i s programátorama, aby zalepili chyby, které do produktu MS během kopírování naflákal. Teď jsem si ale nas*al do vlastního hnízda, protože tohle tvrzení vlastně popírá, že by MS neměl vlastní invenci. Má, vynalezl tenhle postup.
A když jde o prachy tak to moc čistý boj není.A protože tvrdíme, že nic není černobílé, tak jsou různé stupně nečistoty toho boje. A MS je na špici (podplácení, FUDy, soudy... zapomněl jsem na něco?)
Vzhledem k tomu, že řečené praktiky se užívají vážně všude, měl by tedy vyjmenovat všechny, jak tvrdíš, proti kterým má výhrady. Pokud tak neučiní, vypadá to, jako by měl výhrady právě jen kvůli vyjmenovaným.
Myslíš, že MS měl od začátku $$ na to, aby se soudil s konkurencí? Znáš něco o historii té firmy a situaci v době, kdy firmy jako MS a Apple začínaly? MS (tenkrát potažmo sám velký vůdce) prostě chytře využil všechny výhody, které mu doba poskytla. Doporučuju např. film Piráti ze Sillicon Valley.
Hmm, máš například o uplácení ze strany MS nějaký hmatatelný důkaz? Nebe jen papouškuješ oblíbenou historku?
Hmm, máš například o uplácení ze strany MS nějaký hmatatelný důkaz? Nebe jen papouškuješ oblíbenou historku?Projdi si staré zprávičky ohledně schvalování OOXML. Mám pocit, že ve Švédsku se podplácení provalilo.
Samotný průběh hlasování nelze nazvat jinak než fraškou. Ve Švédsku bylo ještě pár dní před hlasováním jasné, že norma s drtivým výsledkem neprojde. V den hlasování se ovšem dostavila cca 20 firem, partnerů Microsoftu, každá zaplatila několik tisíc dollarů za hlasovací právo, a OOXML bylo schváleno 20 hlasy. Proti bylo 6, a 4 hlasující raději urychleně opustili jednací sál, aby jejich jméno nebylo spojeno s touto fraškou. Následně se provalilo, že Microsoft zatlačil na své partnery a slíbil jim různé výhody, pokud si zakoupí hlasovací právo a budou hlasovat pro něj. Microsoft se následně přiznal, a Švédská organizace dodatečně zneplatnila svůj hlas pro hrubé porušení podmínek hlasování. Podobné "komedie" se odehrály v Maďarsku a Itálii, které rovněž neodešlou do ISO své hlasy a zdrží se hlasování.http://www.ddworld.cz/windows/standardizace-microsoft-ooxml-nefalsovana-fraska-5.html
U vzdělaných lidí (a na abclinuxu zvlášť) bych čekal znalosti webové prostředí. Zkrátka na web může kdokoliv napsat cokoliv za jakýmkoliv účelem a bez jakékoliv odpovědnosti.Což to víme - nicméně zrovna tenhle případ se omílal několikrát přímo tady, dokonce včetně té informace, že to MS přiznal... akorát ten ddworld byl první odkaz, který jsem našel,další byl na lživě a dál se mi hledat nechtělo.
Nevim, přijde mi lepší dělat programy rovnou jako multiplatformní, když tomu nic nebrání.No myslim, ze pouziti te knihovny z hlediska multiplatformovosti neni zas tak velka vyhra. Proste namisto relativne standardniho rozhrani (pthreads) by tvuj program vyzadoval rozhrani nejake vice ci mene obskurni multiplatformni knihovny. Treba to ITBB jsem ani nenasel v Debianu, takze bud spatne hledam, nebo jde o znacne obskurni knihovnu, ktera na prevazne casti Linuxovych systemu neni nainstalovana. A mit takovou knihovnu v zavislostech je otrava. To uz by bylo lepsi se podivat po knihovne implementujici pthreads pro ruzne platformy. Kdyz se objevi nova platforma, tak bych cekal, ze pro ni spis nekdo implememntuje pthreads, nez nejakou obskurni knihovnu.
Nevim, jsou pthreads dostatečně multiplatformní? Třeba jednou budeš používat nějaký neposixový operační systém, co můžeš vědět.No, zatím bych se chtěl naučit s pthreads (chci psát pro Linux/Unix) a pokud to někdy budu potřebovat, naučím se holt jiný. QThread bude asi následovat.
No hlavně je to vlastnost dané úlohy. Viz. http://en.wikipedia.org/wiki/Amdahl's_lawTeda podpořit tvrzení o "vlastnostech úlohy" odkazem na tvrzení, kde se o vlastnostech úlohy ani nemluví, to je teda síla. Kdyžtak http://en.wikipedia.org/wiki/P-complete.
OpenMP není pro clustery, ale právě pro paralelní programování se sdílenou pamětíJinak to se snad nějak vylučuje?
java.util.concurrent je velmi chladné a vládnoucí (a já sprostý plagiátor).
A podle mne by to rozmáčklo sotva laboratorní krysu, zas bych to nepřeháněl. Je to prostě šikovně navržená a kvalitně implementovaná knihovna pro paralelismus tak, jak se dneska obvykle provozuje (zámky, jednoduché atomické operace, thread-safe datové struktury), určitě takové existují i pro to C++.
Myslím, že STM, Haskell, Erlang - možná i Ada
- ukazují cestu k programátorskému spasení.
x264 zpracovává víceméně hafo nezávislých bloků, takže vlákýnka nemusejí sdílet moc read/write stavu.
Nejjistejsi zpusob, jak programovat vicevlaknove je to nepouzivat.Přesně tak, přece nebudeme procesor přetěžovat současnou prací všech čtyř jader naráz... Co já bych dal za to, aby
mdX_raid5 uměl počítat paritu na obou jádrech naráz a já neměl rychlost zápisu jenom 30MB/s.
Alespoň co se týče promarněného času.
Může sice udělat vícevláknové vyčíslování integrálu, kde se mu to opravdu zrychlíto se mi nezda, kdyz se stejne budou ty vlakna delit o procesorovy cas
Síťoví démoni sice typicky jsou vícevláknoví (nebo spíš víceprocesoví), ale jednotlivé instance spolu moc nekomunikují.
Na mém počítači je poměr interaktivních gui aplikací na paralelizovatelné výpočty tak 1000:1 :-)
Překvapivě existují i počítače, kde je to naopak. :-)
Síťoví démoni sice typicky jsou vícevláknoví (nebo spíš víceprocesoví), ale jednotlivé instance spolu moc nekomunikují.
Jak kdy. Psal jsem jednoho takového, kde mne ani nenapadlo nepoužít thready, protože bych stejně musel většinu datových struktur řešit přes sdílenou paměť.
naučit se naprogramovat nějaké základní datové struktury (seznam, mapa) tak, aby byly použitelné ve vícevláknovém prostředíOno jedna věc je naprogramovat takovou strukturu tak, aby byla thread-safe, a druhá věc je, aby byla v paralelním prostředí rozumně výkonná a hlavně škálovatelná. To druhé je předmětem specializovaných vědeckých konferencí, na kterých publikují lidé typu Doug Lea. Když jsem četl, jak je v
java.util.concurrent implementován spojový seznam, tak mi vstávaly vlasy hrůzou na hlavě
návrhový vzor Jedináček (Singleton) s odloženým (lazy) vytvořením, kdy je potřeba zajistit, aby vznikl jen jeden objekt, ale aby se nemohlo stát, že nějaké vlákno dostane napůl vytvořený objektTo je vůbec zajímavá problematika. Double-checked locking?
Ono se to pak komplikuje požadavky reálného světa, kdy je třeba potřeba singleton občas reinicializovat apod., a většinou se dojde k tomu, že požadavek na jednu jedinou instanci je vlastně neopodstatněný, a že pokud už stačí jeden jediný objekt, pak tři nebo čtyři inicializace, z nichž se posléze po většinu času bude používat jenom jedna, vlastně ničemu nevadí. A vůbec, http://tech.puredanger.com/2007/07/03/pattern-hate-singleton/
Nicméně, souhlasím, to všechno je pro učení dobré. Ale je těžké si ověřit, že jsem to udělal správně, a je těžké pak nepodlehnout pokušení takový vlastní výtvor používat
To druhé je předmětem specializovaných vědeckých konferencí, na kterých publikují lidé typu Doug Lea. Když jsem četl, jak je vNáhodou, doporučuji si přečíst ten odkazovaný dokument, případně další články dvojice Michale&Scott. Také jsem si přečetl něco o teoretické konstrukci použité pro dokázání korektnosti (Linearizability, Herlihy&Wing). Moc zajímavé čtení. Každopádně platí, že nemá smysl vymýšlet nějakou vlastní thread-safe datovou strukturu.java.util.concurrentimplementován spojový seznam, tak mi vstávaly vlasy hrůzou na hlavě
na glorifikovaném Turingově strojiMyslím, že se dokazuje výpočetní ekvivalence Turingáče a lambda kalkulu, takže za glorifikovaný Turingův stroj bych klidně mohl označit i Lisp :-P
(map (lambda (x)
(* 2 x))
seznam)
int *
vrat_dvojnasobek(int *pole, int delka)
{
int *vysledek = malloc(sizeof(int)*delka);
int i;
for(i=0; i<delka; i++)
vysledek[i] = pole[i]*2;
return vysledek;
}
Kdybys byl kompilátor, v kterém případě bys rychleji (s menším množstvím výpočetních cyklů strávených přemýšlením nad jednotkou kódu) poznal, že dotyčný kus kódu vrací složenou datovou strukturu téže délky, jakou přijímá na vstupu, a že každý prvek výstupu je "čistou funkcí" (bez vedlejších účinků) vstupu, takže je možno v případě (kdyby byl výpočet výstupního prvku o složitější a trval o dost déle, než jedna iterace traverzování té struktury) rozhodit výpočet na víc procesorů na úrovni jazyka? Java je v tomhle třeba o něco dále, než Cčko, ale taky pořád žádná sláva, vlastně skoro vůbec žádná sláva. Aspoň že ty ukazatele jsou fuč.
Člověk sice třeba u Haskellu musí dost změnit způsob přemýčlení, ale myslím, že se nám za třicet let budou haskellisté smát, až se budou za břicho popadat, protože jim ty STM programy a automaticky paralelizované algoritmy na šedesátičtyřjádrových noteboocích s procesory Intel Core 7 Sexagintaquattuor prostě budou běhat mnohem líp, než jak dobře bude běžet JBoss 23.1 na Javě 17.
Na druhou stranu je možné, se Haskell v té době bude jmenovat Java NG (jako Next Generation), nebo že Java 17 se sice bude jmenovat Java, ale sémanticky to bude Haskell.
("Přiřazení jsme zrušili, mutable data nejsou dobrý nápad, zvláště se zamykáním na 64core procesorech, a navíc jsme ten GC zase vylepšili, takže mašině to tolik nevadí, a koukejte si zvyknout, holomci."
)
) paralelizace v těchhle jazycích není zrovna triviální. Takže se na to dělají knihovny (java.util.concurrent, pro Javu 7 rozšíření Fork-Join) i nové jazyky (X10). Že by se z Javy (jazyka) stal Haskell si nemyslím, ale je dost možné, že na Javě (platformě) bude za těch třicet let nějaká podobná potvornost dominovat.
Nebo se může stát, že někdo někde ty vrahy sežene, protože bušiče kódu v Javě vychováš snadno, ale bušiče kódu v Haskellu? Pochybuju. To spíš v tom Lispu, který nemá s přiřazením ani vedlejšími efekty problém
Nebo v tom Erlangu, no.
Já myslím, že stačí počkat, až se javisté smíří s existencí STM, Concurrent Haskellu a Erlangu a vzdají pokusy o vláknový paralelismus složitých algoritmů na glorifikovaném Turingově stroji.Složité algoritmy a Java? Kde kupuješ matroš?
A vůbec, celá tato diskuse mi připadne absurdní. Ten kdo implementuje nějaké výpočty snad ví co dělá a dokáže posoudit různé prostředky (no, alespoň předpokládám).
Ovšem drtivá většina všech programů jsou buď GUI klikátka (paralelismus slouží k tomu, aby se pěkně překreslovala okénka i při čekání na I/O) a nebo aplikace přehazující hromady dat sem a tam (kde paralelizace slouží k tomu, aby se dosáhlo co největší propustnosti při čekání na I/O).
Jo a potom ještě počítačové hry, uznávám.
AtomicInteger nebo AtomicLong. Navíc pokud nevadí, že se ta jediná instance vytvoří hned při vytvoření třídy, dá se opravdový Jedináček zařídit v Javě snadno.
Ale je těžké si ověřit, že jsem to udělal správně, a je těžké pak nepodlehnout pokušení takový vlastní výtvor používatTo je asi nejtěžší na vícevláknovém programování. Pokud je nějaká chyba v synchronizaci, projeví se jenom občas a to ještě zpravidle někde úplně jinde, než kde je problém. A ani pak nestačí program ladit v debuggeru, protože ten úplně změní chování aplikace a k problému zpravidla nedojde. Takže většinou je jediná možnost – přečíst si příslušný zdrojový kód, pochopit ho a pak si logicky zdůvodnit, jestli ten kód je správně nebo špatně. Úplně jak za starých časů, kdy žádné debuggery neexistovaly.![]()
Datové struktury pro vícevláknová prostředí jsem myslel právě takové, které budou nejen thread-safe, ale budou se chovat nějak „rozumně“. Což nemusí být jen škálovatelnost. Existují i různé speciální případy – nějaká datová struktura se může nejprve jen vytvořit a naplnit, a pak už se z ní jenom čte – pak je zbytečné při každém čtení kontrolovat zámek. Nebo poměr čtení k zápisu je výrazně ve prospěch čtení a nevadí, že ihned po zapsání nemusí být data dostupná pro čtení jinému vláknu – pak je zase možné udělat zápis složitější a náročnější na paměť s tím, že čtení bude opět bez kontroly zámku. To asi není chování, které by bylo rozumné a škálovatelné obecně, ale někdy se hodí.Myslel jsem škálovatelnost co do počtu současně běžících (přistupujících k dané struktuře) vláken, což myslím popisuje i ty zvláštní případy. Ale jasně, požadavky jsou různé. Jinak ty zvrhlosti, které vymýšlejí šílení vědci, se právě týkají např. bezpečného souběžného přístupu k datové struktuře bez zamykání (třeba v Javě se dá s výhodou využít zápisu do
volatile proměnné pro synchronizaci viditelnosti, brr
).
To je asi nejtěžší na vícevláknovém programování. Pokud je nějaká chyba v synchronizaci, projeví se jenom občas a to ještě zpravidle někde úplně jinde, než kde je problém. A ani pak nestačí program ladit v debuggeru, protože ten úplně změní chování aplikace a k problému zpravidla nedojde. Takže většinou je jediná možnost – přečíst si příslušný zdrojový kód, pochopit ho a pak si logicky zdůvodnit, jestli ten kód je správně nebo špatně. Úplně jak za starých časů, kdy žádné debuggery neexistovaly.Za starých časů si člověk pořád ještě mohl udělat aspoň ladicí výpis
Jinak ty zvrhlosti, které vymýšlejí šílení vědci, se právě týkají např. bezpečného souběžného přístupu k datové struktuře bez zamykáníMyslíš Okasakiho?
Dneska je to ještě trošku scifi, tedy aspoň pro velké korporace
, ale některým lidem to zjevně funguje úplně normálně.
BTW, kdy už ten standard bude? Aby nás Microsoft se systémovými jazyky nepředehnal.
Nepřejmenovali to nedávno na C++ 201x?
Jo, bude :-P
Myslíte tuhle část? :-)
It is rather unfortunate that Linux revived this specter from the past. The BSD man page states: "This system call will be eliminated when proper system sharing mechanisms are implemented. Users should not depend on the memory sharing semantics ofvfork()as it will, in that case, be made synonymous tofork(2)."