• ú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í
    WILD_A
    WILD_A --- ---
    XCHAOS: Kdybych se ja vrhal do takovyhle veci asi bych vzal LLVM a psal backendy pro cilovy jazyky, pricemz treba Javascript uz je "hotovy". LLVM bitcode je imho srozumitelny narozdil od gcc gimple :)
    REDGUY
    REDGUY --- ---
    XCHAOS: jednak se vyhnu lock-inu na jedne platforme (coz je nakonec i gcc, jakkoliv svobodne) - poslechnete, Kefalin, co vy si predstavujete pod takym "Lock-in na jedne platforme"? Protoze GCC je schopny generovat kod pro procesory od AVR pres x86 az po treba IBM mainframy. Ja tam ten "lock-in" nejak nevidim, tak se tesim, az mi to vysvetlis 8)

    No kazdopadne se tesim, az ten projekt v nejaky funkcni podobe predstavis. Kdy tak zhruba to bude? 8))
    KEJML
    KEJML --- ---




    XCHAOS: Když máš v klubu právo mazat, vidíš všechny, včetně ignorovaných, jinak bys nemohl zodpovědně zastávat moderátorskou roli.

    XCHAOS: Jazyk, co se bude prodávat do několika jiných jazyků - velice ambiciózní projekt. Jakou si představuješ aplikaci v praxi? Takhle z fleku mne nenapadá situace, kdy bych si řekl, že přesně tohle bych potřeboval.
    XCHAOS
    XCHAOS --- ---
    REDGUY: chtel bych treba napsat i neco jinyho, nez generator iptables... ale pokud te to opravdu vzdava, tak snahu o nejake zjednoduseni C asi pomalu vzdam a uvazuju ted spis o generatoru kodu pro vice platform (tedy definovat si vlastni primitivni jazyk, napsat jeho parser, a generovat z nej kod pro C, PHP, Python, atakdal).

    Tahle cesta je zajimava z vice duvodu: jednak se vyhnu lock-inu na jedne platforme (coz je nakonec i gcc, jakkoliv svobodne), jednak umozni srovnat vykon ruznych platforem provadejicich fakticky to same, jednak jsou mozne budouci optimalizace dilcich targetu bez nutnosti prepisovat hromady zdrojaku... no a v neposledni rade, je jasne, ze treba nejake binarni fastcgi bude vzdycky provozovat jen par geeku, zatimco siroke masy si nainstalujou jen to, co jim bude chodit na PHP hostingu.

    Takovy code generator, i kdyz asi bude natruc napsany v C (rychlost se u compileru snad porad jeste ceni), ovsem asi v tomhle klubu kupodivu bude offtopic.
    REDGUY
    REDGUY --- ---
    XCHAOS: jak to že tě tady vidím, když tě už mám v ignore - Ja ti odpovim na tvoji otazku a tohohole se mi do dostane? No teda 8)) Ale hele, nevim proc. Mozna se ti i Nyx snazi naznacit, ze neni dobrej napad zase po x-letech rozvijet debatu na tema "XChaos vymejsli novej alokator pro C". Uz to tady parkrat bylo a nikdy to nedopadlo 8))

    Ostatne, i to co pises označit kus heapu jako asociovaný s aktuální hodotou stack pointeru je jen variace na to, co uz jsi psaval. Nic noveho a hlavne to neni reseni problemu s alokaci pameti v glorifikovanym assembleru. Jestli se neco jmenuje s podrzitkem nebo ne neni podstatny, hlavni problem je slozitost pouziti a nachylnost k chybam. Ona neni nahoda, ze prakticky vsechny moderni jazyky maji memory management automatickej. A jestli opravdu strasne nemas rad GC a opravdu nutne potrebujes pro svoje generatory konfiguraci iptables kazdej takt vykonu (lol), podivej se, jak to dela Rust. Akorat ze to samozrejme nejde udelat jen na urovni knihovem, ale proste kolem toho musi bejt postavenej celej jazyk.

    ale více nebudu psát v odpovědi pro tebe - ouch. To me ranilo 8))
    XCHAOS
    XCHAOS --- ---
    XCHAOS
    XCHAOS --- ---
    tak jsem dospěl někam sem:
    c - Print out value of stack pointer - Stack Overflow
    https://stackoverflow.com/questions/20059673/print-out-value-of-stack-pointer

    napadlo mi, že kdyby alokátor seskupoval alokace podle hodnoty stack pointeru v momentě alokace, tak by při prvním volání po návratu z funkce mohl nějak vyhodnotit, které položky může už zahodit - bylo by to překvapivě bezpečné i pro nestandardní způsoby opuštění funkce (longjmp). takovýto "pseudo garbage collection" by šlo iniciovat i mimo volání alokátoru, kdyby bylo potřeba, ale alokátory by ho volaly minimálně pokaždé, když by jim došla pre-alokovaná paměť...

    v podstatě by šlo o to vždy označit kus heapu jako asociovaný s aktuální hodotou stack pointeru. přičemž odmazávat by se měla vždy především "poslední předchozí", dle logiky věci.. akorát mi tam hapruje, jak jí odlišit např. od předposlední, která ještě může být platná, pokud se v té poslední nealokovalo nic.

    alokátory paměti by pak v podstatě pro běžný život stačily dva, zhruba ekvivalentní prastarým Basicovským levelům "local" a "global" (což mimochodem velmi dobře odpovídá C světu do sebe nevnořovaných funkcí). lokální alokátor by pak podle nejlepších C zvyklostí pro označování privátních a lokálních hodnot mohl začínat podtržítkem...
    XCHAOS
    XCHAOS --- ---
    REDGUY: jak to že tě tady vidím, když tě už mám v ignore? :-(

    jinak ano, zamýšlím se nad tím, googlím... a alloca() asi fakt nebude řešením pro moje pokusy o nějakou sadu zásad pro bezstarostné programování v C... ale více nebudu psát v odpovědi pro tebe.
    REDGUY
    REDGUY --- ---
    XCHAOS:
    man bash
    a hledej ulimit, switch -s. A zamysli se nad organizaci pameti a tim, jake dusledky ma pro moznou velikost stacku 8))
    XCHAOS
    XCHAOS --- ---
    ANT_39: no ale jak je to vůbec s velikostí stacku např. v Linuxu? to je tam pořád omezení na fixní limit jako kdysi v DOSu?
    JANFROG
    JANFROG --- ---
    ANT_39: Plus takove veci, ze pristup do alloca() pameti po pouziti longjmp() je UB (pokud se dobre pamatuji) a podobne legracky...
    ANT_39
    ANT_39 --- ---
    XCHAOS: S alloca a VLA je problem, ze pro prilis velky alokace se muzes snadno dostat mimo stack. Tusim v glibc a elfutils jsem normalne videl kod ve stylu if (x > a lot) malloc(x) else alloca(x) (a odpovidajici tomu free nebo nic). V linuxovym kernelu se dela na nahrade vsech pripadu alloca a VLA za alkoace na halde, mimo jine protoze ten stack overrun je potencialni bezpecnostni riziko.
    XCHAOS
    XCHAOS --- ---
    popravdě, jestli ještě budu někdy cokoliv dělat se stringama v C, tak uvažuju o tomto:
    Advantages of Alloca (The GNU C Library)
    https://www.gnu.org/software/libc/manual/html_node/Advantages-of-Alloca.html
    GIOMIKY
    GIOMIKY --- ---
    Ahoj, budu vdecny za jakykoliv nazor. Ted zrovna resim, proc mi interaktivni moc nabehne do prazdne obrazovky. Ale nejsem si jisty proc.
    Je to prohlizec ans souboru pro utf-8 terminaly. Je to psany tak nejak zbesile, ale pro svoje ucely mi to staci.
    http://elinks.xf.cz/pub/ansiu/
    XCHAOS
    XCHAOS --- ---
    XCHAOS
    XCHAOS --- ---
    JANFROG: já jsem na ty nový trendy v programování už nějak moc starej. za chvíli si bude muset obchodovat s opcema na procesorovej čas v cloudu :-) (na druhou stranu: třeba to konečně bude pravej moment na ty moje mikro-optimalizace :-)
    JANFROG
    JANFROG --- ---
    ALMAD: Neznal jsem, diky!
    XCHAOS: Vo vypada, ze zpatky dostanes promisu.
    XCHAOS
    XCHAOS --- ---
    ALMAD: Sice základní princip, že to mají v paměti, se mi líbí.. tohle ale zní trochu podezřele: Time-traveling RPC: Cap’n Proto features an RPC system that implements time travel such that call results are returned to the client before the request even arrives at the server!
    :-)
    ALMAD
    ALMAD --- ---
    JANFROG: Mě se v tomhle líbí https://capnproto.org/
    XCHAOS
    XCHAOS --- ---
    REDGUY: tenhle kód...
    #include "sqlite3-1.c"
    #include "sqlite3-2.c"
    #include "sqlite3-3.c"
    #include "sqlite3-4.c"
    #include "sqlite3-5.c"
    #include "sqlite3-6.c"
    #include "sqlite3-7.c"
    ....mi popravdě připomíná jeden můj header file :-)
    GIOMIKY
    GIOMIKY --- ---
    XCHAOS: To znam. To je clovek takhle v terminalu a nechce se mu opustit textovej rezim.
    REDGUY
    REDGUY --- ---
    XCHAOS: Jo, jasne, otravovat ostatni, at za tebe udelaji neco, co bys mohl udelat sam. Pozoruhodnej pristup 8)
    XCHAOS
    XCHAOS --- ---
    REDGUY: jedna taková služba se jmenuje NYX :-)
    Kliknutím sem můžete změnit nastavení reklam