• ú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í
    REDGUY
    REDGUY --- ---
    XCHAOS: Promin, ale kdyz se ti bez chyby prelozi C program, tak nemas jistotu vubec zadnou. Nevim na co presne narazis zminkou o "skriptech", ale jestli ti jde o typovou kontrolu, tak prekvapive existuji jine jazyky nez C ktere ji maji, v rade pripadu i mnohem lepsi.
    XCHAOS
    XCHAOS --- ---
    REDGUY: já nejsem nijak striktní. poslední zásahy do nějakého kódu, co jsem udělal, se týkaly drobných oprav skriptů v shellu nebo php ... pár řádek jsem spáchal i v Pythonu... V C bych dělal rád, ale jaksi ... bez nějakého toolkitu a vůbec základní odvahy k tomu není motivace.

    ale když už jsem pochochopil, co je potřeba k napsání robustního a stabilního C kódu (tedy, nesnažit se přistupovat k NULL pointerům, což se člověk na druhou stranu naučí po čase téměř automaticky a dává to i do každé podmínky a tak), tak je mu to líto zahodit. je to jako by si už jednou zvládl salta na snowboardu (tam je teda nezvládám, ale umím si představit, jaký by to byl pocit), ale nebylo by pro to uplatnění a všichni by ti vysvětlovali, že jezdit na sáňkách je daleko lepší, protože to můžou dělat všichni.

    prostě jistotu, kterou mám, když se mi bez chyby přeloží nějaký C program (a vím, že jsem v něm nedělal zásah do modulů, které už jsou prověřené jako stabilní), tu mi žádný skript prostě nedá.
    REDGUY
    REDGUY --- ---
    JANFROG: No prave. Proto mi XChaosovo striktni trvani na C prijde smesny. Navic pokud (aspon jak to chapu) mu jde o to ucit se.
    XCHAOS
    XCHAOS --- ---
    UETOYO: úplně nesmyslné porovnání to nebylo. kromě toho to byl vtip. (ale potrefená husa se holt ozvala...)
    JANFROG
    JANFROG --- ---
    UETOYO: Dobra otazka. Hlavni duvod je historicky. Ale i kdybych mel moznost to napsat cele znovu (ach, krasna predstava :-) tak bych se asi dele rozmyslel. OS API je C tak jako tak, semantika C++ je o dost slozitejsi a fakt ze C++ nema definovan mangling, tudiz linkovani je problematictejsi take nenahrava.
    Pokud C++ pak striktne definovanou podmnozinu.

    Ale je fakt ze jedna z cest kterou bych rad zkusil je hybridni implementace v HLL jazyku s "pluggable" typovym systemem "transpiled" do C++. (sakra, asi zacnu psat anglicky, tohle je fakt hrozny).
    Kazdypadne jsem zatim neudelal dost experimentu timto smerem abych mel jasno.
    JANFROG
    JANFROG --- ---
    XCHAOS
    XCHAOS --- ---
    JANFROG: jenže to je je přesně to: mě třeba memory management zajímá. nějaké nápady ohledně toho mám, ale zkušenosti jsou v podstatě z 16bit DOSu (kde se řešily fakt psí kusy) a v Linux jsem se na to vykašlal, protože paměti bylo dost, a já psal spíš "skripty", než rozsáhlejší aplikace (prostě jsem neřešil dealokaci paměti, protože se jí zabralo trochu a program pak stejně brzo skončil)

    možností v C je několik, jsou tu různé náhrady za malloc/free, je tu Glib, jsou tu různé hračky... ale ne, místo toho se tady budeme bavit s trolem, který nám vysvětlí, že C je celé špatně a nemá cenu tyhle věci studovat (kromě toho, že tu tuším právě REDGUY, pokud si ho s někým nepletu, před časem navrhoval např. alloca(), které když jsem si pořádně nastudoval, tak jsem zjistil, že je pro věci, které mi zajímají naprosto nevhodné - paměť alkovanou na stacku nejde vrátit pomocí return, například... takže mi ta rétorika čím dál tím víc připadá jako "já jsem nepřišel na to, jak některé věci udělat v C, takže C je tím pádem celé špatně!")
    REDGUY
    REDGUY --- ---
    JANFROG: Nejdriv jedna otazka: ted ty interpretry a generatory kodu pises v C nebo C++?
    XCHAOS
    XCHAOS --- ---
    REDGUY: protože když nějakej jazyk znám 20 let, tak řeším, k čemu dalšímu ty znalosti použít - místo toho, abych se učil od nuly něco dalšího a seznamoval s neočekávaným chováním apod.

    prostě z nějakého důvodu ti stojí za to úsilí bojkotovat klub, určený pro lidi, který baví/zajímá spíš C než C++. Nebo pro lidí, které baví/zajímá kromě C++ i C. prostě nechápu proč: pod Linuxem je v tom pořád napsaná většina knihoven (když ne aplikací), je to obrovská resource base, nad kterou lze s minimem úsilí udělat něco vlastního. mě zajímá, jaký má kdo názor na to, jak to "něco vlastního" udělat správně. A C++, navzdory názvu, nemá v některých ohledech s C společného o moc víc, než ten JavaScript (tzn. složené závorky :-) a teda konkrétně navíc je taky kompilované, ale tím to fakt končí.

    na většině jiných míst na NYXu by tě s přístupem "tenhle klub je celý špatně" už dávno zabanovali...
    JANFROG
    JANFROG --- ---
    Psat interpreter/generator kodu v C proto, ze driv to tak lidi delali a chci si to vyzkouset stejne jako experimentali archeologove zkousi zivot v hlinenych chatrcich, dava smysl. Ale pokud to delam proto, ze se chci naucit jak dobre psat interpretr/generator kodu, tak C je jedna z nejhorsich moznosti.
    - LOL!

    (nepripada vam reagovat v odborne diskuzi stylem "LOL" ponekud detinske? Ale k veci)
    To co uvadis je dost silne tvrzeni a - dle meho nazoru - prinejmensim zavadejici.
    psanim (dobrych) interpreter, generatoru kodu se se zabyvam delsi dobu (rekneme nekdy od 2005) vice ci mene intenzivne (t.j, delam to temer kazdy den, zivi me to). Po tech letech si naopak myslim C, potazmo C++ je jedina moznost, jak se naucit to delat poradne.
    V tomto "oboru" je hodne veci, ktere si pri praci v Java/Pythonu/LISPu proste clovek nenauci, nevyzkousi.
    Veci ohledne datove lokality, skoku, cache spill, triky s mprotect() / madvise(), memory alignment...
    Problem je, ze pokud to chces delat "dobre", pak "Performance matters!" (Lars Bak)
    REDGUY
    REDGUY --- ---
    XCHAOS: A ja se prave snazim naznacit, primarne tedy tobe, ze je fakt dobrej napad zamyslet se nad tim, jestli "necitim potrebu resit proc C" je dobry pristup a jestli, kdyby ses otevrel jinym jazykum, by to z tebe treba neudelalo lepsiho programatora.
    XCHAOS
    XCHAOS --- ---
    REDGUY: tenhle klub je pro lidi, kteří mají nějaký důvod programovat v C a necítí potřebu ho řešit. uznávám, že v záhlaví to mám formulované trochu divočeji :-)
    REDGUY
    REDGUY --- ---
    XCHAOS: Samozrejme, zalezi ceho chces dosahnout. Pokud si svuj cil natvrdo nadefinujes jako "jak tohle dobre programovat v C", tak ano, nema smysl se bavit o jinych jazycich. Ale podle me, mnohem zajimavejsi otazka je "proc bych to vubec mel chtit programovat v C".

    proč? protože v minulosti se to právě nezřídka dělo! - LOL! Zase: pokud to myslis podobne jako ti, pro ktere studium vojenstvi znamena reenaktovani bitev obcanske valky, tak ano. Psat interpreter/generator kodu v C proto, ze driv to tak lidi delali a chci si to vyzkouset stejne jako experimentali archeologove zkousi zivot v hlinenych chatrcich, dava smysl. Ale pokud to delam proto, ze se chci naucit jak dobre psat interpretr/generator kodu, tak C je jedna z nejhorsich moznosti.

    Btw, prijde mi, ze uz zase prubezne posouvas branku jak se ti zrovna hodi. Myslis ze bys mohl nejak explicitne specifikovat, PROC vlastne chces C? Je to proto, ze chces iluzi kontroly? Proto, ze driv se v nem psali veci a chces byt neco jako experimentalni historik? Nebo proto, ze si myslis, ze tak "vymacknes" z pocitace co to da?
    XCHAOS
    XCHAOS --- ---
    REDGUY: mno, nevím, jestli se má člověk "stát dobrým programátorem" (má někdo vůbec takový cíl?) pomocí pochopení jazyka C. ale podle mě lze debatovat o tom, jak tu či onu věc v C dobře naprogramovat. A některé praktiky, ačkoliv samy o sobě jsou validní, můžou znemožnit např. údržbu kódu více lidmi (protože původní vývojář zahrnul nějaké předpoklady, o kterých autor patche nic netušil).

    nevím, mj. je i velká šance, že třeba lidi, kteří by si chtěli navrhnout vlastní interpreter (nebo třeba i generátor kódu) sáhnou právě po C (proč? protože v minulosti se to právě nezřídka dělo!).
    REDGUY
    REDGUY --- ---
    XCHAOS: jediný nástroj nebude nikdy vhodný pro všechny - ano.

    C je celkem dobrý nástroj k pochopení, jak některé věci fungují - to je tak obecny vyrok, ze je to v podstate tautologie.

    někteří lidi se prostě chtějí naučit dobře zatloukat hřebíky a nepraštit se u toho přes prsty - jenomze tady se tvoje podobenstvi rozpada. Jestli je tvym cilem naucit se C, no, tak asi ano, na to je C fakt dobry nastroj. Ale jestli je tvym cilem stat se dobrym programatorem, C je spatna volba. A to je i odpoved na tvoji predposledni otazku 8))
    XCHAOS
    XCHAOS --- ---
    REDGUY: já popravdě nevím, k čemu programátory vedeš ty. především se mi zdá, že je odrazuješ od spolupráce se mnou...
    XCHAOS
    XCHAOS --- ---
    REDGUY: jinak jak psát "udrzovatelny a kvalitni kod" mi samozřejmě zajímá taky. to asi zajímá každého. na druhou stranu - poslepovat kód z ready-made komponent, kterým nerozumím, nemusí být nutně odpověď na tuto otázku. lidi, který zajímá, "jak něco funguje uvnitř", budou v určité míře potřeba i v budoucnosti. ne pro každého je jazyk C správná odpověď, ale já se chci bavit s těmi, kteří hledají, jestli to třeba správná odpověď zrovna pro ně není - a ne s těmi, kdo jsou si jistí, že ne.
    REDGUY
    REDGUY --- ---
    XCHAOS: No, hele, pokud napisu "C ma svoje misto, ale existujou lepsi nastroje" a ty to prekroutis do "posledni co napisu v c bude databaze a pak kdyz nevim kolik, tak to v ni naskriptuju", tak proste prekrucujes co pisu abys proti tomu mohl argumentovat - a to je podstata strawman fallacy.

    ty se účastníš debatního klubu o C s tím, že chceš dokázat, že to je okrajová záležitost - myslim, ze o tom proc se ja ucastnim tohohle klubu bych mel mluvit ja, ne ty. Ledaze bys v posledni dobe ovladl telepatii?

    snažit se programátory vést k C++ - a znovu: kde PROBOHA delam neco takoveho? Vzdyt jsem ani C++ nezminil.


    vést je směrem, kdy se smíří s používáním abstrakcí, které nechápou, jak fungují uvnitř - ne. Pokud se tak deje, je to problem toho, jak se ten jazy uci, ne samotneho jazyka. A v pripade C mas presne ten samy problem, mensi jen o to, ze v C je tech abstrakci o neco mene. To ze nejsi schopnej se jazyk naucit poradne (nebo ze te ho nekdo ucil blbe) neni duvod ten jazyk zavhrnout. A zbytek odstavce je zase obecne filosofovani, ktere je v lepsim pripade o OOP obecne, v horsim..., no radsi to necham stranou 8)
    XCHAOS
    XCHAOS --- ---
    UETOYO: tak se vrať k sobě do klubu, a čekej, až se ti někdo lapí do tvých objektových sítí :-)
    XCHAOS
    XCHAOS --- ---
    REDGUY: tak s tím paralelismem vyjímečně souhlasím - že je - nejen v C - potřeba udělat něco, aby thready šlo používat jednodušej (co takhle třeba jen "iterace bez udání pořadí" - tu je možné paralelizovat podle počtu jader, kdyby na to byla jedna instrukce, usnadnilo by to spoustu práce)

    jinak co potřebujem a co ne, to je trochu tvůj "plural majesticus". zaměstnanec korporace má asi jinou představu, co potřebuje, než vývojář na volné noze nebo dokonce amatér. jediný nástroj nebude nikdy vhodný pro všechny. aby mohl někdo používat hotovou abstrakci, musí jí někdo jiný naprogramovat. proč je interpreter Pythonu pořád napsaný v C a ne v C++? apod...

    C je celkem dobrý nástroj k pochopení, jak některé věci fungují - je to kladivo, a lze na něm okoukat, jak zatloukat hřebík. není to parního buchar uvnitř nějaké ochranné klece, do které dáš věc do které chceš zatlouct hřebík, a ona ti z toho vypadne ve většině případů se zatlučeným hřebíkem a v jednom případě ze sta s ohnutým nezatlučeným hřebíkem, takže musíš zavést výstupního kontrolora kvality a zohlednit to v kalkulaci nákladů a vůbec dělat všechny ty věci, které korporace milují, protože je to to, v čem jsou vážně dobré: celý blackbox parního bucharu můžeš spolehlivě používat celá desetiletí, aniž by si chápal, jak funguje, a můžeš vykřikovat, že potřebuješ víc podavačů hřebíků co to rovnají na běžící pás a víc kontrolorů kvality a víc lidí, co umí prodat zatlučený hřebík - a přitom nikdo v celém tom cyklu nemusí mít ponětí, jak se zatloukají hřebíky, protože parní buchar dodává jiná korporace (teda pokud nestihne zkrachovat dřív, než se buchar rozbije)

    to je všechno pěkné, ale někteří lidi se prostě chtějí naučit dobře zatloukat hřebíky a nepraštit se u toho přes prsty. pro tyhle je tenhle klub, a ty sám přiznáváš, že pro tebe ní, tak proč sakra celá ta debata s tebou? (já třeba dostal v konferenci Marxismus na NYXu ban hned, když jsem tam napsal, že mám celkem rád Karla Poppera... proč ty nedostaneš ban tady?)
    XCHAOS
    XCHAOS --- ---
    REDGUY: jasně, všechno je "strawman fallacy"... (aspoň v posledních 10 příspěvcích od tebe). faktem je, že ty se účastníš debatního klubu o C s tím, že chceš dokázat, že to je okrajová záležitost. moderátor klubu se domnívá, že to až tak okrajová záležitost není (min. objem legacy free/open source software napsaný v C je jedním slovem obrovský)... a že např. pokud by se C učili středně pokročilí programátoři, kdyby přitom byli seznámeni s nějakou sadou "best practices" jak se nestřelit do nohy (která se jim neztratí mimochodem ani u těch embded minisystémů), tak by to nemuselo mít špatné výsledky.

    naproti tomu, snažit se programátory vést k C++ znamená podle mě vést je směrem, kdy se smíří s používáním abstrakcí, které nechápou, jak fungují uvnitř. a navzdory rozšířené propagandě, objektový model není obrazem fungování světa, ale obrazem fungování hierarchických struktur uvnitř lidské společnosti (což diskutabilně... může být užitečné k tomu najít si dobře placené zaměstnaní, uznávám). Stůl nedědí vlastnosti objektu "noha od nábytku" a stůl a židli není vhodné navrhnout jako extenzi objektu noha, aby mohly stát na podlaze - fakticky, objekty v reálném světě jsou smontované ze součástí, mezi kterými není hierarchický vztah. Tzn. i softwarové objekty nakonec budou smontované či poslepované z objektů, které budou zahrnovat vlastnosti jiných objektů, ale ne děděním. To určitě neznamená, že se vše bude psát v čistém C, ale min. to znamená, že má smysl zajímat se i o jiné abstrakce, než nabízí dnešní OOP.
    Kliknutím sem můžete změnit nastavení reklam