Vývojář Alexandre Gomes Gaigalas na GitHubu zveřejnil c89cc.sh, parser a kompilátor jazyka C89 napsaný v pouhém jediném skriptu o přibližně 8000 řádcích čistého bashe (bez dalších externích závislostí), který generuje ELF64 binárky pro x86-64. Jedná se o velmi jednoduchý kompilátor, který nepodporuje direktivy #include a dokonce ani funkci printf (lze použít puts), všechny dostupné deklarace lze nalézt v proměnné _BUILTIN_LIBC na konci skriptu. Skript je volně dostupný pod ISC licencí.
Francouzská vláda oznámila, že v rámci strategie 'digitální suverenity' zahájí 'přechod od systému Windows k počítačům s operačním systémem Linux' (sa sortie de Windows au profit de postes sous système d'exploitation Linux). DINUM (meziresortní ředitelství pro digitální technologie) požádalo ministerstva, aby do podzimu 2026 vypracovaly konkrétní plány nasazení Linuxu. Francie již dříve migrovala části státní správy na otevřená řešení.
Nezisková organizace Electronic Frontier Foundation (EFF) hájící občanské svobody v digitálním světě po téměř 20 letech opouští platformu X (dříve Twitter). Na platformách Bluesky, Mastodon, LinkedIn, Instagram, TikTok, Facebook, Threads a YouTube zůstává.
Terminálový textový editor GNU nano byl vydán ve verzi 9.0. Vylepšuje chování horizontálního posouvání pohledu na dlouhé řádky a chování některých klávesových zkratek. Více v seznamu změn.
Ministerstvo financí ve spolupráci s finanční správou dnes představilo beta verzi aplikace využívající umělou inteligenci pro předvyplnění daňového přiznání. Není třeba přepisovat údaje z různých potvrzení, ani hledat správné řádky, kam údaje napsat. Stačí nahrát dokumenty a využít AI.
Výrobce počítačových periferií Keychron zveřejnil repozitář se schématy šasi klávesnic a myší. Licence je restriktivní, zakazuje většinu komerčních užití a v podstatě jsou tak data vhodná pouze pro výukové účely, hlášení a opravy chyb, případně výrobu vlastního příslušenství.
Správce balíčků APT, používaný v Debianu a odvozených distribucích, byl vydán ve verzi 3.2 (seznam změn). Mezi novinkami figurují nové příkazy pro práci s historií, včetně vracení transakcí.
Společnost Anthropic oznámila Projekt Glasswing a s ní související AI model Claude Mythos Preview. Jedná se o iniciativu zaměřenou na kybernetickou bezpečnost, do které se zapojily velké technologické společnosti Amazon Web Services, Anthropic, Apple, Broadcom, Cisco, CrowdStrike, Google, JPMorganChase, Linux Foundation, Microsoft, NVIDIA a Palo Alto Networks. Anthropic věří, že nový AI model Claude Mythos Preview dokáže
… více »Firma Ojective Development vydala svůj nástroj pro monitorování a řízení odchozích síťových připojení Little Snitch i pro operační systém Linux. Linuxová verze se skládá ze tří komponent: eBPF program pro zachytávání provozu a webové rozhraní jsou uvolněny pod GNU GPLv2 a dostupné na GitHubu (převážně Rust a JavaScript), jádro backendu je proprietární pod vlastní licencí, nicméně zdarma k použití a redistribuci (cena přitom normálně … více »
Vojenské zpravodajství (VZ) se v březnu zapojilo do mezinárodní operace proti aktivitám hackerské skupiny APT28, která je spojovaná s ruskou vojenskou zpravodajskou službou GRU a která přes slabě zabezpečené routery prováděla kybernetické útoky na státní a další organizace v ČR i zahraničí. Operaci vedl americký Federální úřad pro vyšetřování (FBI) a jejím cílem bylo odebrat útočníkům přístup k napadeným zařízením a ty následně … více »
(Had si cestu najde...
) Jenom mě trošku zarazila věta "jak je videt, polymorfismus funguje skvele" - kde přesně je tam vidět polymorfní chování? (Ano, je možné, že jsem puntičkář, vím to...
)
>>> class trida1: ... pass ... >>> class trida2 (trida1): ... pass ... >>> obj = trida2() >>> isinstance(obj, trida1) True >>> # jak je videt, polymorfismus funguje skvele(
obj je instancí trida2, která dědí z trida1, proto isinstance vrací True - tady to vidím já)
.
Jinak ja osobne teda na prekladu jedne stranky standardni dokumentace http://docs.python.org/lib/built-in-funcs.html nevidim zadny prinos a nechapu smysl tohoto serialu.
class A:
def x(self):
print "h"
class B:
def x(self):
print "f"
#a tady trochu "polymorfisujeme"
A().x()
B().x()
)
Python polymorfismus neumí, jako dynamický jazyk ho nepotřebuje.
Lze emulovat introspekcí.
Polymorfismus – odkazovaný objekt se chová podle toho, jaký je jeho skutečný typ. Pokud několik objektů poskytuje stejné rozhraní, pracuje se s nimi stejným způsobem, ale jejich konkrétní chování se liší. V praxi se tato vlastnost projevuje např. tak, že na místo, kde je očekávána instance nějaké třídy, můžeme dosadit i instanci libovolné její podtřídy (třídy, která přímo či nepřímo z této třídy dědí), která se může chovat jinak, než by se chovala instance rodičovské třídy, ovšem v rámci mantinelů, daných popisem rozhraní.No a v tom mém příkladě máš 2 objekty, rozdílného skutečného typu, poskytující stejné rozhraní, s kterými se stejně pracuje, ale jejich konkrétní chování se liší. Ještě bych mírně dovysvětlil ten příklad s dědičností v té citaci. To je příklad spíše typický pro staticky typované jazyky, kdy se kompilátor, aby byl spokojenej, musí dozvědět, zda nějaké typy jsou kompatibilní (ve smyslu stejného rozhraní). A k tomu se dá využít dědičnost a nebo třeba v javě interfaces, které s dědičností vůbec nesouvisí. No a pokud ten jazyk nepoužívá statickou typovou kontrolu, tak to samozřejmě kompilátoru sdělovat nemusíš. Ale to neznamená, že v daném jazyce polymorfismus neexistuje. Prostě polymorfismus se statickou typovou kontrolou (nebo s dědičností) souvisí velmi vzdáleně.
"Polymorfismus objektu souvisí s definicí rozhraní a jeho zjednodušením. Je to známo také pod názvem přetížení objektu (funkce, metody, operátoru). Přesnější a jasnější definice polymorfismu je zde: http://www.cs.vsb.cz/saloun/educ/C_CPP/kurs_CPP/ch02s03.html Jeho podstata spočívá, že jeden název metody (funkce, operátoru) může sdílet několik metod, které se liší pčtem parametrů nebo jejich datovými typy. Jazyk pak sám podle předaných parametrů použije správnou. "Tak to si pleteš s ad-hoc polymorfismem, který je jen jednou z inkarnací polymorfismu obecně.
On hovoří o subtyping polymorfismu.
Je pravda, že ad-hoc polymorfismus ani tak moc polymorfismem není - spíš je to statický vícenásobný dispatch podle přesného typu parametrů a nějakou tou mnohotvárností se moc nevyznačuje ani volající funkce (leda, že ta by byla polymorfní parametricky, ale to už by bylo úplně jiné kafe celkově
), ani ty volané.
Python samozřejmě polymorfismus podporuje, jinak by kód volající metody objektu nemohl být použitelný s objektem předem neznámé třídy porporujícím dané rozhraní.
. To že Python podporuje prostory jmen a v nich může mít odkazy na funkce/metody/promenne stejneho nazvu neni polymorfismus. Dynamicky jazyk polymorfismus, jako vlastnost jazyka, nema a nepotrebuje,
"To že Python podporuje prostory jmen a v nich může mít odkazy na funkce/metody/promenne stejneho nazvu neni polymorfismus."Ne, to polymorfismus není. Polymorfismus je schopnost jediné definice kódu pracovat s daty různých typů. To ale Python bezesporu (díky pozdní vazbě volání metod) umí, pokud dotyčný kód manipuluje se svými parametry prostřednictvím definovaných rozhraní.
S datovými typy polimorfismus souvisí dost úzce, viz první věta tvé citace.Však já netvrdím, že s datovými typy nesouvisí, ale tvrdím, že nesouvisí se statickou typovou kontrolou. No a zbytek viz Kyosuke. Ty si pod pojmem polymorfismus představuješ "overloading - přetěžování", což ti teda na základě wikipedie uznám jako jeden z typů polymorfismu, ikdyž stím moc niterně nesouhlasím
. Nicméně tvrdím, že když se řekne v OOP polymorfismus, tak je chybou (nebo je to minimálně matoucí) mluvit o přetěžování alias overloadingu.
class A:
def x(self):
print "h"
class B:
def x(self):
print "f"
for z in [ A(), B()]:
z.x()
x() a druha treba yable jako y() , pak objekt
co je obe splnuje, by byl IMHO kandidat na moznost uplatneni polymorfni chovani.
(Student nejsem, ale pripomina mi to trochu Freuda (viz. polymorfne perverzni chovani)
) o mnoha aspektech polymorfismu a nic takovéhohle tam nefigurovalo.
pi = [kosočtverec, čárka]
for elem in pi:
elem.nakresli()
Metoda nakresli() je jeden interface, který se pro různé typy postará o
příslušnou akci.
a = 5 #celé číslo
b = 5.2 #reálné číslo
cisla = [a, b]
for x in cisla:
print x.__div__(2) #metoda vyděldvěma()
Metoda vyděldvěma() udělá jinou akci pro integer (dělí celočíselně) a jinou akci pro float (dělí "reálně"). A
je to polymorfismus, že jo? Velmi podobně by to vypadalo i v céčku, že? Jen
s trochu jinou syntaxí. A co jaderné volání, které zjistí IP adresu síťovky?
Je to polymorfismus, když pro různé síťovky (drátové i bezdrátové) od
různých výrobců existuje jeden interface? A co funkce sinus? Je polymorfní, když na základě různých argumentů
dělá různé akce a vrací různé výsledky? A co bitová negace? Kolik zrnek
písku už je hromada?
Tiskni
Sdílej: