• ú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í
    XCHAOS
    XCHAOS --- ---
    ISTEVE: to je pravda. já nemám povinnost odpovídat ti na všechny tvoje otázky, řekl bych.
    ISTEVE
    ISTEVE --- ---
    XCHAOS: Tos mi ale stale neodpovedel na otazku...
    XCHAOS
    XCHAOS --- ---
    Using binary search on a linked list
    http://portal.acm.org/citation.cfm?id=101085.101088
    the general consensus is that there is no advantage in trying to implement the binary search process on linked lists
    XCHAOS
    XCHAOS --- ---
    ScienceDirect - Information Processing Letters : Binary search networks: A new method for key searching
    http://www.sciencedirect.com/science/article/pii/0020019087901992
    XCHAOS
    XCHAOS --- ---
    ok, tak jsem chtěl zkusit překřtít to na "lineární binární mesh", ale to je už taky obsazené:
    linear binary mesh - Google Search
    http://www.google.com/search?client=ubuntu&channel=fs&q=linear+binary+mesh&ie=utf-8&oe=utf-8
    XCHAOS
    XCHAOS --- ---
    ISTEVE: no snažil jsem se pro datovou strukturu, pro kterou jsem žádný kánonický název nenašel, vymyslet název, který by co nejvíc odpovídal tomu, jak se jmenují vzdáleně podobné datové struktury.

    Původně jsem tomu říkal "Binární mesh", když jsme u toho, ale to se taky nelíbilo.

    ISTEVE
    ISTEVE --- ---
    ISTEVE: (Cestina je obcas vtipna... :) )
    XCHAOS
    XCHAOS --- ---
    ISTEVE: jestliže toto je "B+ strom" http://en.wikipedia.org/wiki/B%2B_tree - tak z logiky věci nelze [ XCHAOS @ ANSI C/C99 (specifikace), GNU C (gcc, glibc), Tiny C (tcc) a POSIX - ne nutně C++,g++,libstdc++ nebo Win32 API ] pojmenovat jinak, než "binární B+ strom".

    je tedy pravda, že jisté odlišnosti proti té wikipedické definici by se u mě našly, takže tomu říkejme třeba "homogení" nebo "minimální" binární B+ strom" - homogení či minimální proto, že se pracuje s jediným typem uzlu, celou dobu - hlavně tomu neříkejme Maruška, ok ? :-)
    ISTEVE
    ISTEVE --- ---
    XCHAOS: Ja vim, co je B+ strom a vim taky, jakej je rozdil mezi B stromem a B+ stromem... ale moje otazka stoji tak jak jsem ji polozil.
    XCHAOS
    XCHAOS --- ---
    ISTEVE: B+ strom, ne B strom.
    ISTEVE
    ISTEVE --- ---
    XCHAOS: A cetls vubec ten paper na B strom, nebo se ti jen ten nazev libil?
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    XCHAOS: Tak ja vim k cemu to je u red-black. Jen sem cekal od bodu tri (ve kterem by mohl spocivat kriticky detail) neco vic nez "a taky bych si tam mohl pamatovat nejakou extra informaci". Tot vse.

    Mozna se to zkus podivat ne jako na linked list co ma nejaky dopredny linky, ale jako na strom co ma nejakou horizontalni linku. Treba ti to pomuze vic.
    XCHAOS
    XCHAOS --- ---
    DAVIDOWITCH: kdybych to přesně věděl, tak vám předložím hotovej kód a budu se vytahovat, jak jsem hrozně dobrej, ne ? :-)

    u toho red-black tree to slouží k udržování alespoň přibližné vyváženosti stromu - zabraňují tím prý případům, kdy se binární strom "vyroste" nejhorším možným způsobem (a tedy nezrychlí hledání)
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    XCHAOS: Hele, ja nejak nevidim zadnej conclusion z toho bodu (3). Mas teda kus spojaku, kterej je obarvenej.. co z toho plyne, nebo k cemu ta barva bude?
    REDGUY
    REDGUY --- ---
    XCHAOS: A hlavne v defaultni konfiguraci glibc malloc pouziva mmap az pro bloky od 128k vejs, takze u tech mensich mas smulu bez ohledu na architekturu.
    XCHAOS
    XCHAOS --- ---
    ANT_39: ano, v předchozím jsem úplně zapomněl na 0) existence nějakého klíče, podle které má smysl ty uzly uspořádat.

    (pochopitelně, jako obecný kontejner, u kterého nezáleží na pořadí, je to nesmysl - tam stačí pole nebo jednoduchý spojový seznam)
    XCHAOS
    XCHAOS --- ---
    REDGUY: ...a rozhodně jen pro některé architektury, ano. prostě občas ty stránky přeskládat lze, občas ne.

    třeba u mě by se to částečně tlouklo s tou "kontextovou správou paměti": ne úplně, pravda, ale je to jeden z důvodů, proč jsem se na to zatím nadšeně nevrhnul.
    XCHAOS
    XCHAOS --- ---
    ISTEVE: je to prostě "spojový seznam + něco navíc". co třeba takhle:

    1) všechny uzly (vrcholy grafu) jsou spojené orientovanými hranami tak, že je lze jednoznačně procházet jako nezacyklený, spojový seznam - máme právě jeden "vstupní" uzel a právě jeden "výstupní" uzel (ze které už nevede žádná hrana). těmto "primárním" hranám říkám "next".

    2) z každého uzlu (kromě výstupního) může (ale nemusí) vést ješrtě maximálně jedna orientovaná hrana, která vede jinam, než ta primární (kterou jsou pospojované uzly spojového seznamu) a která nikdy nevede do uzlu, který by nebyl součástí toho "podřízeného" spojového seznamu. volitelným sekundárním hranám říkám "seek".

    toto je podle mě téměř vyčerpávající definice, ale já se domnívám, že kritický detail by mohl spočívat ve:

    3) u uzlů, ze kterých nevede sekundární orientovaná hrana ("seek") máme alternativně ještě možnost jejich další kategorizace (např. "obarvení" - paralela k red-black trees, což je používaná datová struktura) (což se v Céčku implementuje velice snadno tak, že ty seek pointery budou ukazovat na něco, co z definice vůbec nebude smět být přidáno jako prvek toho binárního b+ stromu - triviální je označení hodnotou NULL, další jednoznačně "zakázaná" možnost je "ukazuji sám na sebe", apod. )

    ANT_39: viz teď co jsem psal v bodě 3): já se domnívám, že by měl existovat nějaký trik, kterým "vyhandluju" informační entropii za výpočetní výkon :-) jinými slovy - pokud by to bylo jen tak, jak jsem to nakreslil zde - [ XCHAOS @ ANSI C/C99 (specifikace), GNU C (gcc, glibc), Tiny C (tcc) a POSIX - ne nutně C++,g++,libstdc++ nebo Win32 API ] - ale já se domnívám, že trik by mohl spočívat ve využití informační hodnoty těch uzlů, které nemají platný ten "seek" pointer. paralelu vidím ve struktuře http://en.wikipedia.org/wiki/Red-black_tree - kterou jsem sice úplně nepochopil, ale jednak jsou to takové hezké anarchistické barvy :) jednak je tam evidentně nějaký přidaný "prvek samoorganizace"

    u mě jsou dva rozdíly: jednak je to binární B+ strom a nejen binární strom, a jednak (z myslím pochopitelných implementačních důvodů) chci obarvovat jen ty uzly, ze kterých nevedou dvě další hrany.

    ve skutečnosti: zatím všechny moje pokusy nějak si to představit dost selhaly: ale víceméně si myslím, že by mohly být "obarveny" třeba ty uzly, na kterých nebo za kterými bezprostředně končí nějaká ta "seek" hrana. měl jsem vymyšlených několik takových "pravidel obarvování", ale na všechno jsem po několika pokusech našel nějaký protipříklad.
    ISTEVE
    ISTEVE --- ---
    XCHAOS: Muzes definovat pravidla "binarniho B+-stromu"?
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    REDGUY: Co pevny bod a paka, nestacily by?
    REDGUY
    REDGUY --- ---
    ANT_39: Kdybych tak mel trik, kterym o libovolnem Turingove stroji dokazu rozhodnout jestli se zastavi nebo ne, to by byla bomba 8)
    Kliknutím sem můžete změnit nastavení reklam