• ú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 --- ---
    JANFROG: divný, použil jsem make bez jakýchkoliv optimalizací a extravuřtů, na téhle archaické platformě:

    xchaos@hyperion:~$ cat /proc/cpuinfo
    processor : 0
    vendor_id : AuthenticAMD
    cpu family : 15
    model : 67
    model name : AMD Athlon(tm) 64 X2 Dual Core Processor 5000+
    stepping : 2
    cpu MHz : 2611.979
    cache size : 512 KB
    physical id : 0
    siblings : 2
    core id : 0
    cpu cores : 2
    apicid : 0
    initial apicid : 0
    fpu : yes
    fpu_exception : yes
    cpuid level : 1
    wp : yes
    flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow rep_good nopl pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy
    bogomips : 5223.95
    TLB size : 1024 4K pages
    clflush size : 64
    cache_alignment : 64
    address sizes : 40 bits physical, 48 bits virtual
    power management: ts fid vid ttp tm stc

    sice porovnávání různých typů integerů, aniž člověk použije implicitní přetypování, je v C poněkud sázka do loterie (já právě implicitní přetypování čísel, než s nima vůbec začnu něco dělat, celkem i používám...), ale přeci jen: kdyby porovnání longu a unsigned intu nějak často dopadalo tak, jako u tebe, tak mi to přijde celkem nebezpečné (zvlášť pokud má být v céčku napsán třeba firmware pro samořídící auta :-))
    JANFROG
    JANFROG --- ---
    XCHAOS: No vidis, me to pise zase tohle:
    ===
    long a = -1;
    unsigned int b = 1;
       a == b // -> false
       a < b  // -> false
       a > b  // -> true
    ...
    

    jv@sao:~/Projects/jv-knowledgebase/C$ gcc --version
    gcc (Debian 6.1.1-11) 6.1.1 20160802
    Copyright (C) 2016 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    

    Jak je to jen mozne v tak transparentnim jazyku, kde je videt co se vevnitr deje :-)
    (omlouvam se za trochu sarkasmu, nekdy si nemuzu pomoci...)
    XCHAOS
    XCHAOS --- ---
    K předchozímu:

    xchaos@hyperion:~$ gcc --version
    gcc (Debian 4.9.2-10) 4.9.2
    Copyright (C) 2014 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions. There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    XCHAOS
    XCHAOS --- ---
    JANFROG: mě to vypsalo tohle:
    xchaos@hyperion:~$ ./pokus-compare
    ===
    long a = -1;
    unsigned int b = 1;
    a == b // -> false
    a < b // -> true
    a > b // -> false
    ===
    unsigned int a = 1;
    long b = 1;
    a == b // -> true
    a < b // -> false
    a > b // -> false

    ... což, ať se na to koukám z jakéhokoliv úhlu, je asi to, co bych intuitivně čekal, ne? :-)
    XCHAOS
    XCHAOS --- ---
    JANFROG: jako v podstatě ano - přirovnání ke koloběžkám, skateboardům, apod. uznávám. speciálně se mi líbí tahle verze
    Onewheel: The World is Your Playground
    https://www.youtube.com/watch?v=XNqOU4jx62I

    ...sežere fakt málo benzínu :-)
    JANFROG
    JANFROG --- ---
    REDGUY: Jo. sice ne ve vsem myslitelnem ale na (v danem kontextu) relevantnim vzorku. Dneska je dost rozdil mezi tim co napises v kodu a co se doopravdy pousti a je dobre vedet, co kdo dela aby to urychlil...a poucit se z chyb jinych :-)
    REDGUY
    REDGUY --- ---
    JANFROG: Garantuji Ti, ze vetsina vyvojari runtimu tehle syntetickych nanobenchmarku pisou, pousti a ladi mraky. - ehm. Takovejch, ve kterejch pousti jednu funkci ve vsem od tcl/tk po c? Urcite?

    Sam jsem meril dva systemy, dost podobne - myslim, ze klicove slovo je to "podobne".
    JANFROG
    JANFROG --- ---
    REDGUY: Podivej, podobny synteticky nanobenchmarky maji jen mizivou hodnotu....

    S tim zasadne nesouhlasim. Ty benchmarky maji zasadni vyznam a nedelat je velka chyba, byt delat zavery ktery system je lepsi je trosku na hlavu (ale to je na hlavu na zaklade jakychkoliv "dat") Garantuji Ti, ze vetsina vyvojari runtimu tehle syntetickych nanobenchmarku pisou, pousti a ladi mraky. Minimalne Oracle, Google a ja :-)

    Je to jak rika XCHAOS - trik je v tom, ze tyhle "stupidni" operace se provadeji casto. Sam jsem meril dva systemy, dost podobne a jeden byl v rade bechmarku o pulky rychlejsi. GC velmi podobny, JIT velmiu podobny, rozdil byl v knihovne. Takove blbost jako inteligentni implementace String.indexOf() a podobnych veci muze udelat 30% celkem v klidu...

    cim dal tim min podstatny meritko
    No ja citim celkem presne opak. Jak v oblasti "velkych" pocitacu kdy SW je stale komplexnejsi a je nutne ho delat za kratsi dobu. Kodu co musi bezet je hodne. Naklady na datova centra a elektrinu jsou vysoke, efektivnejsi system snizuje naklady nebot umozni vetsi hustotu aplikaci.
    Na strane druhe, v oblastim "malych"pocitacu je to podobne, but z jinych duvodu. S penetraci pocitacu temer do vseho a nastupem IOT bude cim dal vic SW bezet na chrastitkach co nemaji moc vykonu (ruzna Arduina, RPi, male ARMy). Ne kazda lednicka pobezi na T7.
    KILLUA
    KILLUA --- ---
    Jan, pokud něco jde 30x rychlejc můžeš udělat xkrát víc chyb použít xkrát pomalejší framework a stejně bude výsledné řešení 10x rychlejší a udělané za stejnou dobu.
    JANFROG
    JANFROG --- ---
    KILLUA: Vždy mě právě fascinuje... :-) Za vsimnuti take stoji, ze nejvice do krve se hadaji ti programatori, kteri nikdy zadny production-ready jazyk (=compiler+runtime+zakladni knihovna) neimplementovali...mam dojem, ze tady je rovnez pekne videt...

    Prostě když je něco 30x pomalejší tak to lepší není a nikdy nebude.
    Opravdu?
    JANFROG
    JANFROG --- ---
    XCHAOS: existuje samozřejmě obecné povědomí, že Java je pomalé monstrum, ale takovéhle srovnání a tedy i míra toho, jak je to v té Javě asi udělané špatně, stejně zovu překvapí...
    To "povedomi" je dane spise po generace tradujici se famou nez ze by bylo zalozene na pravde. Fakt je, ze dneska je malo co, jestli neco, rychlejsi nez Java (bavime se o Hostpot VM ve srovnani s jinymi systemy sh s garbage collectorem a podporou nativnich threadu - srovnavat to s C je nesmysl. To je jako rici ze kolobezka je lepsi, protoze sezere min benzinu nez skodovka a otoci se na place)
    KOJA
    KOJA --- ---
    KILLUA: Zajimavy :-) Prijde mi, ze firmy co nevi kam s penezma (google, facebook, microsoft, ibm) si uz vsechny alespon par nejakych ultraschopnych lidi vydrzuji (Carmack, Lamport, Alexandrescu, ...) Skoro mi to pripada jako otazka prestize, takova voliera s kanarkama :-) Nektere firmy, rekl bych, maji celkove strategii zamestnat co nejschopnejsi lidi sezenou a muzou zaplatit (google, spacex, ...).

    Imho je jadro pudla prave v tom, ze abys zamestnaval ty nejschopnejsi, tak musis sam byt co k cemu abys chapal proc to delas a ty spravne rozlisil. Takze se musi nejakym zpusobem vytvorit "podhoubi" aby se schopnych lidi nahromadilo kriticke mnozstvi (zakladatele firmy, slozite problemy v popisu prace, nejaka fluktuace...) a to asi bude tezke a hlavne dost narocne na "zdroje".

    TO ALL: Jeslti jsme tu uz moc offtopic, tak nas prosim vyzente.
    JANFROG
    JANFROG --- ---
    XCHAOS: Každý string tam určitá vzniká nejspíš jako další obecně rozšířitelný meta-objekt...což musí nutně mít nějakou reži
    To jiste ma rezii, jako vsechno. Ta rezie je ale dost presne stejna jako v pripade tridnich systemu. Typicky se jedna o pointer bump + vyplneni hlavicky (obvykle 1/2 slova). Dopocujuji precist klasicky paper

    Craig Chambers, David Ungar, and Elgin Lee: An Efficient Implementation of SELF, a Dynamically-Typed Object-Oriented Language Based on Prototypes.

    u které vím, co se uvnitř ní děje
    Domnivam se, ze C toto nesplnuje. Jednoduchy priklad. Mejme nasledujici kod:
    #include <stdio.h>
    #define BOOLVAL(x) ((x) ? "true" : "false")
    #define COMPARE(type1, value1, type2, value2)           \
        {                                                   \
            type1 a = value1;                               \
            type2 b = value2;                               \
            printf("===\n"                                  \
                   "%s a = %s;\n"                           \
                   "%s b = %s;\n",                          \
                   #type1, #value1, #type2, #value2);       \
    	printf("   a == b // -> %s\n"                   \
                   "   a < b  // -> %s\n"                   \
                   "   a > b  // -> %s\n",                  \
                   BOOLVAL(a == b),                         \
                   BOOLVAL(a < b),                          \
                   BOOLVAL(a > b));                         \
        }
    int main() {
        COMPARE(long, -1, unsigned int, 1);
        COMPARE(unsigned int, 1, long,  1);
    }
    


    Co vypise?
    KILLUA
    KILLUA --- ---
    Koja: Díky za odkaz, aspoň vím, že nevymýšlím nesmysly :)

    No můj přístup je takový, že "geniální" programátor dokáže jednou za čas přijít s něčím s čím by nepřišlo ani 1000 těch průměrných, a díky tomu, že nemusí čas věnovat generickým věcem se toto může přihodit častěji. A pak už podobné zlepšení mohou opakovaně užívat všichni.

    Prostě prvoplánové škatulkování lidí, kteří převyšují svou specifickou inteligencí tu vaši (třeba nějakého midlemanagera) je pošetilé, ale protože všechno "musí" být ve stejných boxíkách a excelovejch tabulkách většina společností to tak dělá.
    REDGUY
    REDGUY --- ---
    KOJA: Neni nejaka programovaci olympiada nebo tak neco, kde pravidelne vyhravaj lidi co pisou v OCamlu, Haskellu a podobne? Sakra, kde jsem to jenom cetl... i kdyz tam samozrejme otazka jestli vyhravaj proto, ze pisou v Haskellu nebo proto, ze jsou tak zatracene chytry, ze zvladnou psat v Haskellu 8)
    KOJA
    KOJA --- ---
    KILLUA: To v podstate navrhujes, to co popsal Fred Brooks v legendarni (ale bohuzel porad malo zname) knizce Mythical Man-Month. Mel jakousi analogii chirurgickeho tymu. Napr. zde: https://en.wikipedia.org/wiki/The_Mythical_Man-Month#The_surgical_team Zni to zajimave, zavery z realneho pouziti jsem necetl (nerikam, ze bych se po nich pidil). Knizku kazdopadne doporucuju, zajimave cteni a s vetsi casti relevantni i po tech letech.

    Ad ninjove, rockstar, superstar a jiny geniove - vyvoj software uz se nejakou chvili paralelizuje protoze vykon jednotlivce je v prumeru mezi generacemi spis nemenny, vzacne nadani je vzacne a nektere projekty jsou proste moc velke. Muj subjektivni dojem je, ze pokud je ninja asocial a neni schopny fungovat v tymu, tak jeho pouziti ma v souctu zaporny prinos. Na to aby se vyplatilo postavit tym okolo asocialniho genia ve zvlastnim rezimu je imho zase malo tech opravdu vyjimecnych. V postate musi genialita prevysovat deficit v soft-skills (fuj, pardon) tak moc aby se to vyplatilo. Odhaduju, ze to musi byt o dost. O tom, ze je komunikace pri tymovem vyvoji celkem dulezita by se dalo asi najit neco v Robert L. Glass - Facts and Fallacies of Software Engineering.

    A jak tu zaznely uvahy ohledne srovnani celkove efektivity programovacich jazyku, tak jedine co jsem kde cetl (tusi opet Brooks) je, ze lepe vychazeji jazyky s vyssi abstrakci, coz ale neni az takove prekvapeni.
    KILLUA
    KILLUA --- ---
    Takoví lidé by hlavně namísto samostatné, nebo kolektivní práce měli mít třeba 2-3 pomocníky, kterým by buď oni sami přidělili úkoly, případně nějakého koordinátora, který by řídil jak podobného "frajera" tak ty jeho pomocníky, pokud toho není on schopen.

    No ale tady teda už teoretizuju já :)
    ALMAD
    ALMAD --- ---
    KILLUA: https://en.wikipedia.org/wiki/Daniel_J._Bernstein

    Hlavně qmail, daemontools a djbdns.
    KILLUA
    KILLUA --- ---
    Djb neznám, ani G nenapoví, co/kdo to je?
    ALMAD
    ALMAD --- ---
    //OT

    KILLUA: Moje zkušenost je, že top programátoři Vránova typu programují výrazně rychleji...samostatně. Proto taky dost často mívají vlastní toolchain kterému rozumí odshora dolů. Dost je to vidět v Ruby/node.js komunitě, TJ byla typická ukázka, dělám teď na něčem s Remym a je to to samý.

    Blbý je, že pokud se ti nepodaří bejt taková superstar (jako třeba TJ) aby se ti okolo "tvýho toolchainu" udělala komunita, tak většínou zpomaluješ skupinovou práci, protože máš "nestandardní" toolchain proti komunitě.

    Noa...změř tohle.

    Dobře to taky IMHO bylo vidět na DJB, geniální softy, jednoduchý, nadčasový...ale každej z nich je rozhodně mimo mainstream, protože udržuj si to.
    KILLUA
    KILLUA --- ---
    Almad, díky za odkaz. btw jak tam s nadsázkou dodávaj, pokud sem to dobře pochopil, schopný programátor dovede rychleji a efektivněji napsat úlohu s čistým PHP než ostatní ve frameworcích.


    No se správnou metodikou, opensource kódem se při určitém počtu "pokusů" začne projevovat statistika, že průměrně se programuje o 20% rychleji v tomhle navzdory schopnostem jednotlivých programátorů + třeba poznatek, že určité % programátorů se průměru vymyká, takže se třeba vyplatí takovému špičkovému zaplatit 2x tolik a stejně se vyplatí víc.

    Prostě dala by se získat celá řada zajímavých informací.
    Kliknutím sem můžete změnit nastavení reklam