• ú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
    ISTEVE
    ISTEVE --- ---
    XCHAOS: Zkus si nasobeni matic (takovy to "radek krat sloupec"). Pak si zkus nasobeni matic s tim, ze si tu matici kterou bych prochazel po sloupcich transponujes. Zmer rozdil.
    XCHAOS
    XCHAOS --- ---
    Tenhle klub jsem právě zakládal proto, aby člověk co se cítí doma v C (tedy je třeba si sám ochoten řešit správu paměti, nebo aspoň přemýšlení o ní - a tedy řeší např. co se mu doopravdy vejde do paměti a u čeho naopak hrozí, že mu to na slabším stroji (nebo při větším množství paralelně spuštěných procesů) vyswapuje na disk, mohl nahlédnout odbočky na nižší i vyšší level: nižší level znamená zrovna třeba přihlédnout k propustnosti sběrnice a optimalizovat směrem na cacheování uvnitř CPU - a ten vyšší level je zase poohlédnout se po sofistikovanějších abstrakcích, které nabízí různé vyšší jazyky a ukázat, jak by se srovnatelná funkce dala implementovat v C.
    XCHAOS
    XCHAOS --- ---
    JACHYMKO: jako právě tohle je level optimalizací, na který já jako "čistý céčkař" (ale ne assemblerista) už běžně nedohlédnu (stejně jako uživatel vyššího jazyka nedovede posoudit, jak mu ten jazyk zvyšuje režii oproti třeba právě C)
    XCHAOS
    XCHAOS --- ---
    (jinak souhlasím s id JACHYMKO, že matici je asi moudré v C reprezentovat jako vícerozměrné pole, protože ta architektura je rovnou navržená aby to bylo stejně efektivní, jako vypočítat si ze souřadnic index v nějakém jednorozměrném bufferu.... u vyšších jazyků to z různých důvodů nemusí být pravda - např. by tam mohl dvakrát volaný nějaký kód pro kontrolu zda indexy nepřekračují hranici pole, apod. - nechci rozpoutat flejm, jak to na které architektuře je jak moc optimalizované... ale zrovna nad implementací vícerozměrných polí v jazycích připouštějících re-alokaci pole za chodu a /nebo kde je dvourozměrné pole implementované jako kontejnerový objekt obsahující jiné kontejnerové objekty bych se klidně s chutí zasmál :-))
    XCHAOS
    XCHAOS --- ---
    (asi to hodím do záhlaví, resp. přečtěte si man highlight, ono to toho umí daleko víc... troufám si říct, že i víc, než pastebin... a výstup lze snadno inlineovat)
    XCHAOS
    XCHAOS --- ---
    k tomu jak sem pastovat fragmenty zdrojů (nejen Cčkových) ... toto je tak napůl posixové/unixové/linuxové fórum, takže:


    apt-get install highlight
    echo "for(i=0; i<n; i++) { printf("%d\t", matica[i]); if ((i+1)%cols==0)" | highlight -S c --inline-css


    výsledek:
    for(i=0; i<n; i++) { printf(%dt, matica[i]); if ((i+1)%cols==0)


    (poznámka: NYX vyžaduje vyhodit z vygenerovaného inline CSS na začátku atribut "font-family")
    LUDO
    LUDO --- ---
    JACHYMKO: tak teraz mam ten vypis takto a funguje to

    [C] for(i=0; i<n; i++) { printf("%d\t", matica[i]); if ((i+1)%cols==0) { - Pastebin.com
    http://pastebin.com/muXqtX9c
    LUDO
    LUDO --- ---
    JACHYMKO: tak matica ma byt deklarovana ako jednorozmerne pole, ale pochopil som uz kde je chyba
    LUDO
    LUDO --- ---
    JACHYMKO: dik uz je to o nieco lepsie, zacnem ale teda odzaciatku. Pred mesiacom som zacal s programovanim a momentalne mam spravit zadanie:

    Vytvořte program ve kterém budete moci za běhu programu zadávat rozměry matice a alokovat a uvolňovat pro ní pamět z paměťové haldy (memory heap) pomocí funkcí malloc a free. Vytvořte demonstrační program, kdy prvky matice inicializujte pomocí náhodných čísel. Celou matici uložte do jednorozměrného pole.

    Hned sa priznam, ze som uplne dobre nepochopil ukazovatele a momentalne ten program v podstate funguje ale nahodne cisla sa tam stale po sebe opakuju. Kod:

    https://docs.google.com/document/d/1RxiMsD9PFqXI10knibLl5x6O6KuEEWDapRBKONlzNFM/edit?authkey=CLbIhusM
    LUDO
    LUDO --- ---
    preco do doprdele vracia stale tie iste cisla?

    srand((unsigned) time(NULL));
    matica[i]= rand() % 100;
    XCHAOS
    XCHAOS --- ---
    docela vypjaté emoce, v tom počítačovém světě...

    Dennis Ritchie Day - O'Reilly Radar
    http://radar.oreilly.com/2011/10/dennis-ritchie-day.html
    Sunday, October 16 was declared Steve Jobs Day by California's Governor Brown .... I don't have the convening power of a Governor Brown, but for those of us around the world who care, I hereby declare this Sunday, October 30 to be Dennis Ritchie Day! Let's remember the contributions of this computing pioneer.
    XCHAOS
    XCHAOS --- ---
    Program or be Programmed: The GeekDad Interview With Douglas Rushkoff | GeekDad | Wired.com
    http://www.wired.com/geekdad/2011/07/douglas-rushkoff/
    XCHAOS
    XCHAOS --- ---
    Dvacet let Linuxu: Zajímavé vynálezy - Linux E X P R E S
    http://www.linuxexpres.cz/aktuality/dvacet-let-linuxu-zajimave-vynalezy
    Linux přinesl do světa počítačů a softwaru hodně zajímavých novinek. Připomeňme si některé z nich - byla by škoda, kdyby se na ně zapomnělo.

    K pochopení některých těchto vynálezů je ovšem alespoň základní znalost Céčka vhodné.
    XCHAOS
    XCHAOS --- ---
    to už začíná být trochu příliš offtopic.
    XCHAOS
    XCHAOS --- ---
    JACHYMKO: kritériem teorie je praxe. to věděl už Marx.
    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.
    Kliknutím sem můžete změnit nastavení reklam