Dětem začala škola a nedobrovolně se tak musí vzdělávat. Avšak pro dospělé, kteří se chtějí vzdělávat nebo naopak se o vědomosti podělit, je tu Virtuální Bastlírna - jako každý měsíc si můžete online a zdarma nezávazně popovídat o vědě a technice nejen s bastlíři, ale i s vývojáři, vědci nebo profesory. A čemu se strahováci budou věnovat? Blíží se KiCAD 11 s nespočtem novinek, z nichž zde musí zmínit alespoň možnost kótování a závislostí z
… více »Asahi Linux, tj. Linux pro Apple Silicon, oficiálně podporuje čipy M3 (M3, M3 Pro a M3 Max).
Společnost Acer oslavila 50 let. Na tiskové konferenci next@acer představila řadu novinek. Vypíchnout lze přenosný ePaper displej Acer EP130K, přenosné řešení se třemi displeji Acer PD163Q P3 nebo herní handheld a notebook v jednom DualPlay Mini.
Server SiFive BigSky SF-2U870 2U je založený na jádře SiFive P870-D, zatím je naintegrovaných 32 jader 256 GB RAM 2 GHz, škálovat lze do 256 jader na čip. O něco podrobnější popis serveru v článku SiFive BigSky Ships the First RISC-V Server. Is the GPU Head Node the Prize? na futurumgroup.com. Asi ani tento čip nebude na úrovni nejlepších 64-bit ARMů a AMD Zenů, ale splňuje RVA23 specifikaci a je podporovaný Ubuntu 26.04 LTS a RHEL 10. V článku je
… více »Na YouTube lze zhlédnout nový celovečerní dokumentární film The Story of VS Code | Official Documentary věnovaný Visual Studio Code.
Farid Abdelnour se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 26.08.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.
Byla vydána nová stabilní verze 8.2 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 152. Přehled novinek i s náhledy v příspěvku na blogu.
Byla vydána nová stabilní verze 4.0 svobodného multiplatformního softwaru pro editování a nahrávání zvukových souborů Audacity (Wikipedie). S rozhraním přepsaným do Qt. Přehled novinek také na YouTube. Ke stažení je oficiální AppImage. Zatím starší verze Audacity lze instalovat také z Flathubu a Snapcraftu.
NVIDIA kupuje Hugging Face za 12,93 miliardy dolarů.
Na niektoré novinky C++ sa zvyká ľahko, napríklad std::function, std::span, std::string_view, concepts, pretiahnuté (Slováci, nesmejte sa) pipe operátory, coroutines atď., ale sú veci, pre ktoré nachádzam v praxi využitie len ťažko. Napr. std::move alebo r-value referencie. Vždy, keď ma napadne použiť napr. std::move, tak to vlastne ani nemá moc veľký zmysel. Pri návratových hodnotách to optimalizuje kompilátor používajúci RVO a keď tam použijem move sémantiku, tak by som správnej optimalizácii mohol skôr zabrániť zabrániť.
Ako si viem predstaviť, kde sa to preúvanie asi oplatí používať, napríklad pri práci s veľkými kontainermi, polami, teda najmä s grafikou, alebo možno pri sortovacích a vyhľadávacích algoritmoch. Párkrát som to aj použil, ale väčšinou to bola zbytočná optimalizácia, ktorá ušetrila možno jednu milisekundu. Neviete mi ukázať nejaké konkrétne prípady z reálneho sveta? Keď už mám ten C++ k dispozícii a iné jazyky túto vlastnosť nemajú (pozn: tak možno ešte Carbon a Rust??? ale o tom nemám info). Tak nech túto vychytávku využijem aspoň v jazyku, kde je to podporované.
Tiskni
Sdílej:
std::unique_ptr se bez move sémantiky nedal implementovat.
Neviete mi ukázať nejaké konkrétne prípady z reálneho sveta?Kromě výkonu a zmíněného
unique_ptr je move občas užitečný na přesunutí různých RAII guards z jednoho místa na jiné, např. zamčené zámky, otvřené soubory apod.
pozn: tak možno ešte Carbon a Rust??? ale o tom nemám infoRust nemá r-value reference, protože je nepotřebuje, move sémantiku podporuje přímo kompilátor, což je lepší v tom, že kompilátor zajistí, že přesunutou hodnotu nemůžeš na původním místě znova použít. V Rustu je move default, v C++ je default kopie. Tj. kód
foo.bar(baz); v Rustu bude move, v C++ kopie hodnoty baz. V C++ je potřeba explicitně provést move pomocí std::move(baz), v Rustu je potřeba explicitně udělat kopii pomocí baz.clone().
V Rustu je také možné přesouvat jakékoli typy, ne pouze ty, které to podporují díky správným konstruktorům. Druhá strana téhle mince je, že když je potřeba move zabránit, dělá se to trochu nešikovně přes Pin wrapper a projekce.