• ú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 --- ---
    JANFROG: díky že ses mi zastal... ale současně, nejde se celý život odvolávat na dva víceméně neúspěšné pokusy :-) na to, abych uvěřil, že si s tím vystačím, už příliš dlouho nepěstuju konopí :-)

    solární kolo, podobně jako browser, jsem nevymyslel, a podobně jako browser bylo pouze bídnou napodobeninou (fail přiznávám, akorát si myslím, že si nezasloužím být kvůli tomu urážen, když jsem to aspoň zkusil)

    fakt mě fascinuje, kde jsem mohl být, kdybych vyřešil fail, na který jsem s browserem dojel - tedy kdybych dokázal napsat interpreter javascriptu... to, jak masivně javascript ovládl za dalších cca 20 let pole, to jsme myslím v 90kách nečekali (když se poprvé objevil, tak ho všichni brali jako takové vteřinové lepidlo a nenáviděnou nouzovku.. jenže další generace programátorů z toho lepidla evidentně udělala laminát, ze kterého je dnes všechno....). a moje všechny pozdějí úvahy typu "jak to funguje vevnitř" byly motivované právě tím, že jsem tehdy zjistil, že na konstrukci interpreteru vyššího programovacího jazyka moje základní intuitivní programátorské dovednosti vůbec nestačily... (resp. myslím tím interpretr vyššího jazyka než je ten, ve kterém to programuju :-)

    z mých "úspěchů" bys mohl uvést ještě založení internetového poskytovatele, kterému se (víceméně díky náhodné teriotirální shodě) podařilo vysokorychlostně připojit mj. několik milionářů až miliardářů a spoluzaložení politické strany, která právě ovládla post primátora v hlavním městě :-)) jenže všechno je to bohužel právě o tom, že svoje výtvory buď nedokážu sám dál rozvíjet, nebo nad nima okamžitě ztratím kontrolu (u Pirátů je to tím paradoxnější, než na začátku jsem byl snad jeden ze 4 zakládajících členů z Prahy a snad jediný na Praze 6 :-))

    BTW, kdybys tušil, jak moc byly projekty jak browseru, kde to vzhledem k tomu jaké byl DOS bludiště nepřekvapí, tak i solárního kola závislé na dovednostech nějakých třetích stran, tak bys pochopil, proč se tak zoufale snažím ovládnout nějaké základy, na kterých všechno stojí... ať se pustím do čehokoliv, tak to dojede na podobných věcech. (což asi vysvětluje, proč se dnes snažím předpovídat, na čem se různé projekty asi zaseknou, ještě než je rozjedu...)

    V tomhle směra obdivuju Elona Muska, který tak nějak "hacknul kapitalismus" a povedlo se mu něco, co se devadesátkovým lidem kolem unixového/linuxového ekosystému nikdy nepovedlo: dokázal svoje vize rozvíjet ekonomicky životaschopně.

    (Počítám, že kdybych dneska rozjel třeba i úspěšný programátorský projekt, tak vzhledem k dnešním zvyklostem hodit všechno na github a tam to neomezeně forknout nad ním ztratím kontrolu rychleji, než nad čímkoliv, co jsem v životě zkusil předtím :-))
    REDGUY
    REDGUY --- ---
    JANFROG: Njn. Ja si zase myslim, ze kdyz vidim nekoho placat blbosti, tak bych mu to proste mel napsat, at uz dojel na kole do Ciny nebo ne. Kazdej mame neco.

    A btw, jestli si o me delas zavery na zaklade toho, co o me doslova nevis, tak nevim nevim. Rozumej, jestli si o me myslis, ze jsem curak, protoze jsem osklivej na XChaose, oukej, takovej nazor aspon vychazi z faktu. Ale jinak... no, delej, jak myslis 8)
    JANFROG
    JANFROG --- ---
    REDGUY:
    No kazdopadne se tesim, az ten projekt v nejaky funkcni podobe predstavis. Kdy tak zhruba to bude? 8))

    At uz si o nekterych XCHAOSovych myslenkach myslim cokoliv, jedna vec se mu neda uprit: predstavil minimalne dva ambiciozni a realizovane projekty (web browser a solarni kolo). To je vic, nez jsi - alespon co me je znamo - ukazal Ty. Mohu se plest, samozrejme

    Ja osobne si respektuji vice lidi kteri neco delaji byt treba ne skvele nez lidi, co jen hospodsky kritizuji a navazeji se do jinych byt sami nic nepredvedli a sedi coma na prdeli.
    REDGUY
    REDGUY --- ---
    XCHAOS: dnes jsou jazyky dost složitý - Muzes to prosim nejak rozvest? Jak je "slozitej" treba python? Jako jasne, je hodne veci, ktery se MUZES o pythonu naucit. Ale abys mohl pouzivat "bindingy na mysql a cteni formularu", tak staci naucit se par veci a jedes. V cem je tohle slozity? A v cem bude tvuj zazrak jednodussi?

    Ostatne, kdyz se podivas na Arduino, tak zjistis, ze i z C++ se da udelat dost dobre pouzitelnel subset, kterej je velmi jednoduchej na nauceni.

    A mimochodem - podle toho, jak porad mavas tim "binarnim FastCGI", mam pocit, ze jsi krapet mimo, co se tyce soucasnejch webovejch technologii. Mozna si nejdriv neco nastudovat 8))

    cílem je přesně to,co jsem popsal: lidi mají někde PHPhosting a potřebujou to, co usmolej, hned deploynout - a k cemu jim pak bude to, ze maji ten "FastCGI C zdrojak"? V cem je vyhoda proti tomu to proste usmolit rovnou v PHP, ktery pouzivaj milion lidi, neni problem se s nekym poradit, rychly je v soucasny dobe vic nez dost, ma knihovny na cokoliv a hlavne, na rozdil od xZazraku, existuje? 8)))

    Jo, prosim, jak je to s tim lock-inem? Vysvetli mi to. Prece nebudes zase delat tu starou vec s ignorovanim nepohodlnejch otazek 8))
    KEJML
    KEJML --- ---
    XCHAOS: Samozřejmě ambicioznost záleží na komplexitě toho tvýho jazyka. Pokus skončí u podpory if a for, tak to zas taková věda nebude, ale zas nevím jak velký v tom někdo bude psát, aby bylo nějak potřeba řešit rychlost kompilace :)

    Ale pořád nechápu tu aplikaci. Proč bych měl začít psát začít psát aplikaci v tvým jazyku místo JS? Jen proto, že se bojím, že příští rok už JS nebude kde spustit? Nebo naopak, když mám zdroják v PHP, co mi přinese jeho převod do JS?
    XCHAOS
    XCHAOS --- ---
    KEJML: tak zas tak ambiciózní to není, dnes jsou jazyky dost složitý, takže pořád jsou lidi, kteří jen primitivně skriptujou v shellu, což je overkill směrem na druhou stranu.

    spíš mám po letech chuť něco naprogramovat. podle kámoše co dělá v PHPse dnes všechno píše spíš v node.js... ale cílem je přesně to,co jsem popsal: lidi mají někde PHPhosting a potřebujou to, co usmolej, hned deploynout. nicméně, když se budou učit to moje prostředí, tak jim paralelně vyjede i zdroják v C pro FastCGI, nebo (snad) i ten node.js

    nebude to nic extra složitýho, spíš prostě webová platforma.. bindingy na mysql a čtení formulářů, apod...
    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.
    Kliknutím sem můžete změnit nastavení reklam