Byla vydána beta verze Linux Mintu 22.3 s kódovým jménem Zena. Podrobnosti v přehledu novinek a poznámkách k vydání. Vypíchnout lze, že nástroj Systémová hlášení (System Reports) získal mnoho nových funkcí a byl přejmenován na Informace o systému (System Information). Linux Mint 22.3 bude podporován do roku 2029.
GNU Project Debugger aneb GDB byl vydán ve verzi 17.1. Podrobný přehled novinek v souboru NEWS.
Josef Průša oznámil zveřejnění kompletních CAD souborů rámů tiskáren Prusa CORE One a CORE One L. Nejsou vydány pod obecnou veřejnou licenci GNU ani Creative Commons ale pod novou licencí OCL neboli Open Community License. Ta nepovoluje prodávat kompletní tiskárny či remixy založené na těchto zdrojích.
Nový CEO Mozilla Corporation Anthony Enzor-DeMeo tento týden prohlásil, že by se Firefox měl vyvinout v moderní AI prohlížeč. Po bouřlivých diskusích na redditu ujistil, že v nastavení Firefoxu bude existovat volba pro zakázání všech AI funkcí.
V pořadí šestou knihou autora Martina Malého, která vychází v Edici CZ.NIC, správce české národní domény, je titul Kity, bity, neurony. Kniha s podtitulem Moderní technologie pro hobby elektroniku přináší ucelený pohled na svět současných technologií a jejich praktické využití v domácích elektronických projektech. Tento knižní průvodce je ideální pro každého, kdo se chce podívat na současné trendy v oblasti hobby elektroniky, od
… více »Linux Foundation zveřejnila Výroční zprávu za rok 2025 (pdf). Příjmy Linux Foundation byly 311 miliónů dolarů. Výdaje 285 miliónů dolarů. Na podporu linuxového jádra (Linux Kernel Project) šlo 8,4 miliónu dolarů. Linux Foundation podporuje téměř 1 500 open source projektů.
Jean-Baptiste Mardelle se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 25.12.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.
OpenZFS (Wikipedie), tj. implementace souborového systému ZFS pro Linux a FreeBSD, byl vydán ve verzi 2.4.0.
Kriminalisté z NCTEKK společně s českými i zahraničními kolegy objasnili mimořádně rozsáhlou trestnou činnost z oblasti kybernetické kriminality. V rámci operací OCTOPUS a CONNECT ukončili činnost čtyř call center na Ukrajině. V prvním případě se jednalo o podvodné investice, v případě druhém o podvodné telefonáty, při kterých se zločinci vydávali za policisty a pod legendou napadeného bankovního účtu okrádali své oběti o vysoké finanční částky.
Na lepší pokrytí mobilním signálem a dostupnější mobilní internet se mohou těšit cestující v Pendolinech, railjetech a InterPanterech Českých drah. Konsorcium firem ČD - Telematika a.s. a Kontron Transportation s.r.o. dokončilo instalaci 5G opakovačů mobilního signálu do jednotek Pendolino a InterPanter. Tento krok navazuje na zavedení této technologie v jednotkách Railjet z letošního jara.
Od autora úplné reference Common Lispu a spolutvůrce Scheme bych čekal, že nad Javou bude neustále skřípět zuby.
new (jedinou výjimkou jsou snad jenom řetězce). Potom se nemůžeš divit, že se představy, tebe jako Smalltalkera a Herona jako Javisty, o tom co je a není objektové, tak zásadně odlišují
Navíc, za pořádek považuji spíše přístup ... všechno je seznam (Lisp), všechno je objekt (Smalltalk). Kdežto v Javě si pořád musím uvědomovat, zda pracuji s číslem, zda s metodou, zda s třídou, anebo s objektem - ne, jednoduchý přístup to opravdu není.
Taky máme zcela jiné představy o eleganci (jak už jsem dávno zjistil
), protože to, co se v Javascriptu napíše na 4 řádky, v Javě vyžaduje rozhraní, anonymní třídy a podobně. Nemůžu si pomoci, ale pro mě je stručnost zápisu (do jisté míry) znakem elegance. Zrovna v případě closures takový Python elegantní není, protože vyžaduje pár řádků navíc, jen k obejití interpreteru.
Taky máme zcela jiné představy o eleganci (jak už jsem dávno zjistil
),
Pravda pravda. Je teda fakt, že syntaxně chudé jazyky jako např. Scheme poněkud na eleganci taky ztrácí
. Mě nejde ani tak o stručnost zápisu (vždyť od toho je tu IDE), jako spíš o přehlednost (opět se neshodneme
). Nevím. Píšu trochu jinak, rád mám ve věcech jasno a podobně jako nyní v Javě jsem psal už i v C++ (přesná, dopředu promyšlená hierarchie objektů a jejich důsledné dodržování vs. spoluprogramátoři, kteří mi přenesli C kód, kde využili jeden objekt a říkali tomu program v C++ -- dle mého názoru bastl plný odkazů, pointrů, několika způsobů předávání parametů + nějaké konstrukce pro tvoření tříd apod.).
Ta jednoduchost je dulezita - cim komplikovanejsi konstrukce mi jazyk umoznuje, tim vetsi sance na nasekani chyb je. A nikdo mi to nevymluvi. To mizive procento pripadu, kdy mi to mozna usetri cas kodovani, mi za to nestoji.
Jestlipak vite, kolik chyb naleznete v kodu, ktery je psan C-like jazyku, chyby uplne banalni, ale protoze jazyk to umoznuje a prekladac Vam to neodhali, a to pouziti prirazeni misto porovnani - takovy to jedno krasne zapomenute rovnitko ... kolega ho objevil v kodu, ktery byl prohlasen za plne otestovany a funkcni a nasazeny v produkcnim prostredi. Pak se ptate "proc to tam sakra je?".
Prave me napadl jeste jeden priklad, kdy je jednoduchost lepsi. Vzpomnel jsem si na assembler na proceroech Alpha. Meli jenom par jednoduchych operaci, za to vsechny stejne delky (co do doby zpracovani instrukce) a procesor je tudiz umel zpracovavat "proudove" a paralelismu to take dost pomohlo. x86 procesory maji tunu instrukci provadejici i velmi komplikovane operace, ale nez jsem se takovou instrukci naucil pouzivat, natoz kdyz jsem mel takovy kod po sobe za pul roku precist ... to jsem zase lovil v manualu
Takže Java je jazyk, který Vám nevyhovuje, protože potřebujete IDE, abyste mohl efektivně dělat. IDE je vlastně nadjazyk nad Javou, které Vám doplňuje konstrukce, které Vám v Javě nestačí.
Vím, trochu přeháním, ale pokud IDE potřebuje zastírat nedokonalosti jazyka ...
Jestlipak vite, kolik chyb naleznete v kodu, ktery je psan C-like jazyku, chyby uplne banalni, ale protoze jazyk to umoznuje a prekladac Vam to neodhali, a to pouziti prirazeni misto porovnani - takovy to jedno krasne zapomenute rovnitko ... kolega ho objevil v kodu, ktery byl prohlasen za plne otestovany a funkcni a nasazeny v produkcnim prostredi. Pak se ptate "proc to tam sakra je?".
Jestli si myslíte, že v Javě takové rovnítko zapomenout nemůžete jste na omylu. A neznám kód, který by byl bez hromady chyb, byť funkční a nasazený a byl psát v jazyce s jednoduchými konstrukcemi, ať už je to C, Java, Pascal, atd..
Vzpomnel jsem si na assembler na proceroech Alpha. Meli jenom par jednoduchych operaci, za to vsechny stejne delky (co do doby zpracovani instrukce) a procesor je tudiz umel zpracovavat "proudove" a paralelismu to take dost pomohlo. x86 procesory maji tunu instrukci provadejici i velmi komplikovane operace, ale nez jsem se takovou instrukci naucil pouzivat, natoz kdyz jsem mel takovy kod po sobe za pul roku precist ... to jsem zase lovil v manualu
Jenže má to drobnou vadu, Alpha neprorazila. Stejně tak jako LISP, Smalltalk, Simula, a řada pěkných kvalitních jazyků. A namísto toho prorazilo hnusné C, příšerná Java, trochu kvalitnější, atd.. To je holt život, taky mě to štve, ale co nadělám.
Pak to dopadá jako u Ady, kde má frontend překladače půl milionu řádků (GNAT)
Je to jasné, jazyky pro kritické aplikace musí co nejvíc možných chyb odchytit už při překladu.
Na druhou stranu existují jazyky, které bych neváhal nazvat brutálně dynamicky typovanými (kde slovo brutálně znamená, že neexistuje principiální rozdíl mezi daty a algoritmy), jejichž počet syntaktických konstrukcí je mnohem menší, ale vyjadřovací schopnosti mnohem větší. (On je to sice stejně všechno Turingáč, ale víme, o čem mluvím.) Takže provádět některá zajímavá kouzla (teď mne napadá třeba runtime modifikace kódu) může být mnohem méně náchylné na chyby právě v nich. Je to samozřejmě proto, že tohle je zase jejich nedílná součást – i když žádnou syntaxi nemá.
Je zřejmé, že intention revealing závisí na rozmanitosti jazyka, a automatické odhalování chyb taktéž. Ale některé věci se prostě líp (a s méně chybami) píšou v jazycích, které něčím takovým nedisponují a disponovat nemohou. Ne že bych to byl někdy dělal, ale myslím, že to tak musí být 
Je to jasné, jazyky pro kritické aplikace musí co nejvíc možných chyb odchytit už při překladu.
Jenže Ada se Vám taky snaží pomoct, i když to na první pohled nevypadá. A mnohé věci v Adě miluju, třeba už jen to, že v C/C++, Javě, C# a dalších se plácám s tím, že musím zvolit správný integer správné délky, a občas jiný abych to měl rychlejší, tyhle věci se v Adě neřeší. Prostě řeknu jaké hodnoty tam chci cpát a zbytek je na Adě. Nebo neřeším jestli se proměnná předává hodnotou, nebo odkazem, protože to skoro nikdy řešit nechci. Ada vystihla, že mě zajímá, že chci vědět, jestli je parametr in, nebo out. A podpora multitheadingu a dalších věcí přímo konstrukcemi jazyka je docela blaho oproti tomu, když to musíte mastit na low level os api.
Prostě Ada vystihla, co chce programátor říct a nenutí ho říkat něco jiného. I když je to jazyk složitý, rozvláčný a ukecaný.
Na druhou stranu existují jazyky, které bych neváhal nazvat brutálně dynamicky typovanými
To je ale něco jiného, tam se tyje z toho, že data a kód jedno jsou a bezpečnost je v háji. Na druhé straně jsou to jazyky elegantní, jednoduché, a přitom velmi bohaté co do možností.
Předávání odkazu na funkci je přece jasným "obcházením" objektů. Pravda, neznám žádný návrh, jak by to mělo vypadat v Javě, ale pokud vezmu klasický odkaz na funkci, jak ji známe z C, je pak možné tohle:
Trida1 obj1 = new Trida1 (); Trida2 obj2 = new Trida2 (); obj1.metoda(obj2.jinaMetoda);
A včem je problém: metoda() z obj1 má přístup k jinaMetoda() z obj2 aniž by měla referenci na objekt obj2. Tedy volá metodu nějakého objektu, aniž by měla přístup k danému objektu. Tohle jsem myslel tím neobjektové a na tom trvám. Něco takového tuším umožňují i delegáty v C#.
) liší od rozhraní s jedinou metodou? Tedy kromě toho, že člověk nemusí psát stupidní referenceNaRohraní.Zavolej(parametr), ale napíše jen referenceNaMetodu(parametr), protože u jednometodového rozhraní není co specifikovat. Viz třeba java.awt.event.ActionListener.
Pořád nevím, co na tom je neobjektové, když to podporují Smalltalk, Ruby, Python i další. Smalltalk dokonce zapouzdřuje do objektu i samotné zavolání metody, které se dá odchytit. ^_^ Kromě toho je to docela běžný vzor a osobně mi parametrizace kódu funkcí nebo literálem kódu vyhovuje natolik, že jazyk bez téhle funkce už prostě neberu. (Smalltalk by bez toho ani nefungoval…)
Tak teď to už vůbec nechápu. Čím přesně se ukazatel na členskou funkci (a.k.a. delegát, a.a.k.a. vázaná metoda
) liší od rozhraní s jedinou metodou?
Pozor, ne rozhranní s jedinou metodou (v rozhranní nelze nic implementovat), ale třída. No a liší se právě tím, že místo odkazu na jednu jedinou metodu (tedy vlastně funkci) má k disposici celý objekt. Nemůžu si pomoct, ale přijde mi trochu nesystémové, když se s objektem manipuluje "mimo objekt". Prostě se mi příčí, že někdo bude "jen tak" volat metody, aniž by k tomu objektu měl přístup jako celku. Nevím jestli si rozumíme, už se do těch slovíček trochu zamotávám. Ale myslím, že ten ukázkový kód byl jasný.
Jinak máš pravdu v tom, že pokud se bavíme o třídě implementující pouze jednu metodu tak není větší rozdíl mezi vázanou metodou a touto třídou (nebo anonymní třídou).
Přesně tenhle názor jsem ještě nedávno zastával, ale ona ta parametrizace kódu funkcí je skutečně velmi užitečná. Po pár skriptících v Ruby jsem reference na metody (a hlavně na anonymní metody) definitivně rehabilitoval. Náhrada objektem anonymní třídy je sice možná, ale co mi vadí snad ještě víc než ta hromada zbytečného kódu pro vytvoření instance je nutnost deklarovat extra rozhraní, tohle by se mělo dát udělat na místě použití.
Jen taková poznámka na okraj: dávám přednost tomu slíznout smetanu (tj použít uzávěry v Ruby, při práci s kontejnery), než abych vědomě vymýšlel, kde parametrizovat javovskou metodu metodou.
Já jsem to teď zrovna potřeboval. Pochopitelně jsem mohl mít vedle sebe čtyři metody, každou na dvacet nebo třicet řádek, které by se lišily jedním voláním kdesi uprostřed, ale to jsem radši překousl to rozhraní a anonymní vnitřní třídy. A dal bych přednost tomu, kdybych i v Javě konečně mohl slíznout takovou smetanu. Vývoj Javy dost konzervativní na to, aby to dnešní Javisti, na které ze všech stran útočí RoRýsi, v klidu překousli.
Tiskni
Sdílej: