• ú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
    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íš?
    LUDO
    LUDO --- ---
    nejaka rada totalnemu zaciatocnikovi ako vypisat do konzoly pole?

    Nejaky totalne zakladny program:

    #include <stdio.h>

    int main(void)
    {
    int pole[6];
    int i;

    for (i = 0; i < 6; i++){
    pole[i] = i;
    }
    printf("%d ", pole[i]);

    return 0;
    }

    A vypisuje mi to len poslednu hodnotu.
    XCHAOS
    XCHAOS --- ---
    DAVIDOWITCH: jo, je to vtipné. asi to hodím do sekce odkazů na mojí wiki (proto se já sám snažím jen o dialekt, a ne o nový jazyk, že...)
    XCHAOS
    XCHAOS --- ---
    ISTEVE
    ISTEVE --- ---
    "[ ] Rejection of basic computer science without justification" :D
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    Programming Language Checklist
    http://colinm.org/language_checklist.html
    XCHAOS
    XCHAOS --- ---
    REDGUY: ano, ale já do téhle kategorie zřejmě spadám, jako budovatel telekomunikačních sítí :-) jo, souvisí to jak s technikou, tak obchodem... a je fakt že teď to už osobně moc nedělám... ale prostě ne všechno se tam dá spočítat. třeba ceník, se kterým přijde konkurence příští rok a takové věci.
    REDGUY
    REDGUY --- ---
    XCHAOS: i když si myslím, že nejsem od inženýrského uvažování až tak daleko - jen pro upresneni, slovo inzenyr jsem pouzil v americkem smyslu "a person who designs, builds, or maintains engines, machines, or public works.", ne jako titul. A ver mi, se svym lpenim na fantazirovani a metaforach a neschopnosti si cokoliv byt jen problizne spocitat jsi od takoveho inzenyra stejne daleko jako ja od supermodelky. A ver mi, to je hodne daleko.
    Kliknutím sem můžete změnit nastavení reklam