Oficiálně byl vydán Android 16. Detaily na blogu a stránkách věnovaných vývojářům.
Byla vydána nová verze 14.3 svobodného unixového operačního systému FreeBSD. Podrobný přehled novinek v poznámkách k vydání.
CSIRT.CZ upozorňuje, že na základě rozhodnutí federálního soudu ve Spojených státech budou veškeré konverzace uživatelů s ChatGPT uchovávány. Včetně těch smazaných.
Ač semestr ve škole právě končí, bastlíři ze studentského klubu Silicon Hill neodpočívají a opět se jako každý měsíc hlásí s pravidelným bastlířským setkáním Virtuální Bastlírna, kde si můžete s ostatními techniky popovídat jako u piva o novinkách, o elektronice, softwaru, vědě, technice obecně, ale také o bizarních tématech, která se za poslední měsíc na internetu vyskytla.
Z novinek za zmínku stojí Maker Faire, kde Pájeníčko předvedlo … více »Na WWDC25 byl představen balíček Containerization a nástroj container pro spouštění linuxových kontejnerů na macOS. Jedná se o open source software pod licencí Apache 2.0 napsaný v programovacím jazyce Swift.
Do 16. června do 19:00 běží na Steamu přehlídka nadcházejících her Festival Steam Next | červen 2025 doplněná demoverzemi, přenosy a dalšími aktivitami. Demoverze lze hrát zdarma.
Apple na své vývojářské konferenci WWDC25 (Worldwide Developers Conference, keynote) představil řadu novinek: designový materiál Liquid Glass, iOS 26, iPadOS 26, macOS Tahoe 26, watchOS 26, visionOS 26, tvOS 26, nové funkce Apple Intelligence, …
Organizátoři konference LinuxDays 2025, jež proběhne o víkendu 4. a 5. října 2025 v Praze na FIT ČVUT, spustili přihlašování přednášek (do 31. srpna) a sběr námětů na zlepšení.
Po roce byla vydána nová stabilní verze 25.6.0 svobodného multiplatformního multimediálního přehrávače SMPlayer (Wikipedie).
DNS4EU, tj. evropská infrastruktura služeb DNS založená na vysoce federovaném a distribuovaném ochranném ekosystému, byla spuštěna v testovacím režimu [𝕏]. Na výběr je 5 možností filtrování DNS.
Tento názor musím podpořit, čím méně operátorů, tím lépe. A od operátoru rovnosti chci, aby porovnával rovnost.
Stokrát lepší se mi zdá následující drzé řešení:
double q = 3.0 / 7.0; double eps = 1e-6; if (around(q, 3.0 / 7.0, eps) print("asi se rovnají"); else print("jsou rozdílné!");
x.real == y.real && x.img == y.img
. Takze sme tam kde sme byli.
complex<int> x,y; // ... nejaky kod if (x == y) // ...Ale jak říkám, považuji původní operátor == pro reálná čísla jako lepší. Kromě toho jde vždycky i v komplexních číslech napsat:
complex<double> x(1,2), y(1,2); if (abs(x - y) < epsilon) // ...Díky flexibilitě C++ není rozdíl v práci mezi reálnými a komplexními čísly.
public boolean textString(String a,String b){ return a==b; }Vrátí true pouze pro totožné objekty, Pro porovnání hodnot se musí použít
public boolean textString(String a,String b){ return a.equals(b); }
1. identita(a) == identita(b) 2. hodnota(a) == hodnota(b)První je pravda tehdy a jen tehdy, když jsou a a b tentýž objekt. V C to typicky znamená porovnání referencí (&a == &b), v Pythonu id(a) == id(b). Identita je sice obyčejně též nějaký typ jazyka, čímž se sice porovnání 1. převádí na 2., ale nebývá předefinovatelné. Málokdy má smysl pro výrazy, lze-li ho vůbec provést. Doporučuji se ovšem zamyslet, proč se id(re.match('a', 'b')) == id(re.match('c', 'd')) v Pythonu vyhodnotí jako True. Druhé porovnání je to, které si každý typ definuje, jak se mu zlíbí. Zmatek nastává, když default pro 2. je 1., nebo je to ještě hůře jinak pro jednoduché typy a pro složené... V závislosti na duševním zdraví autora třídy nemusí být == transitivní, symetrický ani reflexivní, ale my normální tyto vlastnosti očekáváme, protože jinak to není žádná relace rovnosti. Takže na IEEE == mi spíš vadí, že není reflexivní (pro NaN), než že mu chybí nějaké argumenty (co takhle přidat == hneda dva argumenty: relativní a absolutní odchylky?).
existuje pojem ako "strojove epsilon". jeho hodnota je nejaka konstanta v /usr/include/ (nepamatam pod akym menom) a teraz prichadzame na to, ze navrhari javy nepochopili C++ bool operator == (double a, double b) { return (nejaky ten zapis s abs a EPSILON); } a situacia je vyriesena k spokojnosti autora ... poznamka pre javistov: skutocne som mohol napisat: bool operator == (double a, double b) { return rand () > 0.5 ? false : true; } ale nie som predsa v sutazi o najhorsi kod ...
template<typename FloatType> bool compare_with_epsilon (FloatType number1, FloatType number2, FloatType epsilon = 1e-7) { return fabs(number1 - number2) < epsilon); }
1 ? 1 : unlink("/boot/vmlinuz");Pokud bychom ho nahradili funkcí:
ternary(1, 1, unlink("/boot/vmlinuz"));Už je vidět ten rozdíl? Nebo
and(FALSE, fn())
versus FALSE && fn()
.
Autorovi jde jen a pouze o to, že sémantika tohoto operátoru je pro většinu případů neužitečná.
U jednoho typu z… kolika? Nota bene u typu, který se v mnoha programech ani nepoužije a v mnoha dalších sice použije, ale na rovnost neporovnává…
==
lze stejně jako mnohé další přetížit. Porovnání pak může brát v úvahu nepřenosti, toleranci (epsilon) bude třeba nastavit zvlášť.
float
a double
) nejde menit.
float
nebo double
(pro fajnšmekry možná ještě long double
). A tam nekonečna patří, stejně jako NaN
. A je nutné, aby se operace chovaly korektně i pro tyto hodnoty.
==
instinktivně očekával. Je to jako overloadovat operátor +
tak, že nebude komutativní, nebo =
tak, že nebude vracet výsledek. Oboje sice v praxi jde, ale není to moc rozumné…
Nemluvě o tom, že relace '|x-y| < ε' není tranzitivní, což je vlastnost, kterou by člověk od operátoruDobrá připomínka! Dokonce nejen intuitivně: matematicky je ekvivalence relací reflexivní, transitivní a symetrickou.==
instinktivně očekával. Je to jako overloadovat operátor+
tak, že nebude komutativní, nebo=
tak, že nebude vracet výsledek. Oboje sice v praxi jde, ale není to moc rozumné…
Zdravím,
možná mi něco uniká, ale tohle řešení podle mě nic neřeší. Místo porovnání dvou nepřesných čísel na rovnost se porovnává rozdíl dvou nepřesných čísel na nerovnost s jiným nepřesným číslem. Kde je rozdíl?
Tiskni
Sdílej: