• ú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 --- ---
    DANIELSOFT: ne, Rust je na rozdíl od C++ fakt bezpečnej, ta složitost tam má velmi konkrétní důvod, že zabraňuje kompileru vytvářet konstrukce s pointery, které v C nebo C++ jde normálně zkompilovat a které vedou k memory leakům nebo psaní po paměti. Ale to, že chápu smysl těch opatření v Rustu neznamená, že jsem schopnej se v tom naučit plyně programovat... možná tak před deseti lety..

    To C3 mi přijde jednoduchý v tom, že se zjevně víc drží původní C syntaxe, akorát v něm pole nesou informaci o své délce a tak. To působí hodně rozumně...
    DANIELSOFT
    DANIELSOFT --- ---
    XCHAOS: to bych si myslel, zkoušel jsem se dívat na rust a složitej mi docela přišel

    že by byl Rust nové C++ a Go nová Java?
    XCHAOS
    XCHAOS --- ---
    DANIELSOFT: no, slyšel jsem, že se to dá naučit řádově snáz, než Rust..
    DANIELSOFT
    DANIELSOFT --- ---
    XCHAOS: já teď dělám v Go a přijde mi to taky dobrý: docela minimalistický a fajn
    XCHAOS
    XCHAOS --- ---
    Programovací jazyk C3: evoluce, nikoli revoluce - Root.cz
    https://www.root.cz/clanky/programovaci-jazyk-c3-evoluce-nikoli-revoluce/

    C3 mi přijde daleko jednodušší pro přechod z C, než Rust a současně podobnější Céčku, než D... (nemluvě o C++). Na rootu vychází jako seriál, už jsou i u iterátorů, má to hezké foreach()....
    XCHAOS
    XCHAOS --- ---
    daniel:// stenberg://: "I compared #curl today vs curl 8 years ago on mal…" - Mastodon
    https://mastodon.social/@bagder/114380464756738106
    XCHAOS
    XCHAOS --- ---
    zítra 20.1. v 18:00 budu mít v https://dovetru.info/ minipřednášku/setkání veteránů programování na téma úvod do Pythonu :-) (úmyslně to píšu radši sem, než do klubu o Pythonu, kde jsou sami ostřílení a zkušení Pythonýři, které by to nezaujalo :-)
    XCHAOS
    XCHAOS --- ---
    JANFROG
    JANFROG --- ---
    XCHAOS: Proste pro kazdou instanci a pro kazdou metodu te instance v "konstruktoru" vygenerujes thunk (trampoline, chces-li), ktery ti ulozi "this" metody do r10 a ty si ji musis pres SELF makro ulozit nekam do promenne (a doufas, ze prekladac ti v prologu ten r10 neprepise, coz je odvazne).

    Efektivnejsi to neni, minimalne protoze 1) mas o dva skoky vic (jeden je z thunku te implementace, dalsi je return z implementace zpatky do thunku, kdyby z thunku udelal jen jump, usetri si jeden "ret"). 2) "this" objektu tahas z pameti, ne z registru. 3) pro kazdou kombinaci instance an metody mas jinej, vlastni thunk, to akorat zasvini I-cache (predstav si ze iterujes 1M stringu...).
    XCHAOS
    XCHAOS --- ---
    DANIELSOFT: no jako chápu tu část, že si adresu objektu předávaj v registru, místo kopírování na stack, a makrem z toho dělaj self pointer, to jo. Ale jak vyráběj ten caller, to úplně nepobírám :-) ale asi to bude efektivnější, než předávat funkcím pointer parametrem...
    XCHAOS
    XCHAOS --- ---
    DANIELSOFT: no na mě je to udělané moc lowlevel, úplně nechápu jak...
    DANIELSOFT
    DANIELSOFT --- ---
    XCHAOS: hezkypěkně
    XCHAOS
    XCHAOS --- ---
    uh, huh. Tohle je opravdový assembler, ne ty moje ptákoviny :-)
    GitHub - Darokahn/C-objects: A short and sweet repo that implements and demonstrates a method for defining and using objects in C
    https://github.com/Darokahn/C-objects
    XCHAOS
    XCHAOS --- ---
    lcamtuf :verified: :verified: :verified:: "My new C programming book is slowly taking shape.…" - Infosec Exchange
    https://infosec.exchange/@lcamtuf/113794502491950078
    XCHAOS
    XCHAOS --- ---
    :-)
    XCHAOS
    XCHAOS --- ---
    XCHAOS: no, podle https://godbolt.org/ to funguje, ale "doma" jsem nekoušel. Ty složený závorky nejsou scope/blok, ale inicializace pole hodnotami. Ty hranatý závorky ve výčtu hodnot inicializujících pole jsem neznal, ale zřejmě dovedou říct kolikátej prvek v poli deklaruješ. No a protože tu deklaraci proměnný máš v ifu, tak se to snaží ten kompiler okamžitě evaluovat, což je zřejmě spíš bug... Popravdě, zkoušel jsem v C zneužívat různý šílenosti, spíš teda k (iluzornímu) zvýšení čitelnosti kódu, než k obfuskaci. Ale tohle je fakt extrém :-)

    Je to z Mastodonu. Lidi tam na to reagujou ještě většíma zvěrstvama, typu přejmenovávání funkcí :-)
    lcamtuf :verified: :verified: :verified:: "The BASIC feature of the C language standard perm…" - Infosec Exchange
    https://infosec.exchange/@lcamtuf/113677429918972456

    Vůbec, kdo tady ještě nemáte Mastodon... je tam fakt hodně programátorů :-)
    [Mastodon 🐘 / Fediverse - decentralizovaná sociální síť]
    DANIELSOFT
    DANIELSOFT --- ---
    XCHAOS: čučím na to už minutu a nechápu jak to funguje :(
    XCHAOS
    XCHAOS --- ---
    když už si myslíte, už víte o céčku všechno... is this even legal? :-)
    XCHAOS
    XCHAOS --- ---
    wait.... what? :-)
    Compiler Explorer
    https://godbolt.org/z/dfsKGqYGz
    XCHAOS
    XCHAOS --- ---
    DANIELSOFT: já v 90tých letech setjmp() a longjmp() vůbec neznal, narazil jsem na to až náhodou po letech při studiu toho, co všechno jde dělat v unixovém userspace C... je to víceméně dělané na try ~ catch (resp. v Pythonu try ~ except), ale jiné využití si moc představit nejde...
    Kliknutím sem můžete změnit nastavení reklam