Před 30 lety, tj. v úterý 30. dubna 1996, byl spuštěn Seznam.cz.
Byly zpracovány a zveřejněny všechny videozáznamy, které stojí za zveřejnění, z konference FOSDEM 2026.
Od úterý 28. dubna musí nově uváděné notebooky v Evropské unii podporovat nabíjení přes USB-C. Jednotná nabíječka byla schválena Evropským parlamentem v říjnu 2022.
Byly publikovány informace o kritické zranitelnosti CVE-2026-31431 pojmenované Copy Fail v Linuxu, konkrétně v kryptografii (AF_ALG). Běžný uživatel může získat práva roota (lokální eskalaci práv). Na všech distribucích Linuxu vydaných od roku 2017. Pomocí 732bajtového skriptu. V upstreamu je již opraveno. Zranitelnost byla nalezena pomocí AI Xint Code.
Textový editor Zed dospěl do verze 1.0. Představení v příspěvku na blogu.
Vývojáři svobodného 3D softwaru Blender představili (𝕏, Mastodon, Bluesky) nejnovějšího firemního sponzora Blenderu. Je ním společnost Anthropic stojící za AI Claude a úroveň sponzoringu je Patron, tj. minimálně 240 tisíc eur ročně. Anthropic oznámil sponzorství v tiskové zprávě Claude for Creative Work.
VNC server wayvnc pro Wayland kompozitory postavené nad wlroots - ne GNOME, KDE nebo Weston - byl vydán ve verzi 0.10.0. Vydána byla také verze 1.0.0 související knihovny neatvnc.
Bylo oznámeno vydání Fedora Linuxu 44. Ve finální verzi vychází šest oficiálních edic: Fedora Workstation a Fedora KDE Plasma Desktop pro desktopové, Fedora Server pro serverové, Fedora IoT pro internet věcí, Fedora Cloud pro cloudové nasazení a Fedora CoreOS pro ty, kteří preferují neměnné systémy. Vedle nich jsou k dispozici také další atomické desktopy, spiny a laby. Podrobný přehled novinek v samostatných článcích na stránkách
… více »David Malcolm se na blogu vývojářů Red Hatu rozepsal o vybraných novinkách v GCC 16, jež by mělo vyjít v nejbližších dnech. Vypíchnuta jsou vylepšení čitelnosti chybových zpráv v C++, aktualizovaný SARIF (Static Analysis Results Interchange Format) výstup a nová volba experimental-html v HTML výstupu.
Byla vydána verze R14.1.6 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5, Wikipedie). Přehled novinek v poznámkách k vydání, podrobnosti v seznamu změ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: