• ú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
    XCHAOS
    XCHAOS --- ---
    ANT_39:
    ANT_39: obecné přirovnání programátorů v C++ k leteckým dispečerům (myšlena na velkých mezinárodních letištích) bez další omáčky byste ale snad akceptovat mohli a to by ten flamewar ukončilo.

    já mám ambice být tak max. dispečerem na letišti malého aeroklubu, kde létají větroně, skáče se tam z padáku, občas nějaký ten vyhlídkový let, vrtulník záchranné služby, apod.
    XCHAOS
    XCHAOS --- ---
    ANT_39: každopádně je milé, ja se mi současně vysmíváš a současně připouštíš, že o odlišných alokačních strategicích přemýšlí i jiní lidé. tedy chápu to tak, že když to dělám já, je to směšné - a když to dělají ostatní, tak to vydá za článek na Wiki ? inu, tak to jsem asi fakt punkáč, no :-)

    REDGUY: tohle je (u tebe vyjímečně) ontopic copy+paste a není v tom nic, v čem bych nesouhlasil. odkazy,jak v ANSI C používat garbage collector místo obyčejného malloc() tady už proběhly a určitě byly přínosem.
    REDGUY
    REDGUY --- ---
    hmm, zajimavej komentar k tematu ze Slashdotu:

    When you're doing serious structure-hackery (as opposed to, say, string-hackery or numeric-hackery) in a non-GC language, you often end up having to structure your code around variable lifetimes, rather than structuring it around the algorithms like you're supposed to. The lack of GC can mean that some algorithms are not viable, and can result in the developer picking a worse algorithm instead. This kind of cost won't easily show up on a profile, but the cost is there, and it's nonzero.

    Compiler writers in particular know this, which is why even GCC uses GC. Yes, it's home-built application-specific carefully-applied-and-tuned GC, but it's GC nonetheless. I have a theory that one of the reasons why most languages use GC is that most languages are optimised for writing their own compiler in.

    Oh, and in a multi-threaded application, free() can be more expensive (in a latency sense) than malloc(). A well-tuned memory allocator maintains multiple arenas, so it can can allocate memory from whichever one has the lowest thread contention. But deallocating memory requires returning it to the arena from whence it came; you have no choice in this. Some high-performance applications (e.g. database servers) have been known to avoid the latency of free() by handing off critical memory blocks to a dedicated thread which just sits in a loop calling free(). Essentially, it's a GC thread, only it's a manual one.

    Don't get me wrong. I don't use Java for pretty much anything (definitely more of a C++-head). But one should never underestimate the cost of manual memory management, or of any other resource for that matter.
    ANT_39
    ANT_39 --- ---
    XCHAOS: A ze se programator v C++ lisi od programatora v cemkoli jinym z hlediska prescasu a penez, co si za to rekne, to by chtelo nejaky solidni data, abych tomu zacal verit.
    ANT_39
    ANT_39 --- ---
    REDGUY: Ja zas s nostalgii vzpominam na Marušku :)

    Jinak ty alternativni alokacni techniky nejsou zas tak nova vec, ne? Nabizi se https://secure.wikimedia.org/wikipedia/en/wiki/Slab_allocation, https://secure.wikimedia.org/wikipedia/en/wiki/Obstack, a https://secure.wikimedia.org/wikipedia/en/wiki/Memory_pool . Samozrejme nevim, co to ma ve finale byt, ale ne na vsechno je malloc/free idealni. Je samozrejme otazka, jestli to dava smysl jako genericky alokacni nastroj, to se pozna podle toho, jak to Xchaos napise, ze :)
    ANT_39
    ANT_39 --- ---
    XCHAOS: Ten paper k tomu neni nezajimavej, asi to stoji za precteni. Genialni je asi dost silny slovo, ale nektery ty optimalizace, ktery tam pro C++ delaji, jsou celkem zajimave. Z velke casti je to o organizaci dat v pameti (zmeny v tom, jakou strukturou co reprezentujes) abys mel co nejlepsi lokalitu a nemel tam zbytecny ukazatele. Optimalizace pro C by imho vypadaly dost podobne.
    REDGUY
    REDGUY --- ---
    XCHAOS: ještě se divíte, že chci vyvíjet remeber {} a forget {} makra - myslim ze nejsem sam kdo se velmi tesi na tvuj design. Obcas mi se mi stejska po tom, jak jsi nam pred par rokama vysvetloval tvuj kontextovej alokator, nebo jak se to jmenovalo. Uz mas nejakej navrh? Na cem budou postaveny? Co budou umoznovat? Proc budou lepsi nez malloc/release?
    REDGUY
    REDGUY --- ---
    XCHAOS: chápu, že očekávat od tebe takovou míru dovtipnosti by bylo moc: Hele, ja rozumim ze mi za kazdou cenu musis odporovat a snazit se me urazet, ale tocit se na takove nepodstatnosti jako tohle? Notabene takove ktera nijak nesouvisi s predmetem debaty a dokonce neni ani mirena proti tobe? ROFL, ty to fakt beres dost osobne 8)

    btw, co [ REDGUY @ ANSI C/C99 (specifikace), GNU C (gcc, glibc), Tiny C (tcc) a POSIX - ne nutně C++,g++,libstdc++ nebo Win32 API ] ? Bude nejaka odpoved nebo to radsi tak nejak zamluvime? 8)
    XCHAOS
    XCHAOS --- ---
    SKIM: heh: "The Java version was probably the simplest to implement, but the hardest to analyze for performance. Specifically the effects around garbage collection were complicated and very hard to tune. Since Scala runs on the JVM, it has the same issues."

    tenhle článek jako kdybych psal já ! ještě se divíte, že chci vyvíjet remeber {} a forget {} makra ? :-)
    XCHAOS
    XCHAOS --- ---
    SKIM: no mě programátoři v C++ právě nepřipadají jako extra geniálnější, než právě třeba (dobří) codeři v C. Některé konkrétní algoritmy určitě vyžadují genialitu, aby je někdo vymslel, to je bez diskuze... ale spíš bych programátory v C++ klasifikoval třeba jako letecké dispečery: ti také dělají něco, v čem se točí velké peníze, a jsou tedy dobře placení - protože když to udělají špatně, tak mohou způsobit spoustu škody. a společné mají i ty noční přesčasy a tak.
    SKIM
    SKIM --- ---
    XCHAOS: Mě se líbí tento titulek
    Google pits C++ against Java, Scala, and Go: C++ wins. If you're a genius
    Google pits C++ against Java, Scala, and Go • The Register
    http://www.theregister.co.uk/2011/06/03/google_paper_on_cplusplus_java_scala_go/
    XCHAOS
    XCHAOS --- ---
    REDGUY: cituji to z odkazu, pod kterým jsme napsal "cituji:" - ale chápu, že očekávat od tebe takovou míru dovtipnosti by bylo moc ...
    REDGUY
    REDGUY --- ---
    XCHAOS: C is closest to ASM and thus can be (theoretically) optimized best - nevim odkud to citujes, ale je to nesmysl. Jak obecne (to ze je jazyk blizky ASM ani nahodou neimplikuje ze by mel byt nejlepe optimalizovatelny), tak konkretne (nektere vlastnosti C komplikuji optimalizaci ve srovnani s jinymi jazyky).
    XCHAOS
    XCHAOS --- ---
    ANT_39: momentálně v trunku nic použitelného nemám.

    byly předchozí dva "releasy", z čehož ten 0.6 byl inspirovaný spíše mým chatrným povědomím jak vypadá Perl, a už dávno mě bylo jasné, že je to slepá ulička.

    verze 0.7 je v repository taky - ale i když už jsem tam zamířil výrazně lepším směrem, tak jsem pod vlivem setkání s Pythonem usoudil, že je to příliš košaté a neystémové.

    v současnosti chci začít od začátku, vtípky s then buddhismem nechám až na konec (nějaký aprílový release, nebo tak něco), a chci to postavit na for_each() {} , try { fail() } except() {} a liberálním garbage collection v rámci celých scope pomocí remember{} a forget{}

    pokud se mi podaří omezit pro začátek počet nově zabraných klíčových slov tak třeba na 20, tak budu opravdu spokojený. předchozí verze byla moc košatá, to nebylo v duchu C.
    XCHAOS
    XCHAOS --- ---
    C++ the Clear Winner In Google's Language Performance Tests - Slashdot
    http://developers.slashdot.org/story/11/06/15/0242237/C-the-Clear-Winner-In-Googles-Language-Performance-Tests
    C++ clear winner in Google language tests - 06 Jun 2011 - Computing News
    http://www.computing.co.uk/ctg/news/2076322/-winner-google-language-tests

    ... safra safra, to bych se na to podíval tedy... to by mě zajímalo, jaké použil benchmarky (no ok, ten můj byl taky trochu trapný...).

    cituji C is closest to ASM and thus can be (theoretically) optimized best but it's a pain in cross-platform world then. - a o to se právě snažím já - chtěl bych nad C udělat něco takového, jako je JQuery nad Javascriptem
    XCHAOS
    XCHAOS --- ---
    ANT_39: ok, i tohle tam asi nebude. jako že jo... mě nejdřív inspiroval ten obfuscated code contens.

    ale teď mě zajímají spíš iterační makra a memory management. lidé se s časem mění :)
    XCHAOS
    XCHAOS --- ---
    _BENNY: no z těhle pozic jsem už trochu ustoupil... bude to o něčem trochu jiném :)
    _BENNY
    _BENNY --- ---
    ten then-buddhismus me zaujal

    TečkaCZ - Věci se nedějí spolu
    http://teckacz.cz/517

    Každopádně v souvislosti s pohledem na nesnesitelně elegantní odsazení v ukázkových fragmentech zdrojového kódu v Pythonu jsem pocítil silnou nostalgii po jednoduchém a krásném If - Then - Else - Endif, který nabízel Basic. A následně jsem došel osvícení, a založil učení, které nyní nazývám pracovně "then-buddhismus". Do souboru cll1.h jsem přidal tento řádek:

    #define then
    A to je vážení přátelé, podstata učení zvaného then-buddhismus. Škoda, že pointu pochopí jen dlouholetí uživatelé jazkya C... ale takový už je život. Céčkaři ho jistě neměli lehký, tak tohle mají za odměnu. Proč definovat then ? No čistě jen proto, že díky tomu pak můžete klidně v Cll1 klidně psát if - then úplně stejně jako v Basicu :-) Čirá nostalgie po 8bitových domácích počítačích... :-)
    if (1+1==2) then
    {  
     printf("Funguje to.");     
    }


    (Jediný rozdíl je samozřejmě ten, že vám u Cll1 nikdo nevynadá, když na ten then zapomenete :-) Ať žije svoboda :-)
    ANT_39
    ANT_39 --- ---
    XCHAOS: No, tak jsem crl1 vyzkousel.

    V dokumentaci "advanced" nemas popsany vyjimky, zato je tam nesmyslna stat o then-buddhismu. Vubec nechapu, proc to tam je. Stejne tak mi unika uzitecnost veci jako MAYBE a WHOKNOWS. Jestli s tim mas seriozni zamery, tak bych tyhle filozoficky picoviny vyhazel, a soustredil se na technickou stranku veci.

    Stran pouziti, prazdny soubor s #include "clr1.h" dostane v gcc -pedantic nejaky warningy a selze linkovani, protoze coalesce neni definovano. Rikam si, urcite neco delam blbe, kouknu do tech demos, jak to ma byt. Tam samozrejme nic neni. Samozrejme jsem si to nakonec cut'n'pastnul z manualu, ale aspon takovy detaily by bylo dobry vychytat.

    Taky tam mas dost globalnich promennych, takze v crl1 nejde psat modularni programy.
    ANT_39
    ANT_39 --- ---
    XCHAOS: Z dětí, které uspokojí takováhle odpověď, se stávají objektoví programátoři. Ovšem z dětí, které se zeptají "dobře, ale jak funguje to magnetické pole ?" vyrostou programátoři v Céčku.

    Ony i vyssi a uhlazenejsi jazyky maji svou vnitni slozitost. Umet do detailu a dobre Python je podobne netrivialni, jako umet do detailu dobre C, akorat ta slozitost je v necem jinym.

    Jinak by me celkem zajimalo, z jake katerogie deti rostou tihleti then buddhisti a Hinayana oriented programmers. (/me si ze zvedavosti brouzda po strance o C<<1.)
    Kliknutím sem můžete změnit nastavení reklam