• ú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 --- ---
    DAVIDOWITCH: já jsem spíš textově, než matematicky orientovaný programátor. mě zaujala spíš nativní podpora unicode.
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    XCHAOS: Err... ja tim chtel rict ze anonymni uniony uz dost mozna mas implementovany.
    A bez pretezovani operatoru ti vznikne... no, evidentne ma ted C nativni podporu komplexnich cisel. Enjoy. (V pristi verzi urcite nekdo vymysli nativni podporu matic a vektoru)
    XCHAOS
    XCHAOS --- ---
    DAVIDOWITCH: v podstatě, je možné, že nakonec skončím u toho "D", jestli to nějak Doladěj.

    Víceméně na C++ mi nevadí ani tak, že je objektové - ale vadí mi zmatek reference vs. pointery (tušil jsem, že mi to vadí, teď už mám i vysvětlené od někoho, že je to fakt co mi vadí), přetěžování operátorů, a takové různé věci. A třeba mi chybí i kontejnerová konstukce typu for_each() ... což je prostě abstrakce, která by v jazyce, který se tváří jako "vyšší" měla být normou. (a ne... tím, že se pro každý prvek kontejnerové třídy přetíží operátor ++ to z hlediska laika není nahrazené dostatečně :-) )
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    XCHAOS: Ja jak nedelam v cistym C tak nevim, ale C++ tohle ma uz alespon 5 let (to sem to tak poprvy pouzil, rekl bych). Dost mozna i dyl.
    Jestli to je C++ vec nebo nejaka univerzalni extenze kterou maj vsichni a jen se ted dostala do standardu (jako secure fce), to ti nepovim.
    XCHAOS
    XCHAOS --- ---
    DAVIDOWITCH: mě popravdě zaujal nejvíc ten anonymní struct/union. to by mohlo vyřešit spoustu haluzí s přetypováním....
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    XCHAOS: Tak zejo, treba C++ concepts nakonec z finalni verze zrusili mimo jine i proto, ze zadnej kompilator nemel funkcni verzi. Takze bych se vubec nedivil kdyby GCC/ICC mely pomerne hodne nakroceno k plny implementaci v momente finalizace C11 standardu.
    XCHAOS
    XCHAOS --- ---
    GCC already says: [gnu.org]

    A fourth version of the C standard, known as C11, was published in 2011 as ISO/IEC 9899:2011. GCC has limited incomplete support for parts of this standard, enabled with -std=c11 or -std=iso9899:2011. (While in development, drafts of this standard version were referred to as C1X.)
    XCHAOS
    XCHAOS --- ---
    nj. musím jít balit dárky, takže to musím odložit, ale jsem zvědav :-)
    C1X - Wikipedia, the free encyclopedia
    http://en.wikipedia.org/wiki/C1X

    specifikace je už venku dýl - dnes o tom psali akorát na slashdotu :-)
    XCHAOS
    XCHAOS --- ---
    Všichni Céčkaři dostali od ISO vánoční dárek, tak jsem zvědav, jestli není čas aktualizovat název klubu:
    http://developers.slashdot.org/story/11/12/24/0145238/iso-updates-c-standard
    http://www.h-online.com/open/news/item/ISO-updates-C-standard-1400814.html
    http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=57853

    jsem zvědav, kdy začne GCC podporovat C1X. jinak tím pádem moje rozhodnutí přeorientovat se na čisté C99 a featury které podporuje bylo správné: teď je C99 jednoznačně "produkční", zatímco tohle je nová beta.
    XCHAOS
    XCHAOS --- ---
    DAVIDOWITCH: jako vidím výhodu kompilace u staticky typovaného jazyka - že zkontroluje, se funkcím nepředávají nekompatibilní parametry. kompilace u dynamicky typovaného jazyka (jako je PHP) sice asi zrychlí běh programu (o něco) - ale kód nebude o nic robustnější.
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    XCHAOS: Ja to asi nechapu. Ja sem mel vzdycky dojem, ze VM je prave proto, ze se veci nekompilujou do nativniho kodu. Az on demand to pak resi ta VM (ktera ma jisty vyhody, jako treba ze v ramci JIT umi inlinovat i virtualni tridy, a jisty nevyhody, jako ze na loadu to chvili chrousta).

    Ale rozhodne zajimavy, pokud nekdo udela PHP frontend pro LLVM, tak to bude celkem fajn.
    XCHAOS
    XCHAOS --- ---
    sice C++ ale co... je to vzdáleně podobné téma jako to, na čem pracuju já:
    Facebook vyvíjí virtual machine pro PHP - Root.cz
    http://www.root.cz/zpravicky/facebook-vyviji-virtual-machine-pro-php/

    vtipné je, že s pre-kompilací do C++ končí, a místo toho budou vyvíjet (zřejmě JIT?) PHP compiler přímo do strojáku :-)
    XCHAOS
    XCHAOS --- ---
    TENCOKACISTROMY: hele, nejde :-) ani s přetypováním ne.

    (*((typ objektu *)(funkce_vracejici_objekt())->interface->metoda))(objekt, parametry)

    ... chápeš? prostě objektový model pro čisté C sice existuje, a je i docela elegantní (může být i strukturovaný, když nezahrnuje dědění) - ale prostě když ti funkce vrátí objekt, musíš pracovat s pointerem na něj - nemůžeš ten samý objekt jednoduše předat nějaké metodě (šlo by to, kdyby C mělo nějaké "self" nebo "this" - což ovšem nemá).

    C++ někomu sedne, někomu ne. Nemá to cenu řešit. Ti, kdo mají C++ rádi, si musí uvědomit, že používají jazyk, který je sice mocný, ale nesedne všem. Sedne to lidem s nadáním pro vyšší matematiku - ale je to už příliš vzdálené přirozenému jazyku či "kupeckým počtům". To je celé. Nerozjíždějme další flejm.
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    XCHAOS: v čistém C nikdy nevymyslím objektovou syntaxi, která by umožnovala zavolat metodu u objektu vráceného nějakou funkcí.
    Tak ono by to slo ... otazkou ale je, jestli by pak precijen nebylo lepsi pouzit to C++ :)
    XCHAOS
    XCHAOS --- ---
    JACHYMKO: to asi ne - jako dialekt to dělám právě proto, že na tyhle věci jsem líný :-)
    ale zase takový pre-compiler, který by uměl věci, co v C principiálně nejsou...
    PHP: Operator Precedence - Manual
    http://www.php.net/manual/en/language.operators.precedence.php

    - líbily by se mi porovnávací operátory === a ~= (ten jsem dřív navrhoval pro Python a není ani v tom PHP)
    - v čistém C nikdy nevymyslím objektovou syntaxi, která by umožnovala zavolat metodu u objektu vráceného nějakou funkcí

    Pre-compilery do čistého C se ale dělají i z Pythonu, není to nic nového... osobně bych spíš než nějaký úplně nový jazyk udělal pre-compiler třeba z Pythoní syntaxe do mého dialektu jako do mezijazyka (BTW - na rozdíl od těch stávajících precompilerů by nevyžadoval statické typování a umožnoval by mi rozhodovat o věcech, jako jestli porovnání objektů odlišného typu vyhodí exception nebo ne...)
    XCHAOS
    XCHAOS --- ---
    update: co jste mých prasomaker týče, vyhráli jste bitvu (ale ne válku).

    rozhodl jsem se, že původní nápad:

    for_selected(...) { }

    by byla po mém zobecnění:

    for_each(typ_polozky,polozka,typ_seznamu,seznam,...) { }

    asi fakt prasárna. na jednoduchém zápise

    for_each(...) if (podmínka) { }

    fakt není nic špatného, možná jsem to s tou snahou o větší čitelnost kodu fakt vzal ze špatného konce (ted to vidím tak, že pokud se budu snažit o makro-dialekt, mělo by těch maker být co nejméně - nejlépe méně než deset, z toho tak max. 2-3 by se týkaly flow-control...)

    (změnil jsem to dokonce i ve starších verzích kodu na bázi C<<1 maker :-))

    na druhou stranu - mám svrbění pořád nějak "zčitelnovat" nalezení jednoho prvku:

    for_each(...) if (podmínka) break;

    ...ale nevím, jestli to nenechám přeci jen být... (fakt je, že break; a continue; v cyklech jsou naprostý základ, který si stejně musí nastudovat každý, kdo chce s jakýmikoliv cykly vážně pracovat)
    ANT_39
    ANT_39 --- ---
    XCHAOS: Imho je to tam uz dyl, a se standardem to (opet imho) nesouvisi. Jednak je printf builtin, cili gcc o nem "vi": zkus treba printf("blabla\n"), gcc ti z toho vyrobi puts("blabla"). Mimo to, gcc ma __attribute__((format(...))), kterym se tohle myslim da deklarovat.
    XCHAOS
    XCHAOS --- ---
    Ok... konec offtopiců, po delší době.

    Jedna z drobných, ale podstatných vychytávek u kompilace čistého C zdrojáku pod GNU C, kterou jsem zaregistroval v poslední době:

    prometheus.c: In function ‘main’:
    prometheus.c:1751: warning: format ‘%d’ expects type ‘int’, but argument 13 has type ‘char *’
    prometheus.c:1751: warning: too few arguments for format


    (mám pocit, že to tam bylo už dřív, ale hlídalo se to jen u režinu kompatiblity se standardem C99? každopádně nehlídání tohoto bylo častým zdrojem jak kritiky, tak i chyb... trochu tím C získalo násklok před interpretovanými dynamicky typovanými jazyky, které ale nějakým způsobem umožňují použití printf formátovacích stringů... )
    XCHAOS
    XCHAOS --- ---
    XCHAOS
    XCHAOS --- ---
    Kliknutím sem můžete změnit nastavení reklam