• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    XCHAOSANSI C/C99 (specifikace), GNU C (gcc, glibc), Tiny C (tcc) a POSIX - ne nutně C++,g++,libstdc++ nebo Win32 API
    XCHAOS
    XCHAOS --- ---
    REDGUY: ale finta na dědičnost v C prostě není - a jestli je, tak mě jí ukaž a já smeknu.

    finta na polymorfismus v C je právě do té míry, že vzájemně polymorfní objekty mají stejný "interface": musí mít všechny definovanou přesně stejnou sadu stejně pojmenovaných metod (i když tyto metody pak můžeš celkem snadno přetěžovat i za chodu, apod.). polymorfismus v C++ může (podle mě, možná to nechápu) teoreticky zhranovat i polymorfismus mezi parent class a nějakou odvozenou třídou, která obsahuje nějaké metody navíc: toto v C nijak jednoduše nenapodobíš - sice můžeš mít prasecky definovanou union nad několika interfacy, jejichž začátek je stejný, a omezit volání "polymorfních metod" na společný začátek všech interfejsů - ale to už je prasení a bastlení a pochopitelně - v C můžeš přetypovat cokoliv na cokoliv jiného, když jsi dost drzý... já se bavím o tom, co je vlastně možné dosáhnout zcela bezpečně a robustně... bez obcházení typové kontroly a takových věcí...
    XCHAOS
    XCHAOS --- ---
    PIGSTER: v podstatě chápu, že ti to připadá divné - ale open source svět je obrovské vetešnictví ("bazar, nikoliv katedrála") obsahující obrovskou sbírku programátorských udělátek, které někdo ubastlil během posledních 40ti let a pak je pohodil na smetišti.

    a já jako nezávislý internetový poskytoval chodím po tomto smetišti, provádím archeologický výzkum - a hledám, jestli by nešlo předvědčit moje potenciální klienty, že by jim některá z těchto úžasných hraček šla prodat :-) a proto mi sedí i jazyk C, který se na takovéto slepování z existujících knihoven podle mě docela hodí.

    samozřejmě - pokud je na začátku zákazník, který víc co chce, tak je to problém. já opravdu kacířsky myslím, že open source / free software hnutí by si mělo vychovat zákazníky, kteří nevědí co chtějí a nechají se okouzlit tím, co už je hotové (a tady nemluvím jen o sobě, ale i o invazi nově příchozích programátorů a adminů do kdysi-mého-vlastního produkčního prostředí a o tom, jak mi to válcují :-)
    PIGSTER
    PIGSTER --- ---
    XCHAOS: ehm - pokud delas neco / cokoliv bez predesle analyzy problemu (alespon minimalni), tak to uz samo o sobe je imho docela divny (a je podle me irelevantni, jestli to delas proceduralne, objektove nebo cinnost obsahuje rezani dreva pilou).

    IMHO objektovy programovani je dobry tam, kde je mozne / se vyplati mit nejake zapouzdreni - pokud jsem schopnej identifikovat "objekt" jako sadu vlastnosti a metod, pak muzu programovat objektove. Pokud nemam objekty (poste dana uloha tak nejak neni objektova), nebo si nemuzu dovolit luxus objektoveho programovani (typicky nemam pamet, kam ty objekty davat - mam tak akorat na par globalnich promennejch a nejakej zasobnik) no tak si na to vezmu proceduralni pristup zeano.
    REDGUY
    REDGUY --- ---
    XCHAOS: že "finta" na objektový polymorfismus v čistém C lze pokládat za přímé využití základních vlastností jazyka způsobem - uplne stejne si lze predstavit jinou "fintu", ktera bude implementovat dedicnost. V okamziku, kdy musim kvuli X delat "fintu", tak proste danej jazyk X nepodporuje, ale pouze umoznuje. Uplne stejne muzu rikat, ze pomoci "finty" podporuje objektove programovani i assembler nebo Turinguv stroj.

    naproti tomu u té dědičnosti tam vysloveně není podpora pro to - uplne stejne jako tam "vyslovenene neni podpora" pro polymorfismus.

    něco jako user->address->street stačilo zapsat jako user->street (což by bylo možné v objektovém jazyce, kde by třída "user" vznikla např. rozšířením třídy "address" pouze dve poznamky - pomoci tveho "triku" je mozne metody volat primo jako objekt->metoda? No a za druhe.... pokud si tohle predstavujes jako dobrej priklad dedicnosti, tak potes panbu 8))
    XCHAOS
    XCHAOS --- ---
    btw, musím se pochlubit novým skoro-releasem ISP nástroje Prometheus... ale až bude release, tak tam vědět....

    ze starší verze svého macro-toolkitu ale sám lezu po zdi, takže celý přechod z verze 0.8.4 na 1.0 chystám, že bude jen o tom, že to portuju ze starší verze C<<1 0.6 na nejnovější :-) (která zatím neexistuje :-)
    XCHAOS
    XCHAOS --- ---
    ANT_39: ano, otázka je, kolik existuje takovýchto "chytrých virů" pro linuxové webservery, které jsou napsané tak dobře, že o nich vůbec admini nevědí :-) zase unixoví admini jsou zvláštní kasta uživatelů počítačů, která si o sobě myslí opravdu hodně, takže by bylo fakt zábavné sledovat jejich reakci :-)
    XCHAOS
    XCHAOS --- ---
    REDGUY: no.... řekl bych, že "finta" na objektový polymorfismus v čistém C lze pokládat za přímé využití základních vlastností jazyka způsobem, který není ve většině učebnic popsán - a že ty si myslíš, že autoři s tímto nepočítali, protože si v nějaké své učebnici či projektu který studoval místo toho viděl obyčejné (max. tagované) struktury předáváné funkcím - to neznamená, že autoři C byli tak krátkozrací, jak si myslíš.

    naproti tomu u té dědičnosti tam vysloveně není podpora pro to, aby něco jako user->address->street stačilo zapsat jako user->street (což by bylo možné v objektovém jazyce, kde by třída "user" vznikla např. rozšířením třídy "address" ... takže prostě pro tu dědičnost není v C vůbec žádné zázemí a odkazování na již existující datové struktury v C není dědičnost.

    mainstreamové objektové jazyky jsou podle mě obecně vhodné pro top-down přístup k návrhu programů (tedy nadefinuješ si jako analytik třídy a jejich požadované metody... a pak nějakému námezdnému coderovi zadáš jejich implementaci) ... zatímco přístup v C mě přijde dobré pro bottom-up přístup (kdy naopak poskládáš nové věci z toho, co už máš - tedy ti jsi ten, kdo ví, co všechno už má, a zkouší, co všechno by z toho šlo poskládat, aniž by existovala analýza problému)
    REDGUY
    REDGUY --- ---
    XCHAOS: že čisté C samozřejmě také umí objekty (a to včetně plného polymorfismu [...] ale tím, že nijak nepodporuje dědičnost. - coz je zjevny nesmysl. C "umi" objekty uplne stejne jako "umi" dedicnost - tj. v jazyce na to neni zadna prima podpora neni a musis si to dobastlit sam. A dobastlit si muzes jak dedicnost, tak polymorfismus (viz treba GLib, ze).
    ANT_39
    ANT_39 --- ---
    XCHAOS: Pripada mi, ze zrovna pro tenhle druh viru ti Linux k nicemu neni. Kdyby na zajimavych Iranskych sajtach meli masivni instalace RHELu, tak by proste dotycny tym nasel RHELove exploity a napsal virus pro RHEL.
    XCHAOS
    XCHAOS --- ---
    DAVIDOWITCH: jsem nějak tušil, že něco takového existuje ale neřešil to... ale že je v tom napsaný nějaký špionážní ultravirus, to mě přijde jako dobrá reklama :-) jako mě viry nikdy moc nezajímaly.. vyřešil jsem je přechodem na Linux. (větší frajeřina mě přišlo psát soft, který "zaviruje" lidi, aby ho kopírovali než soft, který se kopíruje sám :-)
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    eh, tos objevil Lua az ted, nebo jak to mame chapat?
    XCHAOS
    XCHAOS --- ---
    Offtopic/zábavné: Malware Flame byl prý částečně napsaný v jazyce Lua:
    Spy malware infecting Iranian networks is engineering marvel to behold | Ars Technica
    http://arstechnica.com/security/2012/05/spy-malware-infecting-iranian-networks-is-engineering-marvel-to-behold/
    Lua 5.2 readme
    http://www.lua.org/manual/5.2/readme.html
    Lua is a powerful, fast, lightweight, embeddable scripting language developed by a team at PUC-Rio, the Pontifical Catholic University of Rio de Janeiro in Brazil.

    ... chápete už, že moje C<<1 s jeho liberální garbage collection by zdaleka nebylo největší šíleností na daném poli? :-)
    XCHAOS
    XCHAOS --- ---
    PIGSTER: pozor - jedna z tezí tohoto klubu je, že čisté C samozřejmě také umí objekty (a to včetně plného polymorfismu - nejen holé datové struktury bez informace o tom, co s nimi jde dělat). od C++ se neliší tím, že by neumožňovalo objektově programovat - ale tím, že nijak nepodporuje dědičnost.

    ...a protože objektový zápis v čistém C je těžkopádný, tak jsem samozřejmě jeden čas uvažoval o tom, udělat nějaký pre-compiler, který by (pro člověka obtížně čitelný) objektový C zdroják generoval z něčeho, co by připomínalo běžný vyšší programovací jazyk... no ale diskuze o tomto tady už jednou proběhla ... a vlastně chybí motivace dělat to zrovna takto :-)
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    PIGSTER: Nevim.
    Jediny co mne k tomu napada je, ze tenhle compiler: http://ispc.github.com/
    ma jeste nepublikovanou konkurenci (taky od intelu, taky z graficky skupiny), ktera prelozi do C++ s intrinsicama, aby do toho pak clovek mohl vlizt a pripadne rucne upravit, a zaroven necha optimalizace na ICC.
    PIGSTER
    PIGSTER --- ---
    DAVIDOWITCH: jo - uhm - dejme tomu - kompilovat do C jako do strojoveho kodu me nejak nenapdalo - necitelny to bude asi dost no, napada me jedinej duvod, proc to delat - pouzit to jako platformne nezavislej mezistupen .... vazne by to mohlo bejt k necemu realne uzitecny?
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    Umeni triceti vterin :-)
    REDGUY
    REDGUY --- ---
    sakra, tricet vterin 8(
    REDGUY
    REDGUY --- ---
    PIGSTER: Ehm... jako treba objektove C++ do neobjektoveho strojaku? Objektovost nebo neobjektovost ciloveho jazyka nema se slozitosti kompilace zas tak moc spolecneho.
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    PIGSTER: No pockej, tak nakonec to skonci v ciste neobjektovym strojovym kodu, takze ten skok muze udelat o neco driv.. akorat to nebude uplne citelny.. a dost mozna by si tam musel vykompilovat i kus JIT masinerie
    PIGSTER
    PIGSTER --- ---
    XCHAOS: objektovej jazyk se do bezobjektovyho kompiluje dost blbe - takze leda do nejaky objektovy nadstavby (jiny nez c++, ten to uz umi)
    XCHAOS
    XCHAOS --- ---
    až to půjde zkompilovat i do C, vzbuďte mě :-)
    Haxe - programovací jazyk kompilovatelný do JavaScriptu, C#, PHP a dalších - Zdroják
    http://www.zdrojak.cz/zpravicky/haxe-programovaci-jazyk-kompilovatelny-do-javascriptu-c-php-a-dalsich/
    XCHAOS
    XCHAOS --- ---
    JIKROCENTRISTA: mě to ale nebaví... pořád se se všema hádat. víc mě baví třeba srovnávat různé programátorské postupy (samozřejmě je slušná pravděpodobnost, že s přístupem "dělá se to takhle, dělají to tak všichni, dělalo se to tak vždycky a basta" budu mít tendenci polemizovat vždy :-)
    JIKROCENTRISTA
    JIKROCENTRISTA --- ---
    XCHAOS: Ja bych preferoval doposavadni smerovani klubu, tj. "XCHAOS vs. the World", to by neslo? :)
    XCHAOS
    XCHAOS --- ---

    Jaké si přejete další směrování klubu pro nejbližší cca měsíc?

    7 hlasy od 7 respondentů

      XCHAOS
      XCHAOS --- ---
      FRONEMA: jako já tě nechci odsouvat úplně off-klub, ale rád bych tě tady udržel aspoň mírně v mezích on-topic...
      FRONEMA
      FRONEMA --- ---
      XCHAOS: ja se ochotne presunu kamkoli kde me nekdo oslovi :)
      XCHAOS
      XCHAOS --- ---
      FRONEMA: kdyby k sobě všechny ženy dodávaly návod k použití, byl by svět daleko jednodušší místo :-) (a to ne nutně ve smyslu "horší a nudnější")

      ach jo, nechcete tohle řešit spíš v [ Seznamka unixaru, unixacek, programatoru, programatorek a jine haveti pocitacove... ] ... tenhle klub je sice "seznamka programátorů a programátorek v céčku" - ale myšleno po čistě praktické stránce (např. pokud někdo chce vyvíjet společný open source projekt v C, apod.)
      XCHAOS
      XCHAOS --- ---
      HARVIE: tak ono to právě docela exaktní je... ale ženy jsou objektově orientované a často vyžadují striktní rozlišování co je public a co private (což je v tomhle klubu offtopic... v céčku a pythonu je "private" vše, co začíná podtržítkem - takový symboly se neexportují na symbol tape - což je pojem, který dokonce i mě, který začínal s kazeťákem a osmibitem, nebyl zpočátku zcela zjevný, co znamenal :-)
      FRONEMA
      FRONEMA --- ---
      HARVIE: me vzdycky prislo prirozeny "psat na sebe navody" ve smyslu "kdyz se chovam nelogicky timhle zpusobem, neposlouchej me obejmi me a chvili pockej nez to bude dobry" (samozrejme ze v praxi je to trochu slozitejsi) a mam s tim ty nejlepsi vysledky. nemyslim si ze na to aby se dalo se takhle funkcne domlouvat clovek potrebuje programatora, ale asi to pomaha. ale vseobecne, kdyz se pristihnu ze chci aby partner prave odpozoroval neco co si "durazne myslim" aniz bych to nekdy predem vysvetlila, tak mam tendenci spis vynadat sobe ze delam nesmysly a takhle stastna nebudu :)
      HARVIE
      HARVIE --- ---
      FRONEMA: Pokud nepatris mezi ty slecny, co predpokladaji, ze jejich partner jim bude na ocich a mezi radky cist jemny naznaky (aniz by si takovej kod patricne okomentovala nebo jinak zdokumentovala), ale jsi schopna vsechno rikat !exaktne" narovinu a nezabaleny do naznaku, tak jsou programatori jasna volba :-) Problem je, ze lidsky prozivani, citeni a vztahy (ty uz vubec) moc exaktni a zdokumentovany nejsou...
      Kliknutím sem můžete změnit nastavení reklam