• ú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í
    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.
    XCHAOS
    XCHAOS --- ---
    DAVIDOWITCH: no, tak prolítl jsem to první. uznávám, že mi to přijde názornější, než co si pamatuju z českých VŠ: pamatuju si trénování mechanických číselných výpočtů a operací, bez jakéhokoliv odkazu na nějakou vizuální/geometrickou interpretaci. matice je hned srozumitelnější konstrukce, když si jí člověk představí jako soustavu čar (či rovin).
    XCHAOS
    XCHAOS --- ---
    ISTEVE: no ano, ale netýká se to jen přednášek, ale obecně všech "mluvících hlav" na videu a v tv... když půjde o nějakou debatu s politiky, tak si taky radši přečtu přepis toho, o čem mluvili (zabere mi to čtvrtinu toho času). můžeš to interpretovat i jako nějakou sebeobranu proti snaze určitých lidí zaujmout mojí pozornost po nějakou předem stanovenou dobu... já sám chci rozhodovat o tom, jak dlouho budu nějakému tématu věnovat pozornost.

    (na toto je velice ideální třeba online diskuzní fórum)
    Kliknutím sem můžete změnit nastavení reklam