Byla vydána verze 1.98.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.
Byla vydána nová verze 7.1 (YouTube) svobodného open source redakčního systému WordPress. Kódové jméno Mary Lou bylo vybráno na počest americké jazzové klavíristky Mary Lou Williams (YouTube).
Bun (Wikipedie), tj. běhové prostředí (runtime) a toolkit pro JavaScript a TypeScript, alternativa k Node.js a Deno, byl vydán ve verzi 1.4. Představení novinek také na YouTube. Bun byl přepsán z programovacího jazyka Zig do Rustu. Pomocí Claude Fable 5.
Vývojáři KDE na Mastodonu oznámili vydání balíku aplikací KDE Gear 26.08. Přehled novinek i s náhledy a videi v oficiálním oznámení.
Společnost PINE64 kvůli nedostatku a vysokým cenám DRAM a eMMC dočasně pozastavuje výrobu linuxových zařízení. Výroba zařízení jako PineTime, PineVoice a Pinecil pokračuje.
Společnost Stripe se dohodla na akvizici společnosti OpenRouter. Za 7,5 miliardy dolarů.
Byla vydána nová verze 1.27 programovacího jazyka Go (Wikipedie). Přehled novinek v poznámkách k vydání.
V pátek 28. srpna se v Praze uskuteční již osmý Mobile Linux Hackday. Jako obvykle se potkáme v pražské pobočce SUSE v Karlíně na Křižíkově, takže kromě mobilního Linuxu je to tentokrát i příležitost přijít se podívat na nově zrekonstruované kanceláře. Začínáme v 10:00, ale dorazit můžete samozřejmě kdykoliv v průběhu dne. Setkáním vás provede Petr Hodina, vývojář GPU ovladačů v Mesa 3D a jeden z hlavních lidí české komunity kolem mobilního … více »
Představen byl Raspberry Pi Compute Module 5 Programming Jig. Jedná se o zařízení umožňující připravit Compute Module 5 do plně funkčního stavu bez nutnosti použití dalších vstupně / výstupních desek. Podporuje automatizaci pomocí nástroje rpi-sb-provisioner. Podrobnosti v dokumentaci.
Hackeři ve Francii ukradli data více než půl milionu daňových poplatníků. Je to jeden z největších hackerských útoků v dějinách země. O útoku z konce června informovala až teď daňová správa. Teprve od pondělí dotčeným občanům zasílá e-maily s instrukcemi, jak postupovat dál. Hackeři se sice nedostanou k penězům dotyčných, hrozí ale věrohodné podvody. Hackeři získali třeba celá jména, údaje o rodinných příslušnících nebo také údaje o
… více »
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: