• ú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 --- ---
    REDGUY: nesouhlasím s tvojí definicí "rozbitosti", tečka.

    "funguje to jinak, než jsem zvyklý" není ekvivalentní výroku "je to rozbité".
    REDGUY
    REDGUY --- ---
    XCHAOS: abychom konečně opustili tuhle arénu, která mě už vůbec nebaví. - to me neprekvapuje. Akorat mam obavu, ze to jen a jen znamena ze rozbite kontexty pujdou k ledu a za par mesicu je zase vythanes, zacnes rikat jak jsou super a znovu ti budeme muset ukazat jak a proc jsou rozbite. Pokud dobre pocitam, tohle uz je aspon druha iterace debaty na tohle tema.

    jestli by standardní proces odchytávání signálů v C šlo nabindovat na setjmp/longjmp standardní POSIX libc error handling ? - co presne tim chce basnik rici?
    XCHAOS
    XCHAOS --- ---
    ISTEVE: popravdě, o režii odchytávání signálů v Unixu toho až tak moc nevím... předpokládal jsem, že právě jde o to, že dokud signál nenastane, že se nic neděje... že je to jenom nějaká tabulka pointerů na handlery, které se zavolají až když ten signál nastane...
    ISTEVE
    ISTEVE --- ---
    (K ISTEVE bych mel dodat -- ten SIGFPE trik byl kvuli tomu, ze ta cilova instrukcni sada neznala sw interrupt)
    ISTEVE
    ISTEVE --- ---
    Jo, v UNIXovym prostredi je to odchytitelnej signal. Presnejc by to mel bejt interrupt od procesoru, kterej kernel vezme a udela z toho SIGFPE. (Interesting fact: kdysi davno pri portovani nejakyho unixu se pouzil prave hw interrupt pri deleni nulou jako zpusob jak provadet syscally, spolu s specifickym nastavenim registru aby se to odlisilo od regulerni chyby)

    Jakozto nerealne silenej mikrooptimizator ale predpokladam vis, ze signaly jsou kurevsky drahy, delat pres to exception-like veci je naprosto neuveritelny zahazovani CPU cyklu totalne bez duvodne, obzvlast kdyz to clovek srovna s setjmp/longjmp.
    XCHAOS
    XCHAOS --- ---
    REDGUY: když jsme u toho dělení nulou... to je mimochodem odchytitelný signál, ne ? abychom konečně opustili tuhle arénu, která mě už vůbec nebaví... co takhle popřemýšlet, jestli by standardní proces odchytávání signálů v C šlo nabindovat na setjmp/longjmp standardní POSIX libc error handling ? pokud bude adresa získaná pomocí setjmp uložena v globální proměnné, tak snad nic nebrání tomu, aby handler ošetřující signál provedl longjmp, ne ?

    (napadlo mi, že takhle by šlo odchytit vlastně i Ctrl+C .... jednoduše, Ctrl+C by se pak dalo odchytit na konci try { } bloku jako cokoliv jiného... a pokud se to neodchytilo, tak by ovšem program skončil... vlastně není jasné, jestli je to "očekávané" chování, ale každopádně by to bylo elegantní chování)
    XCHAOS
    XCHAOS --- ---
    DAVIDOWITCH: víceméně ... z debaty vyplynulo, že bude muset mít :-) a je fakt, že jsem to zvlášť neřešil, to se přiznám.

    prostě ve všech mých flow-control makrech budeš muset místo "break" psát "escape". ("continue" naproti tomu bude použitelné beze zeměny... BTW, pro vyskočení z kontextu bude bohatě stačit "continue" místo "break", a bude to ještě čitelnější...)
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    XCHAOS: Ma ten remember/forget mit explicitni "terminate context now!" makro? Ja uz si to z ty debaty nepamatuju.
    REDGUY
    REDGUY --- ---
    XCHAOS: No a? Stejne tai budu v prdeli kdyz budu delit nulou, pristupovat na neinicializovanou pamet nebo zapisovat do RO souboru. No a? To ze existuji jine, nesouvisejici druhy chyb znamena, ze rozbitost kontextu je nejak v poradku?

    Problem tvych kontextu je v tom, ze je vydavas za zpusob reseni problemu s alokaci pameti pres malloc v C. Jenomze (a) nejsou kompletni nahradou, v rade situaci _porad_ musim pouzivat malloc a _porad_ bojovat s jeho problemy a zaroven (b) prinasi celou radu omezeni, ktera jen komplikuji praci a zpusobuji dalsi problem. To proste je rozbity a spatny design.
    _BENNY
    _BENNY --- ---
    XCHAOS: a to cele jen kvuli tomu ze nemas rad C++. feature jak vrata od chliva.
    XCHAOS
    XCHAOS --- ---
    REDGUY: pokud budeš používat return zprostředka funkce, která na konci něco de-incializuje, tak jsi v prdeli úplně stejně, jako když takhle použiješ můj hypotetický forget { }.
    XCHAOS
    XCHAOS --- ---
    Manifesto for Software Craftsmanship
    http://manifesto.softwarecraftsmanship.org/
    DAVIDOWITCH
    DAVIDOWITCH --- ---
    XCHAOS: V IT branzi veci kde je navod counterintivni pomerne rychle koncej v propadlisti dejin. U kolika toolu a knihoven sis predem prostudoval navod, nez si je zacal pouzivat? (Ja za sebe presne 0)
    REDGUY
    REDGUY --- ---
    XCHAOS: LOL!!! "To neni bug, to je feature!" Takhle ted pracuji umelecti kovari, er, chci rict, umelecti programatori? Haha 8) Nicmene, i tahle vymluva je mimo: pokud je rozbity uz zakladni design, tak zadna noticka v manualu "ehm, nepouzivejte return uprostred funkce" te nezachrani.
    XCHAOS
    XCHAOS --- ---
    REDGUY: tak až budu mít něco vysloveně nefunkčního, tak mi dej vědět. takovéto "když se to použije jinak, než se píše v návodu, tak to udělá něco co nečekám" - to není nefunkčnost, to je obecná vlastnost čehokoliv v IT (nejen v naší branži)
    XCHAOS
    XCHAOS --- ---
    _BENNY: s tím já nesouhlasím. od každé profese/specializace může existovat "umělecká" verze. jen musí být uživatelé varováni - a pro mě je dostatečným varováním třeba GPL licence.
    REDGUY
    REDGUY --- ---
    XCHAOS: tak ti vadí, že nemám jasný plán. a co má být ? To ze plany, ne nutne "jasne" ale PROBOHAASPONNEJAKE, jsou super a projekt, ktery ma PROBOHAASPONNEJAKY plan ma o nekolik radu vyssi sanci na uspech nez projekty ktery ho nema. Vidis? Zase se snazim pomoct.

    ale o těch kontextech se nedá předem říct, že _nefungujou_ - z ciste formalniho hlediska je samozrejme mozne ze se stane zazrak a za zvuku nebeskych harf, zpevu andelu pod dvojitou, ne, trojitou duhou prijdes a predvedes super duper implementaci ktera fungovat bude. Vzhledem k tomu ze takova implementace tady zatim neni a dokonce tady neni ani naznak problemu ktere jsme ti ukazali, sazim spis na "_nefungujou_".

    jinak umění má smysl samo o sobě, - dost mozna - na rozdil ale od programovani, kde je primarni funkcnost.
    _BENNY
    _BENNY --- ---
    Programátor není umělecký kovář! - Zdroják
    http://zdrojak.root.cz/clanky/programator-neni-umelecky-kovar/
    XCHAOS
    XCHAOS --- ---
    REDGUY: (...ve skutečnosti, reálně mi ta extra data před alokovanou oblastí dávají smysl jen u polí, a to ještě váhám, zda to stojí za tu práci...). ok, tak ti vadí, že nemám jasný plán. a co má být ?

    s tou funkčností souhlasím, ale o těch kontextech se nedá předem říct, že _nefungujou_ (kromě toho, že bych je implementoval špatně, což je zatím otevřená možnost). je třeba říct, že pokud se budou používat bez znalosti jejich fungování, tak tam může dojít k problémů. ale budou zdokumentované.

    jinak umění má smysl samo o sobě, a nejde o to, aby to byl laciný kýč, který si někdo koupí a dá si ho na zahrádku: dle tvé definice jsou uměním sádroví trpaslíci, protože si je lidi kupují.
    REDGUY
    REDGUY --- ---
    XCHAOS: Spíš tebe se ptám, zda jsou nějaké důvody, proč bych nový dialekt Céčka NEMĚL vymýšlet - chapu ze to asi obcas neni videt, ale jednim z duvodu, proc tady travim tolik casu je ze se ti snazim pomoct (a pravda, krome toho mam duvodu jeste par dalsich, zdaleka ne tak altruistickych. Ale tenhle tady skutecne je.) A co se ti snazim poslednich par zprav vysvetlit je, ze pokud nemas rozumne formulovane zadani, tj. ceho _konkretne_ chces dosahnout a plan jak to zhruba udelat, tak je sance na uspech miziva. A bohuzel, nejake povidani "eee, nechci se ucit C++ a pred kazdou alokovanou oblasti budou nejaka extra data a bude to superrychla nahrada fastcgi ktera natrhne php prdel", to takove zadani a plan neni.

    a odpovědí mi neustále je: "ne, programování musí být k něčemu dobré, musí to být užitečné protoze to tak je. V modernim umeni se asi muzes vysrat na talir a kdyz presvedcis dostatecne mnozstvi snobu ze to je umeni, tak to umeni bude. Diky bohu, v programovani to tak neni. Aby se o necem dalo rict ze to je povedene programatorske umeni, _musi_ to byt funkcni. Coz ocividne nechapes - viz to co jsi psal o svych kontextech, ze ti prijdou krasne a elegantni. Dost mozna jsou - ale NEFUNGUJOU, jsou ROZBITY a tudiz jsou k nicemu. Chces-li se dat cestou modernich umelcu a vydavat sracku za umeni, budiz. Jdi ale do umeleckeho klubu a presvedcuj umelce o tom jakej jsi machr a nevydavej to za programatorske, inzenyrske dilo.


    XCHAOS: "Umelecke kovarstvi"? Delas si srandu nebo si opravdu tolik fandis? Kdyz umeleckej kovar vykova peknou branu, lidi si ji radi zasadej do plotu protoze je hezka a zaroven funkcni. Co z toho co jsi vytvoril je podobne uspesne? Hezke, funkcni a pouzivane? A co te vede k tomu, ze tvoje dalsi bastl nadstavba nad C bude lepsi?
    Kliknutím sem můžete změnit nastavení reklam