• ú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
    _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.)
    REDGUY
    REDGUY --- ---
    XCHAOS: kuš už - to neni moc silny argument. Mam to chapat tak ze zacnes zase brzo rozdavat bany za pokracovany debaty, kterou jsi ty sam zacal?

    C++ je kategorie sama pro sebe... já myslel spíše takové ty "konzumnější" objektově orientované jazyky - v tom pripade jsi se velmi spatne vyjadril a neni divu ze ti neni rozumnet. Mluvil jsi o "objektovem programovani", bez nejakych privlastku a doufam ze se shodneme na tom, ze C++ je typickym a dost mozna nejznamejsim prikladem objektoveho jazyka. Nicmene budiz, kdyz ted (opet) menis to co jsi rikal, preformuluji otazku:

    Kdyz si zkusim zkompilovat neco objektoveho, rekneme Objective-C/Javu/Python(pouzivany objektove) nebo treba OCaml(opet, pouzivany objektove), tak to neni projev "zvídavého analytického přístupu"?

    A doplnim - je ten "zvidavy analyticky pristup" vazany na kompilaci? Co kdyz se budeme bavit o interpretovanych jazycich? Kdyz misto "Zkusim si zkompilovat zdrojak C" bude "Zkusim si pustit perlovy script", meni to neco?
    XCHAOS
    XCHAOS --- ---
    REDGUY: kuš už. C++ je kategorie sama pro sebe... já myslel spíše takové ty "konzumnější" objektově orientované jazyky :-)

    sice offtopic, ale současně důkaz, že slovo kreativita nepoužívám nijak pejorativně, ba právě naopak:
    http://teckacz.cz/1119

    (v Brmlabu někdy chystám lightning talk o C<<1, až bude venku aspoň první release :-)
    REDGUY
    REDGUY --- ---
    XCHAOS: A kdyz si zkusim zkompilovat neco objektoveho, rekneme C++, tak to neni projev "zvídavého analytického přístupu"?
    XCHAOS
    XCHAOS --- ---
    (já třeba při skriptování pro webové browsery používám prefabrikované JQuery objekty a je mi blaze - ale to je v tomhle klubu offtopic, jak jsem už psal...)
    XCHAOS
    XCHAOS --- ---
    REDGUY: éééé... projev "zvídavého analytického přístupu" je to, že vůbec zkusíš zkompilovat nějaký C zdroják na svém Linuxu. Jestli použiješ nebo nepoužiješ něco z LibC, to je jiná věc - ale budeš vědět, že když budeš zkoumat, jak je to v té libc implementované, tak na to potřebuješ znalost Céčka - a to je v první řadě ten důvod, proč ses něco pokusil kompilovat v Céčku.

    Pokud něco poslepuješ z prefabrikovaných objektů, tak je to může a nemusí být kreativní přístup k programování :-) taky ti za to mohl někdo prostě zaplatit, a ty si šel cestou nejmenšího odporu, a jenom bod za bodem implementuješ nějaká zadání, že.. to pak moc kreativní není.
    REDGUY
    REDGUY --- ---
    XCHAOS: To bych se s dovolenim ohradil, necist zpravy druhych je tvoje diskusni metoda, ne moje, to si pletes (a nejen diskusni, ale i banovaci 8) ). Cetl jsem, proste to nedava smysl. Tak schvalne: pokud v C pouziju neco z LibC, tak je to projev "zvedave analyticnosti"? A pokud v C++ pouziji knihovnu s objektovym rozhranim, je to projev "kreativnosti"? Je to tak? Nebo jsi to myslel jinak?
    XCHAOS
    XCHAOS --- ---
    REDGUY: spousta písmenek, co. kdo to má po těch ostatních číst...
    REDGUY
    REDGUY --- ---
    XCHAOS: Promin, ale ted uz vubec nechapu co jsi vlastne chtel puvodne rict, pripadne co rikas ted. Asi je to tak lepsi 8)
    XCHAOS
    XCHAOS --- ---
    REDGUY: tedy, není to zcela přesné - ta analytičnost u mě spočívá v té zvědavosti, ve snaze "pochopit, jak to funguje pod kapotou". je to tedy "zvědavá analytičnost", abych byl přesnější.

    analýzu řešeného problému je jinak samozřejmě nutné provést bez ohledu na programátorskou techniku, která pak bude použita. v tomto pohledu šlo asi o nedorozumění :-)

    jinak velkou sbírkou hotových, odzkoušených - a převážně zcela ne-objektově implementovaných funkcí je právě knihovna GNU libc. (např. velká část implementovaných metod standardně dodávaných pythoních modulů/objektů v nich jsou prostě wrappery nad službami, které buď poskytuje systém, nebo které jsou implementované v libc, nebo ke kterým libc alespoň zajišťuje přístup...)

    není to tak, že kód napsaný v C by se nelinkoval s hotovými knihovnami, které umí všechno možné: je to spíš tak, že ty knihovny neposkytují objektový interface. to někdy vadí více, někdy méně.
    REDGUY
    REDGUY --- ---
    XCHAOS: Pokud vidis rozdil mezi objektovym programovanim a programovanim v C (ostatne, uz tohle je pomerne problematicky postaveny protiklad) jako rozdil mezi "kreativnim" a "analytickym" (coz je jeste problematictejsi protiklad), tak se obavam ze necemu dost nerozumis.

    Nemluve o tom, ze to ze v praci preferuju pouzivani hotovych, odzkousenych modulu misto toho abych si psal vlastni (coz je asi to co jsi myslel), nevypovida vubec nic o tom, jak me zajima jak veci funguji uvnitr, ale pouze o tom, ze nerad plytvam casem.
    XCHAOS
    XCHAOS --- ---
    REDGUY: a ještě jednou - pokud vůbec něco vyplývá z [ XCHAOS @ ANSI C/C99 (specifikace), GNU C (gcc, glibc), Tiny C (tcc) a POSIX - ne nutně C++,g++,libstdc++ nebo Win32 API ] tak to, že kdo není vůbec zvídavý, ten se vůbec nenaučí programovat - jakkoliv !

    fakticky - měl by ses zdokonalit v reverzním inženýrství textů cizích lidí... vůbec nechápeš jejich sémantiku :-)
    XCHAOS
    XCHAOS --- ---
    (A kromě toho pochopitelně - jsme v GNU-related klubu, takže se mi nesnažte namluvit, že jedinou motivací pro programování je to, aby vám za to někdo zaplatil... právě naopak, mě baví programovat jenom to, co vymyslím sám - ne to, za co mi někdo platí...)
    XCHAOS
    XCHAOS --- ---
    REDGUY: já jsem ale neřekl, že ta předchozí možnost je špatně. prostě někdo uvažuje spíš kreativně, a rád staví věci z existujících dílků stavebnice, a nebo si třeba pomaluje budík veselými barvami - a někdo spíš analyticky a chce ten budík rozmontovat a podívat se jak funguje vevnitř.

    já se snažím kombinovat kreativní i analytické myšlení současně, což tedy pochopitelně vyvolává nepochopení u obou hlavních táborů ...
    REDGUY
    REDGUY --- ---
    XCHAOS: Zda se mi to, nebo sis prave vynalezl zduvodneni, proc to ze jsi se nenaucil poradne objektove programovat je vlastne dukaz, ze jsi zvidavejsi nez ti co se to naucili? Protoze pokud ano, je to monumentalni vykon kteremu je treba zatleskat 8)

    (Bohuzel pro tebe, ve skutecnosti je to tak ze se proste voli spravny nastroj na konkretni ukol. Na neco se hodi objektove jazyky, na neco ne. Pokud vsechno pisu v C, neznamena to nutne ze jsem zvidave dite pidici se po podrobnych odpovedich, ale mozna spis ze jsem trouba, ktery umi zachazet jen s kladivem a proto mi vsechno prijde jako hrebik. A v soucasne dobe je problemu pro ktere je C nejlepsi volba uz fakt hodne malo.)
    XCHAOS
    XCHAOS --- ---
    A nebo ještě jinak.

    Zvídavě děti se ptají "a jak funguje magnet ?".

    Správná odpověď je, že ve skutečnosti nefunguje o nic více záhadně, než cokoliv ostatního v realitě, ve které dítě vyrůstá - jejíž podstata je a celý život zůstane záhadná, a lidé kteří se naučí na to zapomínat, se o hodně připraví. Správná odpověď možná zní, že dítě se na to ptá proto, že je to příklad jevu, který je v rozporu s kognitivní intuicí, která se formovala už od narození - dávno před tím, než se dítě naučilo mluvit a zeptat se. Jenže této odpovědi by dítě nerozumělo.

    Oficiální odpověď je "kolem magnetu se rozprostírá neviditelné magnetické pole - jeho siločáry uvidíme, když dáme magnet pod papír s železnými pilinami". Hle, už to není neviditelné, už je k tomu jakési vizuální API - záhada vyřešena. A navíc: kromě záhady permanentního magnetu existuje ještě záhada elektromagnetu - tím pádem co se vyskytuje "více způsoby", to už není záhada, to je všední, lze s tím počítat, spolehnout se na to, apod. Časem přibude matematika, která jev přesně popíše. 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.
    XCHAOS
    XCHAOS --- ---
    a tedy... rozhodně zde nejsou offtopic meditace na téma "jak naprogramovat intepreter funkcionálního jazyka v C" nebo "jak napsat precompiler, který ze zdrojáku s funkcionální syntaxí vygeneruje přeložitelný C zdroják".

    Python zde je víceméně offtopic - pokud se nebavíme o vnitřnostech /usr/bin/python, což je interpreter naprogramovaný mimochodem v čistém Céčku, ne v C++. zajímavé je třeba pozorovat, jak jsou implementované nativní datové struktury Pythonu, apod.

    JavaScript jsem tady zmiňoval spíš z recese - to, že má příbuznou syntaxi, to tu opravdu nehraje roli - to spíš C++kaři nebo Dčkaři by se měli zamýšlet, jak se přiblížit objektové syntaxi Javascriptu - ale co by stálo za to, by bylo bavit se o tom, jak budou vypadat datové struktury Javascriptu v paměti.

    Začínáme si trochu rozumět ?
    XCHAOS
    XCHAOS --- ---
    _BENNY: pokud přijdeš na to, jak funkcionálně programovat v ANSI C99 tak jistě ne :-)

    (podle mě by samozřejmě klíčem mohlo být předávat funkci nějaký handler na jinou funkci... vlastně by mohla být zajímavá hra předvést, že to jde...)
    Kliknutím sem můžete změnit nastavení reklam