abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 17:11 | Nová verze

    Byl vydán Nextcloud Hub 8. Představení novinek tohoto open source cloudového řešení také na YouTube. Vypíchnout lze Nextcloud AI Assistant 2.0.

    Ladislav Hagara | Komentářů: 0
    dnes 13:33 | Nová verze

    Vyšlo Pharo 12.0, programovací jazyk a vývojové prostředí s řadou pokročilých vlastností. Krom tradiční nadílky oprav přináší nový systém správy ladících bodů, nový způsob definice tříd, prostor pro objekty, které nemusí procházet GC a mnoho dalšího.

    Pavel Křivánek | Komentářů: 5
    dnes 04:55 | Zajímavý software

    Microsoft zveřejnil na GitHubu zdrojové kódy MS-DOSu 4.0 pod licencí MIT. Ve stejném repozitáři se nacházejí i před lety zveřejněné zdrojové k kódy MS-DOSu 1.25 a 2.0.

    Ladislav Hagara | Komentářů: 31
    včera 17:33 | Nová verze

    Canonical vydal (email, blog, YouTube) Ubuntu 24.04 LTS Noble Numbat. Přehled novinek v poznámkách k vydání a také příspěvcích na blogu: novinky v desktopu a novinky v bezpečnosti. Vydány byly také oficiální deriváty Edubuntu, Kubuntu, Lubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu MATE, Ubuntu Studio, Ubuntu Unity a Xubuntu. Jedná se o 10. LTS verzi.

    Ladislav Hagara | Komentářů: 13
    včera 14:22 | Komunita

    Na YouTube je k dispozici videozáznam z včerejšího Czech Open Source Policy Forum 2024.

    Ladislav Hagara | Komentářů: 2
    včera 13:22 | Nová verze

    Fossil (Wikipedie) byl vydán ve verzi 2.24. Jedná se o distribuovaný systém správy verzí propojený se správou chyb, wiki stránek a blogů s integrovaným webovým rozhraním. Vše běží z jednoho jediného spustitelného souboru a uloženo je v SQLite databázi.

    Ladislav Hagara | Komentářů: 0
    včera 12:44 | Nová verze

    Byla vydána nová stabilní verze 6.7 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 124. Přehled novinek i s náhledy v příspěvku na blogu. Vypíchnout lze Spořič paměti (Memory Saver) automaticky hibernující karty, které nebyly nějakou dobu používány nebo vylepšené Odběry (Feed Reader).

    Ladislav Hagara | Komentářů: 0
    včera 04:55 | Nová verze

    OpenJS Foundation, oficiální projekt konsorcia Linux Foundation, oznámila vydání verze 22 otevřeného multiplatformního prostředí pro vývoj a běh síťových aplikací napsaných v JavaScriptu Node.js (Wikipedie). V říjnu se verze 22 stane novou aktivní LTS verzí. Podpora je plánována do dubna 2027.

    Ladislav Hagara | Komentářů: 0
    včera 04:22 | Nová verze

    Byla vydána verze 8.2 open source virtualizační platformy Proxmox VE (Proxmox Virtual Environment, Wikipedie) založené na Debianu. Přehled novinek v poznámkách k vydání a v informačním videu. Zdůrazněn je průvodce migrací hostů z VMware ESXi do Proxmoxu.

    Ladislav Hagara | Komentářů: 0
    včera 04:11 | Nová verze

    R (Wikipedie), programovací jazyk a prostředí určené pro statistickou analýzu dat a jejich grafické zobrazení, bylo vydáno ve verzi 4.4.0. Její kódové jméno je Puppy Cup.

    Ladislav Hagara | Komentářů: 0
    KDE Plasma 6
     (74%)
     (9%)
     (2%)
     (16%)
    Celkem 801 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník
    Štítky: není přiřazen žádný štítek


    Vložit další komentář
    15.5.2011 11:43
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    Nemohol by si tie svoje hodnotné príspevky uverejňovať niekde inde? Určite existuje nejaký portál zameraný na tvorbu coolových web stránok v ASP.NET. Tam by sa tieto perly určite vynímali.
    ________________ avatar 15.5.2011 11:54 ________________ | skóre: 5 | blog: _
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    Ale ono sa to netýka len ASP.NET ale pochopenia základných princípov OOP všeobecne.
    15.5.2011 13:14 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    Chceš základní principy OOP všeobecně? Tak tady.
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    15.5.2011 11:46
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    skrytý komentář Náš administrátor shledal tento komentář závadným.

    Vulgární

    Zobrazit komentář
    ________________ avatar 15.5.2011 11:53 ________________ | skóre: 5 | blog: _
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    Ty choď do piče, ak sa ti nepáči, tak to nečítaj anonymný blbeček.
    15.5.2011 13:14 Karel Benák | skóre: 8 | blog: benyho
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    Přesně tohle je důvod, proč už nikde nic nepublikuju a nechávám si vše pro sebe, max. na svém webu. Na původně skvělý web se navezla vlna podobných individuí (většinou pubescentního věku) a to člověka nakonec tak otráví, že rezignuje a stáhne se.

    To že si autor vybral jako jazyk C# k prezentaci ukázek je jeho věc, všichni křiklouni a fanatičtí vyznavači jediných správných jazyků by měli na programování jako způsob obživy rezignovat. Pokud si zákazník přeje že to nakonec i přes všechna přesvědčování bude v jazyce XY, nejede přes to vlak. Vlastně jede, ale tu zakázku už realizuje někdo úplně jiný. Ale to většině studentů člověk nevysvětlí, musí si ústa natlouct sami. Je tu ale pozitivní věc, chybama (optimálně těch druhých) se chytrý člověk učí.
    Láska je jako prd, když hodně tlačiš tak z toho bude ...
    Josef Kufner avatar 15.5.2011 13:21 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    Však ono kvalita komentářů tady docela dobře odpovídá kvalitě zápisku. Ani nejde o použitý jazyk, ale o to, že je to prostě o ničem a ještě napsané dosti zmateně.
    Hello world ! Segmentation fault (core dumped)
    15.5.2011 13:26 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    souhlas, tak nejak se nemuzu dopatrat toho, co tim vlastne autor chtel rict.
    Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
    15.5.2011 13:48 Karel Benák | skóre: 8 | blog: benyho
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    Ano, kvalita zápisku je mizerná, ale reagovat na to takovými vulgaritami, to si koleduje o ... např. o ban.
    Láska je jako prd, když hodně tlačiš tak z toho bude ...
    gtz avatar 15.5.2011 14:13 gtz | skóre: 27 | blog: gtz | Brno
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    Zde se banány nerozdávají :-)
    - nejhorší jsou trpaslíci ... Ti Vám vlezou úplně všude
    ________________ avatar 15.5.2011 17:11 ________________ | skóre: 5 | blog: _
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    tak je mizerná ja nie som spisovateľ
    Luboš Doležel (Doli) avatar 17.5.2011 11:25 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    Snažit se na linuxovém portále o ban je jako vylepovat v ghettu plakáty o nelegalitě šíření drog.
    15.5.2011 12:41 lukove
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    mne sa to nahodou paaaci len by to chcelo trosku do detailov a tiez aky je rozdiel medzi objektovym programovanim v C++ a Objective C to by ma zaujimalo kedze zaklady klasickeho OOP uz vsetci asik mame

    ja som sa prvykrat k OOP dostal cez Pascal ale C++ to ma uzasne urobene
    15.5.2011 15:21 Tomáš
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    Na tohle bych doporučil články Ondřeje Čady. Na jeho stránkávh se asi dá proklikat na polemiku s Viriem.
    17.5.2011 18:05 Miloslav Ponkrác
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    Jakékoli polemiky Ondřeje Čady s kýmkoli nemají smysl moc číst. Ondřej Čada se chová jako kníže Schwanzenberg, prostě tak to je i kdyby to tak nebylo.

    On nediskutuje a neumí diskutovat. Četl jsem jeho web, knížky i tu polemiku, stejně jako jeho komentáře na dfens.

    Můžete si poslechnout, nebo přečíst jeho názory – jsou zajímavé, chytré, s mnoha postřehy.

    Na druhé straně mu velmi unikají detaily. Nejvíce to bylo vidět v jeho knize, kde každá stránka jiná. Například nesmyslně překládá anglické či zažíté OOP termíny do češtiny, aby na druhé straně uvedl stránku, kde bez angličtiny jí prostě nepochopíte - její smysl.

    Ondřej Čada je chytrý, ale dialogy, kdy s nikým diskutuje jsou vlastně jeho monology, kdy de facto druhého nebere v úvahu.
    17.5.2011 18:01 Miloslav Ponkrác
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    Je to nebe a dudy.

    C++ je staticky typovaný jazyk včetně staticky typovaných objektů po vzoru jazyka Simula.

    ObjectiveC je z hlediska OOP beztypový dynamický jazyk, který je jen prekabátěným Smalltalkem.

    C++ je volný jazyk, který je multiplatfromní, rozšířený na mnoha platformách.

    ObjectiveC je jazyk, kde vázne mnoho patentů Apple, nelze ho proto zcela volně používat a díky tomu se mimo Apple moc nerozšířil.

    C++ má platný ISO standard.

    ObjectiveC je stejně jako C# nemá závazný standard, je to typu „jak udělá kompilátor Apple /ObjectiveC), nebo Microsoft (C#), tak to bude de facto standard“.

    Jinak hledat podobnost mezi implementací OOP v C++ a ObjectiveC je asi jako hledat podobnost mezi žížalou a hvězdou Alfa Centauri. Veškerá podobnost končí tím, že oba jazyky mají C v názvu.
    15.5.2011 13:08 pic | skóre: 30 | blog: Perdido_Street_Station
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    a já se těšil na něco o skialpu :)
    15.5.2011 13:40 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    Extremne nevhodne zvoleny jazyk pro ukazku early vs. late binding, plus ten text kolem je takovy.... hmmm.... podivne formulovany.

    Obecne motas pojmy (trochu diky zvolenemu prg. jazyku), staticka vs. dynamicka dynamicka vazba je neco vyrazne jineho nez casna vs. pozdni vazba, resp. staticka vs. dynamicka mna mnohem sirsi kontext, zatimco casna vs. pozdni se vaze ciste k OOP.

    Citelnost IMHO dost kazi ze se snazis kombinovat tutorial, wiki-style definicni clanek a best-practices guide. Vyber si jedno z toho. Tutorial se toci kolem jednoho zvoleneho prikladu, wiki/knizni clanek se zaobyva pouze cistymi fakty, sem tam nejaky priklad a best practices prepoklada urcitou uroven znalosti a jenom dodava rady.

    Takhle to pusobi hodne rozpacite.
    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    ________________ avatar 15.5.2011 16:41 ________________ | skóre: 5 | blog: _
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    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.

    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é.
    15.5.2011 17:36 podlesh | skóre: 38 | Freiburg im Breisgau
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    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éž.
    15.5.2011 18:44 aa
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    Zrovna na Wikipedii je napsáno, že je to 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").
    16.5.2011 09:52 podlesh | skóre: 38 | Freiburg im Breisgau
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    Ehm, a co ta sekce "Late static"? Podle této definice je to oxymoron...

    Je pravda že se se "early" a "static" používají jako synonyma (resp. někdo používá to, někdo ono), ale to je normální terminologický bordel. Důležité není jaká slova používáme (musíme jejich význam ale předem deklarovat, s tím má spousta lidí mentální problém), ale zda těch slov je dostatek pro celou problematiku. Což v tomto případě není: rozdíl mezi oběma příklady v sekci "Late static" nelze popsat pokud máme pouze dvě.
    15.5.2011 20:45 JS
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    Uprimne receno, radeji bych si precetl neco o F# (i kdyz si myslim, ze to asi bude bastl) nez tohle. Na pojmech moc nezalezi (a jak uz zde nekdo zminil, vase vnimani pojmu je silne ovlivnene zuzenym pohledem na svet skrz .NET), podstatne je, co delate a proc.
    ________________ avatar 18.5.2011 14:06 ________________ | skóre: 5 | blog: _
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    Žiaľ ľudia sa radšej dohadujú, chytajú za slovíčka, a vôbec im nevadí, že každý chápe svoje pojmy inak. Aspoň v takýchto diskusiách by sa mali pojmy jednoznačne zadefinovať a dodržiavať.

    >>vase vnimani pojmu je silne ovlivnene zuzenym pohledem na svet skrz .NET

    Pamatám si že rovnaká terminológia sa používala už pred 15timi rokmi v Pascale a C++, keď ešte platforma .NET ani neexistovala.
    15.5.2011 20:41 JS
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    Presne tak, autorovi by neuskodilo, kdyby se alespon zbezne seznamil s OOP v jinych jazycich (treba s CLOS), driv nez tady bude ostatni poucovat, co chapou a co ne.. Uz jsem se mu to snazil jemne naznacit, ale zrejme to neslo.
    rADOn avatar 16.5.2011 13:35 rADOn | skóre: 44 | blog: bloK | Praha
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    Pleteš si pozdní vazbu a virtualní metody. Virtualní metoda je jen hledání v predžvýkané a principiálně omezené tabulce. Opravdová pozdní vazba… těžko popsat jak moc je to jiné. Zkus se zamyslet nad následujícím kouskem pythonu:
    >>> 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 :-)
    "2^24 comments ought to be enough for anyone" -- CmdrTaco
    16.5.2011 13:55 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    Co ma proboha to co popisujes spolecneho s pozdni vazbou?
    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    rADOn avatar 16.5.2011 15:31 rADOn | skóre: 44 | blog: bloK | Praha
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    Čemu konkrétně na tom nerozumíš?
    "2^24 comments ought to be enough for anyone" -- CmdrTaco
    17.5.2011 10:15 Let_Me_Be | skóre: 20 | blog: cat /proc/idea/current | Brno
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    Ja tomu rozumim, ale nechapu co to ma spolecneho s pozdni vazbou. Tohle je prece normalni dynamicke pretypovani. V kompilovanych jazycich to sice nepujde napsat takhle jednoduse (ale obvykle to taky pujde).
    Linked in profil - Můj web - Nemůžete vyhrát hádku s blbcem. Nejdřív vás stáhne na svoji úroveň a pak ubije zkušenostmi.
    rADOn avatar 17.5.2011 18:24 rADOn | skóre: 44 | blog: bloK | Praha
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    Nedával jsi pozor. Nejde o to přetypování (ačkoliv bys zjistil, že to jde značně nad rámec toho co se dá přetypováním udělat v kompilovaném jazyce), ale o to že cílový typ vznikl až po samotné instanci. Ani dynamic_cast tě nenechá přetypovat na něco co v době kompilace neexistuje. A pokud nejsi na nějaké exotické architektuře (neuměl by tohle náhodou LISPpový hardware?) tak to ani nikdy umět nebude, protože proces kompilace zahodí klíčové informace (jména, typy etc) a nahradí je statickým offsetem v paměti. Ergo buď máš pozdní vazbu, nebo zkompilovaný strojový kód. Obojí ne. (Javu&co. do toho netahej, tam se slovem "kompilace" myslí něco jiného).
    "2^24 comments ought to be enough for anyone" -- CmdrTaco
    Josef Kufner avatar 17.5.2011 20:40 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    A co takový Haskell? Ten má 'late' kde co a kompilovaný je.
    Hello world ! Segmentation fault (core dumped)
    17.5.2011 20:42 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    Co se myslí slovem kompilace v případě dynamicky typovaných jazyků kompilovaných přímo do strojového kódu, pokud jde např. o JavaScript implementovaný ve V8? Protože, marná sláva, pokud máš dojem, že kompilované jazyky nejsou schopné introspekce (pro introspekci jsou potřeba prakticky stejné informace jako pro dynamické typování), závádíš pojmy neslučitelné se zbytkem světa.
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    16.5.2011 16:23 aa
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    V kompilovaném jazyce to možné je.
    rADOn avatar 16.5.2011 17:10 rADOn | skóre: 44 | blog: bloK | Praha
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    Jasně, napíšeš si vlastní virtuální stroj.
    "2^24 comments ought to be enough for anyone" -- CmdrTaco
    16.5.2011 19:07 Ondrej 'SanTiago' Zajicek
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    Ne proste nahradim pointer na tabulku virtualnich metod dane tridy na jinou, treba i vytvorenou za behu z closures. To jsou vsechno veci, ktere bez problemu jdou udelat v kompilovanych jazycich. Jina vec je, jestli je ma opravdu smysl delat.
    rADOn avatar 16.5.2011 19:28 rADOn | skóre: 44 | blog: bloK | Praha
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    Nevím jestli je rozumné nazývat hrabání do tabulky virtuálních metod „bez problému“, já bych se spíš klonil k popisu „říkání si o problémy“ :-)

    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.
    "2^24 comments ought to be enough for anyone" -- CmdrTaco
    16.5.2011 21:07 aa
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    Například v C# lze generovat kód za běhu (i datové typy) pomocí System.Reflection.Emit a podpora dynamického typování je tam prostřednictvím klíčového slova dynamic.
    17.5.2011 18:17 Miloslav Ponkrác
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    Radon: Každý člověk, který napíše, že v kompilovaném jazyce něco možné není se na 100% mýlí.

    Python de facto nemá vůbec typované třídy. Každá instance, tedy každá proměnná si (naprosto stejně jako třeba v kompilovaném jazyce ObjectiveC, abych narušil tu debilitu s tím tvrzením) je de facto vnitřně stále stejná věc, která si nese namespace metod a namespace datových členů.

    Python nectí definici třídy, klidně můžete do jedné instance třídy X přidat datové člen navíc, který u jiné instance třídy X nebude existovat.

    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ů.

    Pak není problém vyměnit typ. OOP není závislé na jazyce, i v čistém C se dá programovat objektově.

    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. Nic víc Python jako objekty nemá. Změnou ukazatele na hašovací tabulku metod změním třídu.

    Smalltalk a ObjectiveC je ještě jednodušší, tam je hašovací tabulka jen jedna, protože se zvenku volají jen metody.
    17.5.2011 18:22 Miloslav Ponkrác
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    Možná by chtělo dodat, že Smalltalk a ObjectiveC je jednodušší, ale mocnější. Jdou tam triky, které mnohonásobně překračují možnosti Pythonu.

    Kromě toho ve všech zmiňovaných jazycích kromě Pyhtonu je také záruka, že Rossum se zítra nenasere a nezmění nekompatibilně syntaxi Pythonu jako to udělal s Pythonem 3 a nezpůsobí tím jen tak z plezíru všem programátorům problému aniž by to bylo odůvodněné pořádnou porcí benefitů. To je tak, když Python je hračka pana Rossuma, který si s ní udělá co ho namane a ne seriózně dělaný jazyk.
    rADOn avatar 17.5.2011 20:03 rADOn | skóre: 44 | blog: bloK | Praha
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    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 :-)
    "2^24 comments ought to be enough for anyone" -- CmdrTaco
    17.5.2011 21:34 Miloslav Ponkrác
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    „Kdybych chtěl takhle slovíčkařit, tak třeba C++ není jazyk ale nadstavbová knihovna nad C.“

    A pes je vyšší stupeň a rozšíření člověka, protože pes i člověk mají uši.

    To je asi stejně přiléhavé jako s tím C++ a nastavbová knihovna nad C.

    ===

    „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.“

    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š.
    rADOn avatar 18.5.2011 11:30 rADOn | skóre: 44 | blog: bloK | Praha
    Rozbalit Rozbalit vše Re: OOP statické vs. dynamické viazanie
    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.
    "2^24 comments ought to be enough for anyone" -- CmdrTaco

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.