Byla vydána nová verze 12.0.0 vizuálního programovacího jazyka Snap! (Wikipedie) inspirovaného jazykem Scratch (Wikipedie). Přehled novinek na GitHubu.
Počítačovou hru Gravity Circuit (ProtonDB) lze do 14. června do 19:00 získat na Steamu zdarma. Napořád.
Nejnovější X.Org X server 21.1.23 a Xwayland 24.1.12 řeší 9 bezpečnostních chyb.
npm balíčky @redhat-cloud-services byly kompromitovány.
Byly publikovány informace o zranitelnosti CVE-2026-46243 pojmenované CIFSwitch v Linuxu od roku 2007. Běžný uživatel může získat práva roota (lokální eskalaci práv). V upstreamu je již opraveno.
Nvidia na své konferenci NVIDIA GTC Taipei 2026 představila řadu novinek. Společně s Microsoftem představili superčip NVIDIA RTX Spark (až 6 144 jader GPU, 20 jader CPU, 1 petaflop AI výkonu v FP4 a 128 GB jednotné paměti). První notebooky a stolní počítače s tímto čipem od Nvidie místo Intelu nebo AMD by se měly na trh dostat na podzim letošního roku.
Na Kickstarteru běží kampaň na podporu kapesního počítače s Linuxem CardputerZero od společnosti M5Stack. Postaven je na Raspberry Pi Compute Module 0. Podporuje moduly M5. Koupit lze s rozšířeními LoRa a CC1101.
Tento týden se bude vyznačovat zejména deštěm, a proto vás může zajímat, že již v úterý proběhne 63. Virtuální Bastlírna, která se bude odehrávat přímo v teple vašich domovů a bastlíren. Proto se připojte k této volné otevřené diskuzi bastlířů, techniků, vědců, ve které se probírají novinky a zajímavá témata z techniky. Mezi největší novinky bude tentokrát patrně patřit oznámení hackerského nástroje Flipper One. Zároveň úspěšně probíhá
… více »86Box (Wikipedie), tj. emulátor retro počítačů založených na x86, byl vydán ve verzi 6.0. Přibyly například zvuky pevného disku. Na GitHubu jsou vedle zdrojových kódů ke stažení také připravené balíčky ve formátu AppImage.
Byla vydána nová verze 4.6 audio přehrávače Audacious (Wikipedie). Z novinek lze vypíchnout nový plugin pro procházení soubory, podporu audio formátu Musepack SV8 nebo přechod na build systém Meson.
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.
Tiskni
Sdílej: