• ú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í
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    TENCOKACISTROMY: Aby nedoslo k mylce - tim se nechlubim. Tim mam na mysli, ze to je naprosto uplne bezny. SQL je ukecanej jazyk, kde se dost blbe resi nejakej reuse kodu (a kdyz ho pouzijes, zjistis ze ztracis vykon) a tudiz neni zadnej problem si nabobtnat dotaz na sto radek. A sto radek to zabira jen proto, ze v jednom radku by to bylo naprosto nesrozumitelny. Zrovna v tom SQL je formatovani kodu (novy radky, odsazovani, komentare uvnitr dotazu) dost dulezity. Defakto se tim supluje absence ficur v tom jazyce.
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    XCHAOS: Dvacetiradkovy dotazy pres pet tabulek radime mezi male, strucne dotazy.
    XCHAOS
    XCHAOS --- ---
    TENCOKACISTROMY: je pravda, že zrovna to parsování asi hlavní problém nebude - i když to si asi ještě neviděl moje 20ti řádkové SQL dotazy před pět tabulek :-) - ale už jen třeba objem dat, které pak musíš zbytečně protlačit přes socket, by problém být mohl: když přitom přece stejně ta data jsou nejspíš někde v paměti, a stačilo by na ně získat pointer.
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    XCHAOS: My mame MMORTS postavenou nad SQL databazi, dotazy se tam delaj v SQL a teda zrovna parsovani toho SQL prikazu (pravda, z 99,99% to je volani pripravenejch funkci a procedur) netrva prakticky nic. V porovnani se servirovanim dat, reseni zamykani zaznamu u paralelnich pozadavku a vypoctu, to se jedna o mikrooptimalzaci.

    Nicmene naprosto souhlasim s tim, ze SQL je prezitek a tesim se, az do relacnich databazi zavedou srovnatelnou syntax a ficury jako ma napriklad LINQ v .netu/monu.
    ISTEVE
    ISTEVE --- ---
    ALMAD: ...a SQLite ma interne VM s regulernima operacema. Jestli si vzpominam dobre, tak to nebylo exposed, ale treba se to zmenilo.
    XCHAOS
    XCHAOS --- ---
    hehe, no taky zajímavý důvod k optimalizaci - aby bylo možné nadále používat 1 GB databázi zadarmo :-)
    Jfgeyelin's dev blog: Memcaching the right stuff
    http://www.jfgeyelin.com/2012/04/memcaching-right-stuff.html
    XCHAOS
    XCHAOS --- ---
    hmm, tak tohle taky není zrovna to, co chci: to co dělají, je složitě přetypedefovaná práce s obyčenými C strukturami, přijde mi :-) opět stringy fixní délky a taková zvěrstva...brr.
    c-treeDB C API Developer's Guide
    http://www.faircom.com/doc/ctreedb/
    XCHAOS
    XCHAOS --- ---
    tohle se tváří vznešeně - ale je to jen okázale kryptický způsob, jak poslat databázi query string:
    Accessing: MySQL Database using MySQL C API - CodeProject®
    http://www.codeproject.com/Articles/34646/Accessing-MySQL-data-base-using-MySQL-C-API
    jako jo - vy mě asi řeknete, že to je jako bych uvnitř programu chtěl mít vlastní implementaci filesystému... jenže... je a není :-) spíš je to něco jako používat file handlery otevřených souborů místo filenamů.
    XCHAOS
    XCHAOS --- ---
    JANFROG: jo... celá moje anabáze s tím tolik kritizovaným C<<1 makroprojektem byla o tom, že už mě unavovalo mít ve svých zdrojácích to věčné
    #define STRLEN něco :-) jako problém je, že programátoři v C si toto větinou uvědomí až v době, kdy už sami na rozsáhlejších projektech přestávají pracovat.
    XCHAOS
    XCHAOS --- ---
    XCHAOS: beru zpět: vždyť ty SQL dotazy se tam pořád píší jako query stringy... jako nic proti tomu, ale to je přesně to, co už umím a nepřekvapí mi to.

    ALMAD: no jako proč ne, min. je dobré vzít v úvahu, že to existuje...
    Firebird: About Firebird
    http://www.firebirdsql.org/en/about-firebird/
    ALMAD
    ALMAD --- ---
    XCHAOS: Firebird ma jazyk do kteryho normalizuje SQL a pouziva interne a da se s nim pomoci nej bavit.

    Ale to asi neni to co hledas ;)
    JANFROG
    JANFROG --- ---
    část toho, na co si stěžuješ, podle mě problém není
    Come on! Nerikej mi ze neco neni problem kdyz na to musim psat workaroundy!
    Ze jsi se s tim nesetkal ty neznamena, ze ten problem neexistuje. Cituji:
                        /*
                         * the damn stupid MS people have a builtIn string-limit;
                         * googling revields that this has been a problem of VisualC for
                         * years now, and they kept increasing the string limit
                         * (from 1k, to 4k, to now something like 64k).
                         * Instead of fixing the code, they keep increasing the max-define constant
                         * That is really a problem here, as we have to add a bad kludge for that...
                         */
    #ifdef WIN32
                        if (length > MAX_STRING_LENGTH_FOR_VISUALC) {
    
    XCHAOS
    XCHAOS --- ---
    XCHAOS
    XCHAOS --- ---
    JANFROG: jo, máš bod, na toto jsem se asi prve ptal (a poté kolem toho začal košatět strom mojí vlastní imaginace :-).

    OpenDBX - Wikipedia, the free encyclopedia
    http://en.wikipedia.org/wiki/OpenDBX
    XCHAOS
    XCHAOS --- ---
    JANFROG: já teda fakt programuju radši po překapávanym kafi, jenže je fakt, že jsem toho poslední dobou moc nenaprogramoval (zhruba od doby, kdy jsem se odnaučil to kafe sladit)

    jinak samozřejmě... každý řešíme problémy na jiném levelu - část toho, na co si stěžuješ, podle mě problém není (délky indentifikátorů, apod. - s tím jsem se fakt už léta nesetkal), část z toho je zřejmě problém vyřešit a pokud to umíte a někdo vám za to platí, no tak proč ne... jen tak dál.
    JANFROG
    JANFROG --- ---
    XCHAOS: CDBC == OpenDBX
    JANFROG
    JANFROG --- ---
    XCHAOS:
    FLEGMA: Otazka zni jinak - lze vybec programovat bez zeleneho caje? :-)

    Vratim se k myslence generovani C kodu z nejakeho vyssiho. Uz par let pracuji s jedniim takovym generatorem (vyvoj toho generatoru) co preklada vyssi jazyk do C. Vysledny kod neni ani citelny ani extra rychly. Po zkusenostech co mame ted vime, ze dalsi generace tohoto nastroje bude generovat rovnou object file krom pripadu, kdy to opravdu jinak nejde (inline C v kodu ve vyssim jazyce) - a seriozne zvazujeme i moznost proste inline C nepodporovat, byt to je dle me jedna z killing features.

    Problemy jsou v tom:
    - ze kazdej prekladac ma jiny nazor na to, co jeden zdrojak znamena (1000+1 ifdefu v generovanem kodu),
    - kazdy prekladac v kazde verzi ma mirne jiny frame layout (pro nas podstatne, pracujeme s tim).
    - kazdy prekladac v kazde verzi ma jine bugy (znamena generuje v jistych pripadech invalidni kod).
    - kazdy prekladac ma jine, dost male, interni limity na delky identifikatoru, stringovych literalu, identifkatoru maker apod.

    Vysledny kod je stejne o neco pomalejsi, nez kdyz za behu vygenerujeme machine code a pustime.

    Cili generovani C z vyssiho jazyka je snadne na zacatku a velmi limitujici na konci. Uz bych do toho nikdy nesel a kdyz ano, tak jen a pouze jako bootstrap mechanismus.
    XCHAOS
    XCHAOS --- ---
    tento sýr má obávám se poněkud prošlé datum doporučené spotřeby :-)
    Madrigal Database Documentation - C Language API
    http://hawk.iszf.irk.ru/madrigal/madC.html
    XCHAOS
    XCHAOS --- ---
    např.
    C API
    http://faircom.com/ace/ace_api_ctdb_t.php
    The C API provides the function calls without object-oriented schema.
    XCHAOS
    XCHAOS --- ---
    FLEGMA: tak já nemyslím, že je to úplně offtopic... spíš to ale souvisí s nočním programováním, kdy prostě potřebuješ zůstat vzhůru a ta kreativita souvisí s tím, že všude kolem noc a ticho, a celkově člověk děla v takovým jakoby transu. jenže do toho už se nějak nedokážu dostat, tak snadno jako dřív, takže ztratil půvab i ten kofein.

    FLEGMA: to vím že existuje. já se v podstatě ptal na "cdbc" :-)
    FLEGMA
    FLEGMA --- ---
    XCHAOS: Po zelenym caji se programuje vyborne - Sencha, Olong nebo Vietnamskej standard jsou provereny speedy. sry za OT
    Kliknutím sem můžete změnit nastavení reklam