• ú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: 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 --- ---
    XCHAOS
    XCHAOS --- ---
    Obecný problém programátorů :-)
    XCHAOS
    XCHAOS --- ---
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    _BENNY: Jeste porad sem to neshledl vsechno, ale mam to v planu na let do evropy. A ten chlap je dost vyjimecnej i na tom MIT.
    _BENNY
    _BENNY --- ---
    DAVIDOWITCH: sakra to vubec neni zly, je to asi ta nejzazivnejsi fyzika od doby me zakladni skoly :-)
    XCHAOS
    XCHAOS --- ---
    DAVIDOWITCH: to byla spíš ironie. já jsem vcelku rád, že nemusím řešit takové věci.. i když bylo to poučné pro pochopení, jak některé věci fungují vevnitř.
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    XCHAOS: Tyjo, ja nevim. Asi ne presne zrovna tohle, ale ze bych jako programator mel problem s uplatnenim v miste kde se po mne chce podobna invence.. nemam.
    XCHAOS
    XCHAOS --- ---
    (nebo možná i oni si ten textový mód nastavovali sami... ale já musel poznat, že už skončili, a že mám znovu nahodit grafiku... takhle to bylo) no každopádně oboje slušně offtopic, vzhledem k tématu klubu (ačkoliv to bylo implementované v Céčlu :)
    XCHAOS
    XCHAOS --- ---
    JACHYMKO: heh, to mi připomíná, jak jsem na sklonku epochy Arachne implementoval Alt+Tab přepínání pro nějakéh prachatého klienta (s X desítkami či stovkami licencí) do nějakého jejich text-mode programu :) byl to slušně vychovaný program a vše bylo stabilní: ale byl tam nějaký háček, že se musel ten Alt+Tab interrupt odchytit, přepnout z grafického módu do textového... a pak pokračovat tam, kde to chtělo pokračovat předtím samo.

    ...a pak se podobným způsobem muselo po návratu z interruptu grafika zase reincializovat (to jsem pokud se dobře pamatuju ochcal hloupým trikem, že rutina pro kreslení obyčejných hodin v rohu obrazovky hlídala, zda nebyl náhodou předtím nastaven globální příznak toho odskkoku - a pokud ano,vynulovalo ho to a reinicializovalo grafiku)

    jó,všechny tyhle triky jsou v éře fungujících operačních systémů už zbytečné, a člověk jen těžko hledá uplatnění,když nechce programovat donekonečna nějakého webové prodávání různých nesmyslů různým troubům :-(
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    XCHAOS: Asi se mijime. Ja postoval video jedno (sice ze serie, ale jedno) a to o fyzice. A nastaveny na poslednich asi 5 minut.
    Kliknutím sem můžete změnit nastavení reklam