Jonathan Thomas oznámil vydání nové verze 3.5.0 video editoru OpenShot (Wikipedie). Zdrojové kódy OpenShotu jsou k dispozici na GitHubu. Ke stažení je i balíček ve formátu AppImage. Stačí jej stáhnout, nastavit právo na spouštění a spustit.
Byla vydána (𝕏, Bluesky) nová verze 2026.1 linuxové distribuce navržené pro digitální forenzní analýzu a penetrační testování Kali Linux (Wikipedie). Přehled novinek se seznamem 8 nových nástrojů v oficiálním oznámení na blogu.
Vláda jmenovala novým zmocněncem pro digitalizaci a strategickou bezpečnost prvního náměstka ministra vnitra Lukáše Klučku. Ten ve funkci nahradil poslance Roberta Králíčka poté, co Králíček na tento post vládního zmocněnce rezignoval. Klučka chce do roka digitalizovat všechny státní služby tak, aby vyhověly zákonu o právu na digitální služby, přičemž dosavadní plán Fialovy vlády počítal s dokončením digitalizace až někdy v roce
… více »Byl vydán Mozilla Firefox 149.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Vypíchnout lze bezplatnou vestavěnou VPN s 50 GB přenesených dat měsíčně, zobrazení dvou webových stránek vedle sebe v jednom panelu (split view) nebo možnost přidat poznámky k panelům (Firefox Labs). Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 149 bude brzy k dispozici také na Flathubu a Snapcraftu.
Byly vydány nové verze 5.3.0 a 6.0.0 svobodného multiplatformního programu pro skicování, malování a úpravu obrázků Krita (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Obě verze vycházejí ze stejného zdrojového kódu – rozdíl je v použitých verzích Qt a KDE Frameworks. Krita 6.0.0 je první vydání postavené na Qt 6 a stále je považovaná za experimentální. Má lepší podporu Waylandu. Přináší podporu protokolu Wayland
… více »Byla vydána nová verze 10.2 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Přehled novinek v poznámkách k vydání. Vypíchnout lze nové balíčky Immich, Immich Machine Learning, uv a RustDesk Client.
TypeScript (Wikipedie), tj. JavaScript rozšířený o statické typování a další atributy, byl vydán v nové verzi 6.0. Příští verze 7.0 je kvůli výkonu přepisována do programovacího jazyka Go.
Christian Schaller z Red Hatu na svém blogu popsal své zkušenosti s používáním AI při vývoji open source aplikací pro Linux. Pomocí různých AI aktualizoval nebo vytvořil aplikace Elgato Light GNOME Shell extension, Dell Ultrasharp Webcam 4K, Red Hat Planet, WMDock, XMMS resuscitated (aktualizace z GTK 2 a Esound na GTK 4, GStreamer a PipeWire) a Monkey Bubble. SANE ovladač pro skener Plustek OpticFilm 8200i se mu zatím nepovedl.
Americké firmy Tesla a SpaceX postaví v texaském Austinu moderní komplex na výrobu čipů pro umělou inteligenci (AI). Součástí projektu s názvem Terafab budou dvě moderní továrny na výrobu čipů – jedna se zaměří na automobily a humanoidní roboty, druhá na datová centra ve vesmíru. Uvedl to generální ředitel těchto firem Elon Musk. Projekt by podle odhadů měl stát 20 miliard USD (zhruba 425 miliard Kč).
Byla vydána nová stabilní verze 6.11 (YouTube) multiplatformního frameworku a GUI toolkitu Qt. Podrobný přehled novinek v poznámkách k vydání.
Řešení dotazu:
Proč zrovna u++? Dodnes jsem o něm neslyšel a když se dívám, co vlastně je, to u++, zjišťuju, že to není programovací jazyk, ale jen framework, beztak v C++ napsaný. Pokud už chceš bezpointerový jazyk, zkus jazyky jako Java, C# nebo skriptovací jazyky jako Python.
A jen tak mimochodem -- existuje spousta postupů a knihoven, kterými lze pointer v C++ zabalit tak, že se vůbec nemusíš starat o dealokaci, stačí jen použít new, když vytváříš objekt smart pointeru a máš vystaráno.
To že pointre tvoria prevažnú časť chýb v kóde je štatistický fakt.
To není fakt, to je nesmysl. Chybu nedělá pointer, chybu dělá programátor.
Já jsem nikdy žádnou statistiku na tohle téma neviděl, ale odhaduju, že to vůbec nebude daleko od pravdy (zvlášť když se započítá ukazatelová aritmetika).
a spousta kódu s nimi počítá. Třeba standardní knihovna. Není tam ale ukazatelová aritmetika, takže to nebude tak hrozné.
To v praxi znamená, že do STL kontejneru je možné efektivně ukládat fundamentální typy, možná ještě tak řetězce a pár dalších jednoduchých typů. Všechno ostatní lze uložit pouze nepřímo pomocí ukazatele. Tím se ztrácí jedna ze základních výhod, kterou používaní kontejnerových šablon přináší - automatická správa paměti.
Náš názor je ten, že tento způsob řešení je zcela hloupý - vnáší zbytečný zmatek do všech rozhraní i implementací (jaký ukazatel má funkce vracet, chytrý, nebo normální?)
Správa paměti je implementační detail, na úrovni rozhraní nemá co dělat.Výňatky zrovna nespomínajú priamo chyby, ale nech si z toho každý zoberie čo chce.
delete je nízkoúrovňová operace, které by se měla používat co nejméně.
new má legitimní použití pouze ve velice speciálních případech, většinou souvisejících s polymorfií.
Chytré sdílené ukazatele jsou to nejhorší, co mohlo C++ potkat.
Pointer je totéž co ukazatel. Kdokoli píšete "pointer je", nahraďte si slovo pointer slovem ukazatel. Ono totiž "ukazatel je ukazatel" není tvrzení příliš nabité informacemi.Hledat nějaké tvrzení v polovině věty nedává moc smysl, bývá užitečné aspoň větu dočíst do konce. Rozcvičku „jak nadefinovat slovo ukazatel bez použití slova ukazatel“ si klidně udělejte, myslím ale, že tvrzení „ukazatel je ukazatel na místo v paměti“ každý rozumí.
Pointer není totéž co reference. Java, C# (kromě unsafe kódu), Python, Ruby apod. mají reference, ale nemají ukazatele. (Jenom co poznámka: významem ukazatele je adresa (přibližně). Významem reference je to, co je na té adrese.)To vaše odlišení je hodně neprůhledné, ale předpokládám, že podstatou je, že reference ukazují (ukazatel ukazuje…) na data, o kterých ale nevím, jakým způsobem jsou uložena, zatímco pointer ukazuje na data, o kterých ale zároveň vím, že jsou uložena v nějakém bloku bajtů, a já můžu pracovat i s touto nižší úrovní pohledu – mám tedy k dispozici pointerovou aritmetiku. Abych se vyhnul takovémuhle vysvětlování, použil jsme jen pojem „pointerová aritmetika“, který je pro tazatele snad srozumitelnější. Zároveň si nemyslím, že pointerová aritmetika je to, co tazatele trápí, protože úplně stejné chyby, jako u pointerové aritmetiky, mohou vznikat při jiných způsobech převádění mezi datovou strukturou a blokem bajtů (třeba práce se soubory nebo síťová komunikace).
Ano, všechny parametry v Javě se předávají hodnotou, ano, reference jsou implementovány použitím ukazatelůTak ciste formalne vzato, reference nemohou byt implementovany pomoci ukazatelu. To ze se tomu tak v Jave rika je druha vec.
ne, reference nejsou ukazatele.Na tom se shodneme, reference vazne ukazatele nejsou :)
Jak z takové javovské reference získáte tu adresu v paměti? (Nápověda: nezískáte, a ona se dokonce v čase mění!)Nijak. V Jave neni ukazatelova aritmetika, ktera by to umoznovala. Ale tento drobny nedostatek z toho porad formalne nedela referenci (coz je v podstate druhe jmeno pro nejakou promenou). Krom toho adresa kam ukazatel ukazuje se menit prave ze muze, zatimco u reference to neplati. Jde mi o tohle: i kdyz se v Jave pouziva pojem reference, jejich semantika odpovida ukazatelum. Nepritomnost ukazatelova aritmetiky na to nema vliv. Na druhou stanu to neznamena, ze by kvuli tomu Java programatori meli misto slova 'reference' zacit pouzivat 'ukazatel', akorat by se navzajem matli. Ovsem pokud mluvime o jazycich obecne a budeme je porovnavat, prijde mi lepsi drzet se nejake spolecne definice, at to porovnani ma smysl.
Pokud se dobře pamatuju, tak třeba Programming Language Pragmatics taky tvrdí, že reference je "lepší ukazatel" (velký uvozovky). Můžete dát link na nějaké jiné zdroje?
In programming language design, a "pointer" is a variable that indirectly tracks the location of some piece of data. The value of a pointer is often the memory address of the data you're interested in. Some languages allow you to manipulate that address; others do not. A "reference" is an alias to another variable. Any manipulation done to the reference variable directly changes the original variable.Prirovnal bych to k rozdilu mezi hardlinkem (reference) a softlinkem (ukazatel). Takova definice odpovida i tomu, co si pamatuju ze skoly z principu programovacich jazyku, i kdyz to tam Libor nema nikde explicitne uvedene ve stylu "ukazatel je tohle".
tak třeba Programming Language Pragmatics taky tvrdí, že reference je "lepší ukazatel" (velký uvozovky).S tim nemam problem. V jistem smyslu je to tak: jak ukazatel tak i reference nekam odkazuji - rozdil je v tom, ze ukazatel na to potrebuje extra promenou - coz v zavislosti na definici veci jako volani funkci v danem jazyku muze vykazovat jine chovani. Viz. treba strana 109 z slidu z principu, kdy je popsano volani odkazem. Btw mala perlicka na zaver: v jazyku Logo jsou referencni a dereferencni operatory pro bezne promene, presto tento jazyk nema ukazatele.
Všechno ostatní lze uložit pouze nepřímo pomocí ukazatele. Tím se ztrácí jedna ze základních výhod, kterou používaní kontejnerových šablon přináší - automatická správa paměti.Tie veci spolu súvisia. Myslím že jazyky čo nemajú (minimálne používajú) pointre, majú aj správu pamäte. Mne osobne ide o nepoužívanie pointrov, pointrovej matiky, práve kvôli zápisu, ktorý znižuje čitateľnosť kódu a samozrejme zvyšuje chybovosť. Správa pamäte je samozrejme ďalšia výhoda. Spravidla jazyky ktoré pointre nepožívajú, to vyzdvihujú ako fjučúru. (Slovo pointer som použil hlavne preto, aby sa niekto nezľakol slovenského ukazovateľa, hoci po česky je to podobné :)
V C. C++ ani Pascalu pointery používat nemusíte.Ta tečka za C je překlep, měla tam být čárka. Pár pixelů, a jak to úplně změní význam…
#!/usr/bin/env perl, bude to mít stejný efekt.
Je tu stále viac blbečkov.S tym sa neda, len suhlasit.
Je tu stále viac blbečkov.Také jsem si všiml.
Ten web máš úžasný zo 4klikovJe to možná mnohem víc než kolik si ty kdy udělal. A se stabilitou těžko něco udělám, nechce se mi platit hosting a všechny free web hostingy stojí za houby.
To v praxi znamená, že do STL kontejneru je možné efektivně ukládat fundamentální typy, možná ještě tak řetězce a pár dalších jednoduchých typů. Všechno ostatní lze uložit pouze nepřímo pomocí ukazatele. Tím se ztrácí jedna ze základních výhod, kterou používaní kontejnerových šablon přináší - automatická správa paměti.Která to se mi zdá zásadním nepochopením koncepce STL kontejnerů jako takových. STL kontejnery prostě ukládají, právě proto, aby fungovala automatická správa paměti, kopie objektů. To zda je to právě to co člověk zrovna chce je věc jiná. A ano máte pravdu, že std::auto_ptr je pro vkládání do kontejnerů zcela naprd, do kontejneru je třeba vkládat přímo kýžený objekt (ve skutečnosti kopii).
Ten blbec, který to vymyslel, naprogramoval taky kernel, díky kterému ti funguje počítač. Jak by asi vypadal kernel bez pointerů???
Asi jsem se špatně vyjádřil. Měl jsem se spíš ptát, jak by fungoval kernel bez pointerů. Na to už je jednodušší odpověď, protože na žádném dnešním hardware se kernel bez pointerů vytvořit nedá.
(Než zase někdo přijde s pohádkou o hardwarovém JVM, je dobré se zamyslet nad faktem, že na nejnižší úrovni se tak nebo tak s pamětí přímo pracovat musí.)
Že by pak pointer nebyl totéž co long? To je jistě realizovatelné, hodně tupě třeba vyhrazením 1/(délka slova) fyzické paměti na bitmapu, která bude říkat, ve kterých slovech jsou pointery. Jen mi není jasné, jak přesně by to zvýšilo efektivitu práce s pamětí. Implementace polí bude tak nebo tak vždy záviset na pointerové aritmetice.
Tiskni
Sdílej: