• ú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 --- ---
    REDGUY: jako když by to dost šplouchalo, tak by se tam nějaká reaktivní síla teoreticky vytvořit mohla :-)
    REDGUY
    REDGUY --- ---
    Wait, what? Takze krome ANSI C/C99, letecke techniky a XChaosova ustrelovani vlastnich nohou a rukou jsou ted naplni tohohle klubu i citaty? A co treba motivacni plakaty? 8))

    XCHAOS
    XCHAOS --- ---
    XCHAOS
    XCHAOS --- ---
    Dennis Ritchie, Creator of C Programming Language, Passed Away - Slashdot
    http://tech.slashdot.org/story/11/10/13/0328230/dennis-ritchie-creator-of-c-programming-language-passed-away
    hustá, hustá, hustá debata, na Slashdotu...
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    Mne na celym tom tancovani kolem Jobse prislo asi nejsmutnejsi to, ze naprosta vetsina si ho pamatuje jen kvuli iphonu, ipadu a ipodu. Vesmes nikdo netusi co vlastne delal pred iphonem...
    XCHAOS
    XCHAOS --- ---
    Hmm, tak The server at stallman.org is taking too long to respond. tak se dnes nic nedozvíme.
    XCHAOS
    XCHAOS --- ---
    jako píšu teď takový společný smířlivý nekrolog pro oba současně, hodím sem pak odkaz.
    XCHAOS
    XCHAOS --- ---
    ANT_39: no, Stallman kritizoval nekritickou vlnu obdivu Jobsových fanoušků po jeho smrti... a vzápětí nám zemřel Ritchie.

    jako taky bych asi teď nepsal článek o některých vadách na kráse, které C nebo Unix mají, že ...
    ANT_39
    ANT_39 --- ---
    XCHAOS: Jak s tim souvisi Jobs a Stallman? O tom, co napsal, vim, ale spojeni mi unika.
    XCHAOS
    XCHAOS --- ---
    Zemřel Dennis Ritchie, tvůrce jazyka C a Unixu - Root.cz
    http://www.root.cz/zpravicky/zemrel-dennis-ritchie-tvurce-jazyka-c-a-unixu/
    O jeho smrti se dozvídáme teprve teď, protože se nikde neobjevila oficiální oznámení rodiny a běžná média Ritchieho neznají.

    Možná si Stallman minulý týden s tím Jobsem měl radši dát přeci jen pozor na jazyk... :-/
    Richard Stallman's Dissenting View of Steve Jobs - Slashdot
    http://tech.slashdot.org/story/11/10/10/1227229/richard-stallmans-dissenting-view-of-steve-jobs
    XCHAOS
    XCHAOS --- ---
    Dennis Ritchie, 1941-2011: Computer scientist, Unix co-creator, C programming language designer – Boing Boing
    http://boingboing.net/2011/10/12/dennis-ritchie-1941-2011-computer-scientist-unix-co-creator-c-co-inventor.html
    XCHAOS
    XCHAOS --- ---
    DAVIDOWITCH: libc má některé historické funkce vedené jako "deprecated" - viz např.
    man gets
    ...
    BUGS
           Never use gets().  Because it is impossible to tell without knowing the
           data  in  advance  how  many  characters  gets() will read, and because
           gets() will continue to store characters past the end of the buffer, it
           is  extremely  dangerous  to  use.   It has been used to break computer
           security.  Use fgets() instead.
    


    Jde o to, že spoustu let staré učebnice Céčka mohou vypadat všelijak. Např. scanf("%s",str) (bez formátovacího znaku) je podobně zlé, sice asi tam lze uvést max. délku, ale logika velí, že scanf je inverzní k printf() a prostě začátečníků by se to nemělo dostat pod ruku.

    Je fakt, že třeba přechod programátora uvažujícího v kategoriích událostma řízeného programování (či dokonce "vizuálního" programování) a třeba se znalostí Javascriptu/JQuery do Céčka si nějak vůbec neumím představit. Asi jediná cesta je když se někdo začne učit skriptovat pod unixem, tak pochopí ty základní koncepty (stdin, stdout, proces) - a potom logicky pochopí, že místo skriptu může chtít binárku, atd.... nedovedu si ale představit, že kdo programuje pro Windows, by nějak jednoduše ustoupil z úrovně abstrakcí jako události, objekty, apod. a rovnou přešel k Céčku.

    Myslím, že když i tady polovina debaty je o tom, zda používat Céčko místo C++ je obskurní, tak s těmi začátečníky je to složité. Buď prostě někdo objekty má rád a nebo ne.
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    Nenapovidam, ja krom scanfu uz nacitim jen z input streamu do std::stringu, takze fakt netusim jestli na to libc nema nejakej fajn hack.

    XCHAOS
    XCHAOS --- ---
    DAVIDOWITCH: no možná s tím scanf() jsem střelil vedle... největší zlo je gets().

    ve svém makro-dialektu jsem používal výhradně fgets(), ze streamu stdin, jak napovídáš. od gets se liší uvedením velikosti stringu. a právě proto, že syntaxe je trochu ukecaná, jsem začal pomýšlet na obalování těmi makry.
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    XCHAOS: Ok, a jak se nacita jinak? (streamum predpokladam moc nehovis)
    XCHAOS
    XCHAOS --- ---
    DAVIDOWITCH: budiž, ale kdo ze začátečníků ho fakt použije? prostě nevím, jestli je dobré, aby se dnešní céčkaři začátečníci učili podle 20-30 let starých Getting started... sekcí různých manuálů, to je celé.
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    XCHAOS: scanf ma parametr kterej umoznuje urcite maximalni dylku stringu....
    REDGUY
    REDGUY --- ---
    XCHAOS: vždyť vypisuješ hodnotu pole[5] Ehm. 8))
    XCHAOS
    XCHAOS --- ---
    LUDO: život je krutý. jinak až to pole budeš chtít načítat, tak PROSÍMTĚ nepoužívej scanf(), ačkoliv některé starší manuály ti to mohou radit. nebo resp. můžeš ho používat právě tak ještě na ty integery a floaty - ale určitě ne na stringy.... a protože "všechno je string" (pokud se načítá např. něco ze souboru, apod.) tak první věc, před kterou bych začátečníka varoval je, že C si nic nehlídá: stejně jako nehlídá překročení velikosti pole, tak ani funkce libc nehlídají, jestli si alokoval dost velký string, apod. - toto je základní odlišnost proti většině vyšších jazyků.

    některé "kanonicke" funkce libc jsou nebezpečné, a právě když už by nějací začátečníci stáli o to začít s C od začátku (já počítám, že v tomhle klubu nejsi jediný, ale ostatní se drží stranou), tak by asi mohlo mít smysl varovat je před některými praktikami a postupy, které vedou k opravdu častým chybám.
    LUDO
    LUDO --- ---
    XCHAOS: jeeezis, to este ten printf musi do cyklu
    XCHAOS
    XCHAOS --- ---
    LUDO: no.. céčko prostě není python. (a i tam by ti to dělalo to samé, jen bys mohl vypsat jediným printem celé pole) vždyť vypisuješ hodnotu pole[5] - čemu se divíš?
    Kliknutím sem můžete změnit nastavení reklam