• ú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í
    KEJML
    KEJML --- ---
    XCHAOS, XCHAOS: Upřímně jsem se nějak ztratil.

    Pokud ti jde jen o vlastní hobby projekt, tak super, jdi do toho.

    Ale ta praktičnost mi z celého tvého vyprávění uniká. V jakým případě napíšu program v Xlangu a využiju toho, že jednou ho přeložím do PHP a podruhé do C? Co mi to přinese?
    REDGUY
    REDGUY --- ---
    XCHAOS: Ach jo. No tak postupne.

    mě se líbí, že v Pythonu můžu napsat prakticky všechno na jeden řádek... naučil jsem se to běhema cca 2 let praxe. Ale zjistil jsem, že pro nově příchozí je to podobně nesrozumitelné - dva roky na nauceni onelineru? Hmmm. Nemluve o tom, ze nadmerne pouzivani onelineru je zvrhlost, ktere je nesrozumitelna nejen pro "nove prichozi", ale pro vsechny.

    podobně nesrozumitelné, jako pro mě třeba styl programování v Perlu, kdy většina kódu je jen pár obludných regexpů - pitomost, zase mluvis o necem, cemu fakt nerozumis. Vzhledem k tomu, ze Perl nemumis, tak neni divu, ze je pro tebe nesrozumitelnej a neni divu, ze meles nesmysly o tom, jak vypada Perlovej kod.

    a v tom co jsem navrhoval, by programátoři museli používat v podstatě jen ty, které bych jim prefabrikoval. - a to je znovu to, na co jsem se ptal a co dusledne ignorujes: proc je podle tebe "zjednoduseni", kdyz v tvem jazyce necio nebude? V pythonu se ty custom iteratory ucit nemusim, muzu klidne pracovat bez nich a naucit se je, az kdyz je potrebuju. Proc by proboha melo bejt lepsi, kdyz tam vubec nebudou? Odpovis na tohle, nebo to budes zase ignorovat?

    pro mě osobně vždycky daleko důležitější než dědění vlastností bylo procházení nějakých seznamů, jejichž velikost předem neznám - /facepalm. To neni ani srovnavani jablek s hruskama, to jsou jabka a ryby.

    XCHAOS: námatkou plácnu, parametry připojování do databáze budou součást konfigurace celého prostředí a ne úkolem pro programátora (prostě jsou věci, které konfigurují admini a od těch bych programátory algoritmů asi úplně odfiltroval - stejně to, že to každá aplikace má jinak, jen přidělává práci..) - ach boze. Protoze konfigurace databaze je zasadni problem, kterej fakt neni uz davno vyresenej treba dvanacti faktorama a podobne. Jeste ze mame XChaose, kterej to vyresi! 8))

    XCHAOS: Hele, takovyhle povidani je off-topic nebo on-topic? A pokud to prvni, tak porad jsou za off-topic bananmy? 8)))
    XCHAOS
    XCHAOS --- ---
    KEJML: ano, tak v podstatě... uvažuju o tom nějak takhle. pokud objekty, tak silně zjednodušené. ale spíš uvažuju o tom "jazyce" jako o runtime prostředí, kde třeba, námatkou plácnu, parametry připojování do databáze budou součást konfigurace celého prostředí a ne úkolem pro programátora (prostě jsou věci, které konfigurují admini a od těch bych programátory algoritmů asi úplně odfiltroval - stejně to, že to každá aplikace má jinak, jen přidělává práci..)

    jinak v klubu o C je to trochu offtopic.. frajeřina by byla ale napsat "compiler" v takové podmnožině Pythonu, aby jí pak (po doplnění silného typování, které by mohlo být rozeznané např.při použití double-commentářů ##) překladač sám dokázal přeložit do C - to už ontopic bude :-)

    jako je pravda, že některé dnešní tendence, typu že stejný fragment kódu na validaci nějakého vstupu může v javacriptu běžet na straně klienta i serveru tím asi nedoženu.. ale zajímá mi to teď už spíš jen jako čistě teoretický koncept... protože výkon při provozu řady vysloveně triviálních, učebnicových algoritmů, pracujících jen se stringy a paměťovými úložišťmi pak půjde srovnat v několika prostředích (a laděním "compileru" pak optimalizovat C verzi)
    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 :)
    DACAN
    DACAN --- ---
    popcorn++
    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
    Kliknutím sem můžete změnit nastavení reklam