• ú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
    REDGUY
    REDGUY --- ---
    XCHAOS: Kreativita neni zbytecna. Problem je v tom, ze to co predvadis, neni kreativita, proste jen plany chvastani, jak vyresis problemy, ktery bud neexistujou ("platforma, kterou za pet let vsichni vyhodej"), nikdo je nepotrebuje resit ("lock-in v Cecku"), pripadne "reseni" ktery "resi" jen jednu supermarginalni cast ("problem nevyuzivani multijader vyresim tak, ze budu poradne podporovat pouze nezavisly paralelni zpracovani prvku pole").

    Ale hlavne, zcela zjevne z tohohle nic nebude. Tohle neni solarni kolo, kde muzes nekomu zaplatit, aby svaril par trubek podle tvyho obrazku, privazat na to nekym jinym dodanou elektroniku a pak na tom silou vule s velkou bolesti a usilim dojet do Ciny. Prekladac silou vule nenapises. Tady nejs "kreativni", jsi proste ukecanej. Pletu se? Tak se predved. Napis to, dokaz jak hrozne jsem te podcenil 8))))

    pokud objevím nějakou novou zajímavou feature, tak do vlastního jazyka si jí prostě můžu přidat, u jazyka vyvíjeného někým jiným musím počkat, až jí někdo přidá. - a znovu a znovi ukazujes, ze nevis, o cem mluvis. Tohle taky samozrejme neni pravda. Treba jazyky vychazejici z LISPu jsou prosluly tim, ze je trivialni v nich experimentovat s novejma pristupama aniz bys musel modifikovat vlastni jadro jazyka. Ale jasne, k cemu nejaky vedomosti, hlavne ze jsi "kreativni". Protoze nejdriv si neco nastudovat, tyhle veci vedet a umet pouzit, to vubec neni uzitecny. Hlavni je chvastani, ehm, vlastne "kreativita" 8)))
    XCHAOS
    XCHAOS --- ---
    REDGUY: tak jistě o spoustě problémů netuším, na druhou stranu: pokud objevím nějakou novou zajímavou feature, tak do vlastního jazyka si jí prostě můžu přidat, u jazyka vyvíjeného někým jiným musím počkat, až jí někdo přidá. stejně, tak code generator můžu optimalizovat, když chápu co a proč v něm funguje.

    každopádně, gratuluju ti k tvému životnímu rozhodnutí "buď radši nedělat nic, nebo dělat to, co všichni kolem". chápu, že kreativita je úplně zbytečná, až nežádoucí, tak si to užívej (optimálně ovšem někde jinde, než v tomhle klubu)
    REDGUY
    REDGUY --- ---
    XCHAOS: ale třeba ten Python... rozdělení na 2.0 a 3.0 tam není úplně něco, co bych chtěl řešit - a proc myslis, ze vznikl Python 3? Ze si van Rossum a spol rekli "A ted jen tak vydame zpetne nekompatibilni verzi Python, protoze LOL"? Samozrejme ne. Proste ve dvojce byly nejaky spatny rozhodnuti, omezeni, ten jazyk se zacal pouzivat zpusobem, s kterym puvodne nepocitali, objevili se novy smery a myslenky a uz ten jazyk poradne neslo zpetne kompatibilne rozvijet. Takze udelali trojku, aby meli volny ruce k potrebnejm zmenam. Jo, jasne, je to komplikace, ale holt to jinak neslo.

    A ty si myslis, ze jen tak sednes a na prvni dobrou vyfrknes uzasnej xJazyk, kterej bude uplne skvelej a pristich deset let na kod v nem napsanej ani nesahnes a vsechny zmeny budou v tom generatoru, protoze se objevi "php s threadama"? Ty, s tvejma schopnostma a zkusenostma, kterej primo tady demonstrujes, ze o spouste problemu fakt ani netusis? BUAHAHAHA! Zase klasickej XChaos, u kterejo se jeho nafoukanosti vyrovna jen jeho omezenost 8)))

    pak hledám jazyk, ve kterém se mi daným způsobem dobře myslí. - pokud vim, tak vsechno, co trochu umis, je Cecko a mozna Python. A kdyz jsem naposled videl tvuj C kod... no, bez komentare 8)) Bez a nauc se nejaky vyrazne jiny high-level moderni jazyky a neco v nich napis. Oh, wait... to vyzaduje nejakou skutecnou praci a usili. Takze zustanes u chvastani o tom, jakej napises skvelej jazyk, jaky "keywordy" v nem budes mit (protoze to je to nejpodstatnejsi 8))) ) - a pak to usne a vysumi. Jako obvykle 8))
    XCHAOS
    XCHAOS --- ---
    REDGUY: budiž... ale třeba ten Python... rozdělení na 2.0 a 3.0 tam není úplně něco, co bych chtěl řešit... před 10 lety mi to přišlo jako dobrý nápad, ale evidentně, ani po 10 letech nebyly všechny 2.0 aplikace portované do 3.0 (?)

    mě jako odstrašující případ přijde PHP, kde se v podstatě paralelně vyskytuje kód pro 4,5 a 6. pokud půjdu cestou code-generátoru a dejme tomu se objeví nějaká mutace cílové platformy s novou feature (think "PHP with threads", který BTW existuje, a můžu tedy generovat aplikace pro commandline i pro web), tak si prostě jen přidám nový target do code generatoru a na svoje vlastní zdrojáky vůbec nešáhnu.

    uznávám, že je to trochu koncept z 19.století, ale nakonec... to jak člověk myslí, je ovlivňováno jazykem, který používá (ať už lidským, nebo programovacím). takže já nejdřív řeším, "jak chci myslet" - a pak hledám jazyk, ve kterém se mi daným způsobem dobře myslí. (C v tomhle kontextu je "jazyk, který je uvnitř toho myšlení" - ať už je to dobře nebo ne, vzhledem k tvým vlastním postřehům, jak je dnes ASM někde hodně jinde, než byl v době vzniku C, kdy se každá C instrukce či operátor mapoval na nejvýše dvě strojové instrukce na PDP...)
    REDGUY
    REDGUY --- ---
    XCHAOS: já jsem ochotný přemýšlet maximálně jednou a dost - ver mi, to pro vetsinu lidi, co te znaji, neni zadna novinka 8)))
    REDGUY
    REDGUY --- ---
    XCHAOS: nebaví mi programovat na platformě,kterou všichni za 5 let zahoděj - a timhle chces rict co? Jako kdybysme se bavili o javascript frameworkach na klienta, tak ok, tak je polocas rozpadu tak dva roky. Ale normalni jazyky? Namatkou: Python 2.0, 2000, Python 3.0 2008, Perl5 1994, PHP5 2004, Erlang 1986, Clojure 2007 (a pokud ji budu brat jako dialekt Lispu, tak motherfucking 1958 8)) ). Dokonce i ten Node.js je skoro deset let starej: 2009. Takze prosim, vysvetli mi, o jake "platforme, kterou vsichni za 5 let zahodej" mluvis?

    REDGUY
    REDGUY --- ---
    XCHAOS: Tobe to bizarni neprijde? Nekolikrat jsi rikal, ze chces udelat neco, co bude plne vyuzivat vicejadrovy procesory. Fakt ti prijde naprosto v poradku, ze se pak omezujes jen na ten uplne nejtrivialnejsi zpusob multithreadingu (s tim, ze zjevne nechapes, ze i ten je slozitejsi, nez si myslis)? Opravdu opravdu opravdu ti to prijde normalni a v poradku? Nebo jsi proste zase jen tak nahodne neco placnul a kdyz jsem ti zacal ukazovat, ze to je blbost, tak ses proste sprajcnul a napises cokoliv, abysto nemusel uznat?
    XCHAOS
    XCHAOS --- ---
    REDGUY: já jsem ochotný přemýšlet maximálně jednou a dost :-)
    XCHAOS
    XCHAOS --- ---
    REDGUY: podívej, tebe by neuspokojilo nic...

    já fakt nevím, jak to napsat, aby ti to nepřipadalo "bizarní". co takhle "nebaví mi programovat na platformě,kterou všichni za 5 let zahoděj... ale odhodlat se programovat přímo v čistým C jsem se mi nepodařilo ani po 15 letech snahy, takže hledám nějaký kompromis" ?
    XCHAOS
    XCHAOS --- ---
    GIANT: přiznávám se, že je to částečně offtopic :-)
    GIANT
    GIANT --- ---
    v mezicase si asi fakt prectu celou ANSI C specifikaci, jak mi tu kdosi kdysi doporucil :-D
    GIANT
    GIANT --- ---
    ciwe dalsich 30 kilometrovejch postu. to nedam. az se na necem dohodnete, tak sepiste zavery, jestli k nejakm spolecnejm teda dojdete :-D
    REDGUY
    REDGUY --- ---
    Ale hlavne, cela ten myslenkovej veletoc:

    Udelam programovaci jazyk, jednim z jeho hlavnich cilu bude plne vyuziti vicejadrovych procesoru!!!!!

    ... ale co se multithreadingu tyce, "doporucenej pattern" bude jen paralelni zpracovani prvku nejake kolekce.

    Neuveritelny bizarnosti jako tahle jsou presne ten duvod, proc me tak bavi "debaty" s tebou 8))
    REDGUY
    REDGUY --- ---
    XCHAOS: a kromě toho... myslel jsem, že operátor ++ je atomický a převede se naprávě jednu instrukci CPU - tak to sis myslel blbe. Za prve, standard o atomicnosti nic nerika. Za druhe, ++ se na jednu instrukce prevest muze ale nemusi. A za treti, ani ta instrukce (by default a na x86) neni atomicka. Wow, tendlecten multithreading je cim dal tim slozitejsi, co? Muzes prosim odpovedet na moji otazku? Kolik nejak vyrazne multithreadovyho kodu uz jsi napsal?

    ale featury jako semafory tam můžou samozřejmě bejt taky 8)))) Ty ses fakt designer jazyku. "Proste tydlecty featury, ty tam muzou bejt taky, no" 8))))

    podstatný je, že spoustu věcí můžeš dělat paralelně bez velkýho přemýšlení (typicky ti třeba z jedné zpracovávané položky vznikne jiná položka - No, zjevne nemuzes. Resp, prave nazorne demonstrujes, ze to sice muzes udelat bez velkyho premysleni, ale je pak slusna sance, ze to udelas blbe. Prekvapko 8))))


    třeba insert do databáze je atomický tak nějak z principu, i když se o něj pokusí víc vláken současně - aaaaaargh. Vis co znamena slovo "atomicky"? Slysel jsi nekdy o transakcich a k cemu slouzi?
    XCHAOS
    XCHAOS --- ---
    REDGUY: ale featury jako semafory tam můžou samozřejmě bejt taky (a kromě toho... myslel jsem, že operátor ++ je atomický a převede se naprávě jednu instrukci CPU?)

    podstatný je, že spoustu věcí můžeš dělat paralelně bez velkýho přemýšlení (typicky ti třeba z jedné zpracovávané položky vznikne jiná položka... a třeba insert do databáze je atomický tak nějak z principu, i když se o něj pokusí víc vláken současně... i když zrovna s libmysql jsem zatím pokusy s multithreadingem pravda nedělal)

    (částečně je to i o tom, že já všechny tyhle pokusy chci dělat, ale potřebuju mít nějakou záminku, proč je dělat - směřovat někam, dělat to v rámci něčeho...)
    REDGUY
    REDGUY --- ---
    XCHAOS: můj způsob alokace byl natolik geniální, že ty si ho vůbec nepochopil - LOOOOL. No urcite. Uplne stejne jako jsem nechopil genialni zpusob, kterym jsi chtel diky technologickemu naskoku vyhrat SunTrip. Prosim, pripomen mi, jak to nakonec dopadlo? 8)))
    REDGUY
    REDGUY --- ---
    XCHAOS: ehm, serverový aplikace běžně sahají na sdílené prvky, že ... třeba když čtou výsledek databázového dotazu, který sahá na databázový cluster? nebo když sahají na diskové pole? - jezismarja. Ty proste fakt vubec netusis. Vubec se nemusime bavit o nejakejch databazich. Co kdyz chces spocitat, kolik prvku nejakyho pole splnuje nejakou podminku? Mas nejakej spolecnej counter, spustis n threadu, ty zacnou koukat na jednotlivy prvky pole a pokud prvek splnuje podminku, tak inkrementes counter. Akorat ze ten inkrement musis delat atomicky, takze co? Aha, semafory, zamykani ktery udajne nejsou potreba. Ten sdilenej zdroj nemusi bejt nejakej server, ale ciste jen ta jedna spolecna promena. Plus samozrejme takovy detaily, ze na moderni architekture muze bejt jeden thread, co frci skrz pole, mnohonasobne rychlejsi nez x threadu, ktery si to pole mezi sebe nejakej rozebiraji (protoze rezie threadu a hlavne kouzla na urovni procesoru a pristupu k pameti).

    A btw, co jsi prosim chtel rict tou citovanou veci? Ze serverovy aplikace NESAHAJI na sdileny prvky jako databaze? To jako vazne?

    Proste zase: tvoje predstava ze "kdyz se omezim na paralelni zpracovani prvku pole, nepotrebuju zamykani a semafory" je neuveritelne naivni.
    XCHAOS
    XCHAOS --- ---
    (btw, myslím jsem jeden čas směřoval k triku, že jsem forcnul aby parametr makra v C, aby to musela být LValue :-) čímž se zabránilo double evaluation. ale uznávám, že to asi není way to go :-)
    XCHAOS
    XCHAOS --- ---
    REDGUY: popravdě, můj způsob alokace byl natolik geniální, že ty si ho vůbec nepochopil, podle mě. (ale připouštím, že si mě zastavil v jiných zajímavých bodech, např. problém s double-evaluation parametrů makra, apod.)
    XCHAOS
    XCHAOS --- ---
    no, vlastně si nejsem jistý, jestli je víc bambilion nebo bazilion
    Kliknutím sem můžete změnit nastavení reklam