• ú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
    /* Toto je klub především pro lidi, pro které je programování jednou z mnoha massive multiplayer online počítačových her, které lze hrát.
        V tomto klubu hrozí sémantická hereze a nezdravě vysoký obsah syntaktického cukru. Nevhodné pro algoritmické diabetiky.
        Od účastníků debaty se předpokládá automaticky přístup k instalovanému GNU C: sudo apt-get install build-essential
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    C (programovací jazyk)#C99 Heslo na české Wikipedii
    Jazyk C - Základy praktického programování V Praze 2oo7 pro SSPŠ Tomáš Harvie Mudruňka a kolektiv - jak si programování v C představuje většina lidí
    http://stevenkobes.com/ctest.html C Programming Puzzlers - nepouštějte se do flamewars v tomhle klubu, pokud neuhodnete aspoň polovinu správně!
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    http://en.wikipedia.org/wiki/C99 C99 is a modern dialect of the C programming language.
    http://cprogramminglanguage.net/ C programming language
    http://cprogramminglanguage.net/c-programming-language-tutorial.aspx C programming language - úvod
    http://en.wikipedia.org/wiki/Criticism_of_the_C_programming_language C makes it easy to shoot yourself in the foot. (ještě že ne do hlavy...)
    http://en.wikipedia.org/wiki/C_preprocessor
    http://gcc.gnu.org/onlinedocs/gcc/Variadic-Macros.html C99 makra s proměnným počtem argumentů - __VA_ARGS__
    http://gcc.gnu.org/onlinedocs/gcc/ GNU C Compiler
    http://gcc.gnu.org/onlinedocs/gcc-4.2.2/gcc/Optimize-Options.html
    http://bellard.org/tcc/ Tiny C Compiler - prý C99 compliant (min. umí __VA_ARGS__) - vhodný pro skriptování v C - umí #!/usr/bin/tcc -run
    http://en.wikipedia.org/wiki/International_Obfuscated_C_Code_Contest - pokud jste neviděli tohle, tak jste ještě neviděli opravdu nečitelný C zdroják
    http://bellard.org/otcc/ Obfuscated Tiny C Compiler - z tohohle vtípku vznikl Tiny C compiler
    http://en.wikipedia.org/wiki/ANSI_C Jak se střelit do nohy standardizovaným způsobem.
    http://eli-project.sourceforge.net/c_html/c.html ANSI C Specification
    http://www.lysator.liu.se/c/ Různý ANSI C bordel
    http://www.cs.rit.edu/~ats/books/ooc.pdf Object Oriented Programming with ANSI-C - a pak že to nejde
    http://en.wikipedia.org/wiki/Longjmp co jsou to setjmp()/longjmp() knihovní funkce (pro všechny, podle kterých to bez C++ try { } catch() ... nejde)
    http://groups.google.com/group/comp.lang.c++.moderated/browse_thread/thread/dcdc710c27f47c72 C neumí správně počítat (?)
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    http://www.fastcgi.com/ FastCGI is simple because it is actually CGI with only a few extensions.
    http://www.metalshell.com/source_code/18/Mysql_Select.html How to do a simple connection and select with mysql
    http://xmlsoft.org/ The XML C parser and toolkit of Gnome
    http://curl.haxx.se/libcurl/ libcurl - the multiprotocol file transfer library
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    https://dev.arachne.cz/svn/cll1h SVN/Trac jazyka C<<1 (user-friendly nadstavba nad ANSI C99 - ve stylu JQuery vs. JavaScript)
    Benchmark iterace a serializace stringů v různých jazycích vs. v C
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        moderátor se velice zhruba řídí zvyklostmi moderace, která kdysi platila v řadě konferencí sítě FidoNet ... C != 0xdead */
    rozbalit záhlaví
    REDGUY
    REDGUY --- ---
    XCHAOS: Ach boze, zase to tvoje oblibene strawman fallacy? Vsechno co jsem rekl, ze dedicnost lze v jazyce ktery ji primo nepodporuje pouzit stejne, jako lze pouzit polymorfismus v jazyce, kteru ho primo nepodporuje - cili reakce na tvuj blabol o tom, ze C "podporuje" polymorfismus. Pokud C "podporuje" polymorfismus, pak uplne stejne "podporuje" i dedicnost, protoze je to pouze o tom, ze XChaos zacal pouzivat slovo "podporuje" ve svem vlastnim, bizarnim vyznamu. Jo, jasne, v C se da programovat objektove a jestli si o tom chces neco nastudovat, precti si treba tu dokumentaci k GLibu. Ale rikat "C podporuje.."? Bah.
    XCHAOS
    XCHAOS --- ---
    REDGUY: s tak odvážným tvrzením, že knihovna může vnést dedičnost do jazyka, který dědičnost nepodporuje, si tu přišel ty :-) tak očekvám příklad.
    REDGUY
    REDGUY --- ---
    XCHAOS: to byl trolling a ne link - ale prdlajs. Chtel jsi link na GLib, dostal jsi ho. Ze sis az pozdejc vymyslel ze vlastne chces nejakej "deep link", protoze jsi neschopnej si ho najit sam je tvuj problem, ne muj.
    XCHAOS
    XCHAOS --- ---
    REDGUY: to byl trolling a ne link :-) mě spíš zajímá, kde v té dokumentaci najdu něco o dědičnosti, a jak je teda řešená.
    REDGUY
    REDGUY --- ---
    XCHAOS: Nebyl by link? Nebyl - ale byl. Ze nejsi schopnej si ho nastudovat je tvuj problem. Ostatne, uz to ze ti musim linkovat referencni manual na jeden ze zakladnich produktu open-source hnuti je znacne bizarni - to ze si v nem neumis najit to co potrebujes je jen tresnicka na dortu 8)
    XCHAOS
    XCHAOS --- ---
    REDGUY: no, ty po ostatních občase požaduješ doložit jejich různá tvrzení docela nevybíravým způsobem... já prostě použil podmiňovací způsob. Nebyl by link? Nebyl.
    REDGUY
    REDGUY --- ---
    XCHAOS: ne. myslím přímo nějaký deep link na "dědičnost" v Glib Srlsy? Opravdu nejsi schopnej si to vygooglit sam a zaroven cekas, ze to budu hledat za tebe? A dokonce ses ani neobtezoval rict kouzelne slovicko? Wow 8))
    XCHAOS
    XCHAOS --- ---
    REDGUY: ne. myslím přímo nějaký deep link na "dědičnost" v Glib: nějaké základy toho, co tato knihovna zhruba je a k čemu je a co třeba nabízí se tady už řešily (viz např. já se odkazoval na to, že moje memory pooly nejsou nápad z mojí hlavy, ale že je to v podstatě opsané mj. i z Glib... i když já na to samozřejmě kdysi přišel z jiného důvodu sám nezávisle...)
    REDGUY
    REDGUY --- ---
    XCHAOS: Ach jo. Chces link? Co treba http://lmgtfy.com/?q=glib&l=1 ?
    REDGUY
    REDGUY --- ---
    XCHAOS: (*(object->interface->metoda))(object, další parametry) - Hahahahaha. "Podpora pro polymofismus", my ass. A samozrejme, cely to pujde do prdele kdyz se bude lisit layout objektu ruznejch trid.

    No, myslim ze jsme zase u klasickeho "XChaos bere existujici slova a prirazuje jim novy, bizarni vyznam". Ze se vsichni shodnou ze C nepodporuje objektove programovani? Nevadi! Kdyz XChaos rekne ze C podporuje polymorfismus, tak to tak proste je 8)))
    XCHAOS
    XCHAOS --- ---
    REDGUY: (*(object->interface->metoda))(object, další parametry)
    XCHAOS
    XCHAOS --- ---
    REDGUY: nebyl by nějaký link? Glib je v tomhle klubu maximálně ontopic, ale já o ní vím celkem minimum.
    REDGUY
    REDGUY --- ---
    ale finta na dědičnost v C prostě není - a jestli je, tak mě jí ukaž a já smeknu. - uz jsem ti to jednou rikal: viz GLib, ciste C, ktere podporuje dedicnost. Doufam ze mas klobouk 8)

    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 - co presne podle tebe v 'C' znamena "objekt ma metodu"?
    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).
    Kliknutím sem můžete změnit nastavení reklam