Byla vydána nová verze 5.4.0 programu na úpravu digitálních fotografií darktable (Wikipedie). Z novinek lze vypíchnout vylepšenou podporu Waylandu. Nejnovější darktable by měl na Waylandu fungovat stejně dobře jako na X11.
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.
Tiskni
Sdílej:
môžete mi vysvetilť prečo je C# nevhodne zvolený jazyk? C# ovláda najviac programátorov hneď po jave a C++ a je dostupné aj v Linuxe. v jave sú všetky inštančné metódy automaticky virtuálne. Kľudne som mohol dať aj iný jazyk napr. F# ale myslím že by mi vačšina linuxových programátorov nerozumela.To je v pořádku, problém je jinde: C# má jen omezenou škálu možností, takže pro správnou demonstraci je nutné přidat ještě další jazyky.
Tak teda napíšte aký je rozdiel medzi statickou väzbou a časnou väzbou? Možno mám medzery vo vzdelaní. Odjakživa som si myslel že je to to isté a dokonca aj podľa google je to to isté.Jeden z prvních výsledků google vede na wikipedii, kde ten rozdíl je demonstrován na PHP. Tam zřejmě ve verzi 5.3 zavedli metody třídy. A ano, metoda třídy a statická metoda není totéž.
The binding of names before the program is run is called static (also "early"); bindings performed as the program runs are dynamic (also "late" or "virtual").
>>> class C(object): pass # nova trida C ... >>> c = C() # nova instance >>> type(c) # prekvapive typu C <class '__main__.C'> >>> class D(object): pass # jina trida ... >>> c.__class__ = D # zmenime odkaz na tridu >>> type(c) # voila <class '__main__.D'>Nejenom že instance c změnila svůj typ za běhu, ale změnila ho na třídu která v době jejího vzniku ještě ani neexistovala! V kompilovaném jazyce něco takového není ze zřejmých důvodů možné, ergo snažit se vysvětlovat pozdní vazbu na C++, jave nebo nějaké jejich mutaci je marnost nad marnost. P.S. pro hnidopichy – ne, mutace instancí za běhu není v pythonu v běžná praxe. Ale je to velmi ilustrativní příklad
V každém případě je to jen velmi omezená nápodoba pozdní vazby – funguje jen pro metody, jména volaných metod musí být známá v době kompilace etc. V jazyce který si na kompilaci jen hraje (java, C#) by to asi šlo zaonačit když by člověk sáhnul dost hluboko pod kapotu. V čistém C je to nemožné, protože kompiler zahodí prakticky všechny klíčové informace, kromě toho mála v tabuli virtuálních metod. Například z atributů tříd se stanou pouhé statické a bezejmenné offsety v paměti.
System.Reflection.Emit a podpora dynamického typování je tam prostřednictvím klíčového slova dynamic.
Každý člověk, který napíše, že v kompilovaném jazyce něco možné není se na 100% mýlí.Jasně, cokoliv jde implementovat v pythonu jde napsat i v C. Python sám je koneckonců napsaný v C. Kdybych chtěl takhle slovíčkařit, tak třeba C++ není jazyk ale nadstavbová knihovna nad C. SQL není jazyk ale nadstavba databázové knihovny. TAkže ano, teoreticky máš pravdu, ale prakticky pokud v C nebudu smět využívat obory platnosti, tak už nepíšu v C. Jenom v něm kompiluju interpret nějaké jiné abstrakce.
Typy jsou v Pythonu jen předstírané, ale implementačně a vnitřně jsou všechny třídy stejné do jednoho. Asi tak jako v ObjectiveC, tak jako v PHP a v řadě dalších jazyků.To platilo před cca deseti lety. Stejně jako většina toho ostatního co jsi o pythonu napsal. Jestli se chceš hádat o pythonu, raději se ho nejdřív nauč
Ja se ale o pythonu hádat nechci, jen jsem ho dal za příklad.
Celé Pythonovské OOP lze nasimulovat jedinou strukturou/třídou v C/C++, která bude obsahovat dvě hašovací tabulky. První hašovací tabulka bude okaz na metody, druhá na datové členy. A voalá, za čtvrt hoďky mám v C++ to samé co je Python. V Pythonu/PHP to totiž přesně takto uvnitř je.Nevím jak v PHP, ale v pythonu je to úplně jinak. Jsou to skutečně hašovací tabule, ale implementována je jen jedna. Datové členy a metody se nerozlišují, metoda je prostě datový člen typu funkce. Místo toho máš jmenný prostor (tabulku) třídy nebo instance, který je sám instancí (meta)třídy. Datový člen v tabulce instance je atribut instance, stejný datový člen v tabulce třídy je to, čemu by se v C++ říkalo static. Funkce v tabulce třídy je metoda, funkce v tabulce instance je něco, pro co céčkaři teprve budou muset vymyslet jméno :-P Objektový model jen nad tímhle vším postavený v podstatě jen zabudouvanou implementací několika funkcí. Místo aby se "jen volaly metody" jak to píšeš o smalltalku, se "jen čtou atributy", to že na přečtený atribut semtam následně aplikuješ operátor volání funkce je už jiná pohádka. (Odkaz na instanci, řečený self do metody podstrčí deskriptor implementovaný v metatřídě ještě předtím) To by snad stačilo na ilustraci že za patnáct minut to ani nepochopíš, natož napíšeš :-P Metatřídy, sloty, deskriptory, dekorátory tříd a další vylepšení nastuduj za domácí úkol, manuál ti tu opisovat nebudu
Ja se ale o pythonu hádat nechci, jen jsem ho dal za příklad.“
Až na to, že jsem před rokem luštil zdrojáky interpretru Pythonu.
===
„Nevím jak v PHP, ale v pythonu je to úplně jinak. Jsou to skutečně hašovací tabule, ale implementována je jen jedna. Datové členy a metody se nerozlišují, metoda je prostě datový člen typu funkce. Místo toho máš jmenný prostor (tabulku) třídy nebo instance, který je sám instancí (meta)třídy.“
Jinak řečeno, mám pravdu. Jenom ta druhá hašovací tabulka je sdílená s více instancemi.
Mým cílem nebylo detailně popsat model datových struktur Pythonu, ale princip na kterém to sedí.
Mimochodem princip, který je v čístém C, nebo čistém C++ či jiném libovolném kompilovaném jazyce velmi rychle implementovatelný – důvodem bylo abych demonstroval jednoduchost a snadné napodobení jinde.
===
„Objektový model jen nad tímhle vším postavený v podstatě jen zabudouvanou implementací několika funkcí. Místo aby se "jen volaly metody" jak to píšeš o smalltalku, se "jen čtou atributy", to že na přečtený atribut semtam následně aplikuješ operátor volání funkce je už jiná pohádka.“
Není třeba z toho dělat složitou věc.
Je to jednoduché, OOP jazyky volají metody buď:
a) pomocí ukazatelů na funkce
b) pomocí jména funkcí (hašovacími tabulkami jí převádějí na ukazatel na funkci)
Nic jiného.
Tím se pokryje 100% popisu všech programovacích jazyků a jejich OOP implementace.
Každý způsob má své pro a proti a každý má handicapy vůči druhému způsobu.
===
„To by snad stačilo na ilustraci že za patnáct minut to ani nepochopíš, natož napíšeš“
Pokud z toho budeš dělat složitost a hogo fogo jak se snažíš, tak to nepochopíš a zamlžíš. Ale jak vidíš, v mém podání jsou věci podstatně jednodušší a přitom jsem nic neubral z faktů, které je nutné pro implementaci pochopit.
Princip implementace OOP v každém myslitelném programovacím jazyce je primitivní ať se koukneš kam chceš.
Až na to, že jsem před rokem luštil zdrojáky interpretru Pythonu.Tak jsi luštil blbě, protože jsi právě přesvedčivě dokázal že o pythonu víš kulový. Implementace kterou popisuješ by se možná poprala s php, ale s pythoním kódem nebude fungovat.