• ú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 --- ---
    DAVIDOWITCH: no... ano. ne. proto se ptám na to, jestli je to nějaké API, že ano :-)

    prostě to, nad čím si lámu hlavu je jednoduché: jak kdo vlastně programuje složitější datové struktury do svých aplikací jinak, než že naformuluje SQL dotaz do stringu a zavolá nějaké spojení do databáze? viděl jsem pochopitelně ledacos... ale zase proti tomu, co jsem si zvykl používat za funkce v SQL, je to všechno poměrně primitivní...
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    XCHAOS: Tos me s tou prenositelnosti nepochopil. Ja nemyslel ze to nepustis na jinym stroji ale ze to nepustis proti jiny databazi.
    XCHAOS
    XCHAOS --- ---
    DAVIDOWITCH: v případě open source knihoven si tedy přenositelnost omezím jen stěží... prostě se vše doinstaluje všude, kde je to potřeba :-) (já jsem si schopen udělat apt-get build-essential i kvůli nativnímu místnímu překompilovaní nějakého pětiřádkového skritptíku v C.. ... .tohle je prostě způsob, jak to spousta lidí pod Linuxem dělá.

    když bych např. udělal ze své aplikace debianí balíček s dependencí na jiný balíček, tak se mi potřebná knihovna doinstaluje úplně na každém stroji, kde instaluji první balíček. (takhle prostě uvažuji já.... a už nechci svoje uvažování měnit směrem k nějakým proprietárním nepřenositelným binárkám)
    XCHAOS
    XCHAOS --- ---
    DAVIDOWITCH: nevím. já jsem se jen zeptal...

    vím, že už léta existuje toto http://cs.wikipedia.org/wiki/Open_Database_Connectivity - ale přiznám se, že jsem se s tím nesetkal v jiném smyslu, než "existuje to". je to pokud to dobře chápu zase jen nějaký protokol.

    prostě mě překvapilo, kolik (nejen mého) zdrojového kodu je (zejména u webových aplikací) tvořeno věčným skládáním SQL dotazů. Samozřejmě - největší frajeři toto obalí nějakým abstraktně se tvářícím objektem - a navíc ještě ty dotazy skládají za pochodu i když to není nezbytně nutné, protože to pak vypadá "víc in")

    v podstatě ano - když už svojí aplikaci osudově provázat s nějakou knihovnou, tak v řadě případů by se menší databázový stroj hodil.
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    XCHAOS: Huh? A to tuhle hyperoptimalizaci kde si podriznes portability vymenou za nejasnou-ale-spis-malou performance resis kvuli vecem co se vejdou na 1 server se 4GB pameti? To mi neprijde stastnej smer...
    REDGUY
    REDGUY --- ---
    XCHAOS: tak proč neuvažovat tak, aby z nich šlo předkompilovat celé SQL dotazy - protoze je to zbytecny, protoze je spousta prostoru optimalizovat jine veci, kde to naopak smysl ma.

    současně necacheovatelné SQL dotazy dokáží divy - a timhle myslis co? "necacheovatelne dotazy"?

    že se třeba regulární výrazy kompilují, se nikdo nepozastavuje - pochopitelne. Protoze je _sakra_ rozdil mezi RE a SQL. Schvalne, prijdes na to v cem ten rozdil spociva?
    XCHAOS
    XCHAOS --- ---
    REDGUY: budeš se divit.. ale v dnešní éře serverů s 4GB paměti (a více) se naopak málokomu podaří naplnit databázi tolika daty, že se do paměti nevejdou (samozřejmě... distribuované databáze v nějakých serverových farmách, to už je trochu jiné téma...)
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    XCHAOS: Takze by si predhodil databazi kus dotazu, dostal zpatky nejakej neco, a pak se dotazoval timhle a k tomu prilepil nejakou blizsi specifikaci (hodnotu nebo tak). Takze by ses tesne navazal na konkretni databazovej stroj?
    Mas predstavu o pros a cons? Sem mel dojem ze cely kouzlo SQL je, ze kdyz ti prestane stacit MySQL tak tam hodis Oracle server a nemusis (i kdyz bys mohl a asi i mel) moc resit.
    XCHAOS
    XCHAOS --- ---
    REDGUY: tak pro začátek jsem to přejmenoval na crl1.h :-) a budu to od základu překopávat tak dlouho, až to pitomost být přestane. to je celé.
    XCHAOS
    XCHAOS --- ---
    DAVIDOWITCH: to jsem neřekl :-) dostatečně promyšleně špatně navržené SQL tabulky a současně necacheovatelné SQL dotazy dokáží divy :-)

    jsem jsem říkal, o co já se to vlastně celá léta snažím, když navrhuji sám nějakou datovou strukturu - o cosi jako "předkompilovaný SQL dotaz", přece. takže v podstatě ano.... když už vytvářet vlastní datové struktury, tak proč neuvažovat tak, aby z nich šlo předkompilovat celé SQL dotazy?

    nad tím, že se třeba regulární výrazy kompilují, se nikdo nepozastavuje. to o čem mluvím, je sice trošku složitější problém... ale v podstatě... proč by to nemělo být možné? u nejprimitivnějšího dotazu je toto téměř triviální... ale bavíme se pochopitelně konstrukcích typu JOIN, GROUP BY, apod.

    když dnes přemýšlím o libovolném problému - at už jde o firmu nebo o soukromé projekty, tak to většinou vede k návrhu nějakých vzájemně provázaných tabulek - a naopak málokdy to vede k návrhu nějaké třídy objektů, které by od sebe vzájemně něco dědily... (to možná ještě ty pohledy na data by šlo nějak rozkouskovat do těch tříd...)
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    XCHAOS: errrr.... nezapomel?
    Takze ten bottleneck vidis na strane skladani dotazu, ne na strane SQL serveru?
    REDGUY
    REDGUY --- ---
    XCHAOS: tak opravím tu větu "nemyslím si, že jediný možný směr vývoje od C je k C++ nebo Objective C" - spokojen - ne. Debata byla o tom, ze Cll1 je pitomost s celou radou problemu na mnoha ruznych urovnich. Ne o nejakych smerech vyvoje, to si dost fandis 8))
    REDGUY
    REDGUY --- ---
    XCHAOS: dobře oindexovanou tabulku, která se navíc celá vejde do paměti, je databázový stroj schopen prohledat velmi rychle - pokud pouzivas SQL databazi abys prohledaval oindexovanou tabulku ktera se vejde do pameti, navic v situaci kdy ti tolik zalezi na vykonu ze si nemuzes dovolit rozparsovat SQL prikaz, tak delas neco hodne blbe. Coz asi nikoho neprekvapuje 8))

    XCHAOS
    XCHAOS --- ---
    REDGUY: dobře... tak opravím tu větu "nemyslím si, že jediný možný směr vývoje od C je k C++ nebo Objective C" - spokojen?

    (a ne - odpověd "používej místo C vyšší programovací jazyk" mě taky nevyhovuje - mě zajímá používat C takovým způsobem, jakým já sám uznám za vhodné... a většina open source aplikací napsaných v C jde touto cestou, BTW)
    XCHAOS
    XCHAOS --- ---
    REDGUY: jo a ne... dobře oindexovanou tabulku, která se navíc celá vejde do paměti, je databázový stroj schopen prohledat velmi rychle... a nedělám si iluze, že bych sám dokázal napsat něco, co by se vyrovnalo databázovým enginům vyvíjeným po celé generace. jinými slovy: vyjímečně netvrdím, že jsem já sám schopen naprogramovat něco lépe, než někdo jiný :-) zajímám se jen o API k něčemu již hotovému.

    vím, že existuje třeba toto http://www.sqlite.org/ - http://www.sqlite.org/faq.html ... ale nevím, jestli je to úplně přesně to, co mám na mysli já.
    REDGUY
    REDGUY --- ---
    XCHAOS: není to trochu overhead? - neni. Jako obvykle se snazis optimalizovat na spatnem miste. Jo, parsovani dotazu chvilicku trva. Ale ve srovnani s tim, co trva jeho nasledne provedeni, je to v podstate nula nula nic.

    celkově jsou databázové servery zatížené výrazně méně, než webservery - wut? A co je zase tohle za pitomost? Na to jsi prisel jak?
    REDGUY
    REDGUY --- ---
    XCHAOS: No a? To nic nemeni na tom, ze nikdo nerikal ze " jediný možný vývoj od C směruje k C++". Naopak, snazili jsme se ti ukazat spoustu jazyku, ktere ukazujou jinou cestu - viz treba to Objective C. To ze tyhle doporuceni ignorujes je tvuj problem.
    XCHAOS
    XCHAOS --- ---
    DAVIDOWITCH: no, pokud máš jednovláknovou jednouživatelskou aplikaci, tak jistě... celkově jsou databázové servery zatížené výrazně méně, než webservery (což je pro mě nejdůležitější důkaz toho, že se dnes prostě programuje špatně)

    víceméně - zapomněl si, že já se o C zajímám výhradně proto, že chci psát jiné, než jendouživatelské desktopové aplikace (u kterých je vlastně jedno, jestli klient počká 5 sekund nebo 10 sekund a mezitím rád zkoukne nějakou duchaplnou animaci, apod.)
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    XCHAOS: Tipl bych si ze parsovani toho stringu je v ramci slozitejsiho dotazu naprosto zanedbatelny, ne? (as in "nemeritelny")
    XCHAOS
    XCHAOS --- ---
    jinak z jiného soudku... nevíte někdo nějakém "nativnějším" API k nějaké SQL databázi, než skrze.. ehm, jazyk SQL?

    sám jsem tu postoval nějaké API týkající se libmysqlclient ... a moc se mi to líbí, je to snadné na použití, ale přeci jen: pokud budu za chodu programu vytvářet složitější SQL dotazy (jako stringy, naformátované podle konkrétní runtime situace - třeba doplnění čísla nějakého objektu, kategorie, rubriky, apod. do dotazu), a SQL server pak bude ty SQL dotazy zase parsovat... není to trochu overhead? neexistuje nějaké "nativnější" API k některé z běžných databází?
    XCHAOS
    XCHAOS --- ---
    REDGUY: tenhle klub prostě vznikl jako reakce na můj ban v klubu o C++ ... to je celé.
    Kliknutím sem můžete změnit nastavení reklam