• ú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: strašně napadáš můj pokus umožnit jako jednu ze základních feature (místo všeho shánění se po sofistikovaných knihovnách) multitheading. - ano. Protoze tvuj pristup "problem se slozitym multithreadingem vyresim tak, ze jedinej podporovanej pattern bude iterace pres kolekci" a i v tom je videt, ze _vubec_ nechapes, jak slozity multithreadingovy programovani je. Tvoje predstava "no proste nejak automaticky spustim hodne threadu" je neuveritelne naivni. Znovu: nastuduj si neco. Podivej se, jaky ruzny pristupy k paralelnimu programovani existujou: Promisy jako v JS? Superlehky thready komunikujici skrz kanaly jako v Go? Izolovany miniservery jako v Erlangu/Elixiru? Uz davno se ukazalo, ze "proste spustim thread" je model, kterej moc nefunguje, protoze je slozitej na pouziti, nachylnej k chybam a celkove krehkej. Takze to, jak si ten "multithreading" predstavujes, proste jen ukazuje, ze fakt nevis o cem mluvis.

    cílové platformy, které jsem vyjmenoval (např. webové PHP, nodejs), tak jejichi interpretery skutečný multithreading nepodporují - HAHAHAHA. Me se fakt libi, jak skoro kazdou vetou dokazujes, ze o tom vubec, vubec nic nevis. Zrovna ten node.js je krasnej priklad: jedna z hlavnich motivaci byla prave vyzkouset uplne jinej pristup k paralelnimu zpracovani velkyho mnozstvi requestu. Jo, jasne, programator v nem ty thready primo nevidi. Ale to proto, ze jeho model je tak schvalne postavenej a ten runtime _samozrejme_ dalsi jadra CPU vyuzije, aniz by se o to programator musel nejak explicitne starat.
    REDGUY
    REDGUY --- ---
    XCHAOS: pokud importuju externí knihovnu podporovanou jen v jedné z cílových platforem (typicky C), tak po připojení téhle knihovny můžou ostatní cílové platformy jen zařvat, že to nepodporují - HAHAHAHAHAHAHA. Jo, jasne. "Tady mam uzasnej skvelej xJazyk, kterej vam umozni napsat kod jednou a pak mym genialnim prekladacem prelozit na x ruznejch platforem. Teda, uhm, pokud nahodou nepouzijete knihovnu, kterou na ty platforme nepodporuju" 8)))))

    napsat interfacy k existujícím populárním nástrojům by nemuselo být _tak_ složité - 8))) Jo, to je skvela argumentace. "Nemuselo by to byt _tak_ slozite". To je skoro datk dobry, jako tvoje legendarni "sazim na to, ze" nebo "tvrdim, ze".

    btw, uz sis nastudoval, jak to je s tema garbage collectorama a proc je tvoje predstava "proste tam vrazim pocitani referenci" ponekud... naivni?

    No a konecne: cela ta tvoje predstava "performance problem weboveho serveru vyresim tim, ze ho prelozim do C" jen krasne ukazuje, ze vubec netusis, kde jsou skutecne obtizny bottlenecky webovejch serveru. Coz asi nikoho neprekvapuje, ale je to peknej, dost vypovidajici detail...
    REDGUY
    REDGUY --- ---
    XCHAOS: mi spíš vysvětli, proč něco takového neudělali všichni, kteří se v posledních letech pokusili o nějaký vlastní interpreter - protoze nikdo, kdo psal vlastni jazyk, nemel takhle idiotskou, zamotanou a nesmyslnou motivaci.
    REDGUY
    REDGUY --- ---
    XCHAOS: lidí, kteří nejsou na web schopni deploynout binárku, nebo si jí tam přeložit, ale mohou někam hodit jen PHP kód, není zrovna málo. - "neni zrovna malo"? V dobe, kdy bud uplne zadarmo nebo za par drobnejch muzes nahodit instanci v AWS/Heroku/Google Cloud/ whatever a poustet si na ni co chces? No jasne 8))))

    přesto bych tedy radši vyvíjel v něčem, z čeho mám C mezikód do budoucna - Takze ty rikas, ze exituje "ne zrovna malo" lidi, kteri:

    - programujou v PHP
    - nejsou schopnit si spustit vlastni server
    - ale nekdy v budoucnu mozna z nejakyho duvodu budou potrebovat kompilovat do C (proc, proboha?)
    - a aby tohle splnili, tak zapomenou to PHP, zahodi vsechny jeho knihovny, nastroje a kod, kterej uz v nem napsali a nauci se xJazyk, ke kterymu neexistujou knihovny, nastroje, je zabugovanej a navic neexistuje. Jen proto, aby mozna nekdy mohli "kompilovat do C".

    Prosim, muzes nejak dolozit, ze takovych lidi existuje nejake nezanedbatelne mnozstvi? A ne "sazim na to, ze ano" nebo "ptal jsem se jednoho kamarada, a ten rekl, ze jo" 8)))
    REDGUY
    REDGUY --- ---
    XCHAOS: dost tu argumentaci překrucuješ. Hele, top jsou skoro doslovny citace toho, cos ty sam psal. Chces, abych ti nasel presny zpravy a doslova to z nich opsal, nebo mi honem das banana, abych nemohl? 8))
    XCHAOS
    XCHAOS --- ---
    REDGUY: ehm, dost tu argumentaci překrucuješ.

    mám konkrétní příklad, proč někdo může být demotivován programovat čistě v C - lidí, kteří nejsou na web schopni deploynout binárku, nebo si jí tam přeložit, ale mohou někam hodit jen PHP kód, není zrovna málo. přesto bych tedy radši vyvíjel v něčem, z čeho mám C mezikód do budoucna

    gerování C kódu je vzhledem k teoretické množství skutečně cílových platform neutrální, protože pro všechny další zamýšlené generované mezikódy pro další target platformy existují interpretery napsané v C, které se dají přeložit všude. motice pro paralelní generování do víc platforem je právě spíš možnost deploynout aplikaci někam, kde tě binárku buď pustit nenechají, nebo tě tam nenechají nakonfigurovat výkonostně efektivní uspořádání typu fastcgi.

    (tady se BTW rovnou nabízí generování i pro více dílčích variant platformy - čisté C, s možnosti použití stdout jako CGI, fastcgi, nebo i verze s http serverem zabudovaným jako součást runtime, jak to evidentně umí udělat třeba node.js. a když se nad tím zamyslíš, tak slinkování aplikace přímo s miniwebserverem bude mít zřejmě ještě menší režii, než sebesofistikovaněší API na webserver... a nic z toho já jako vývojář překladače nemusím řešit hned, ale můžu tyhle dodatečné dílčí "variace cílových platforem" dodat až časem... klíč k tomu se mi otevře ve chvíli, kdy budu mít ten C mezikód, a s tím, kam přesně přesměruju jeho I/O si můžu hrát až dodatečně...)

    místo teoretizování proč je to blbý nápad mi spíš vysvětli, proč něco takového neudělali všichni, kteří se v posledních letech pokusili o nějaký vlastní interpreter...

    strašně napadáš můj pokus umožnit jako jednu ze základních feature (místo všeho shánění se po sofistikovaných knihovnách) multitheading. ale když si projdeš cílové platformy, které jsem vyjmenoval (např. webové PHP, nodejs), tak jejichi interpretery skutečný multithreading nepodporují. paralelní překlad do C zde tedy může přinést výrazný nárůst výkonu, protože i když syntaxe threadů v ostatních jazycích může C připomínat, a vytvořit pro programátora iluzi, že něco se děje paralelně, tak pouze thready v C jsou skutečné thready, které se skutečně pokusí využít další jádra CPU (kdyby to totiž bylo tak jednoduché, tak by se asi v Googlu nepouště do psaní Go, že ano)

    zkráta, v hledání důvodů proč něco udělat jsi fakt dobrý - ale pokud je zadáním "umožním každému blbnout s programováním tak, aby mohl hned od začátku svoje výsledky deploynout do prostředí, na které je zvyklý, a přitom v budoucnu v případě potřeby navýšení výkonu nemusel nic přepisovat", tak prostě nemáš nic, co by se dalo nabídnout.

    navíc spoustě tvých výhrad lze při troše snahy oponovat: tak např. pokud importuju externí knihovnu podporovanou jen v jedné z cílových platforem (typicky C), tak po připojení téhle knihovny můžou ostatní cílové platformy jen zařvat, že to nepodporují (ale tím se neomezí možnosti core jazyka). nebo binding ke knihovnám může být implementovaný pro všechny 4 cílové platformy, protože většinou stejně jde jen o wrappery kolem té jediné knihovny, implementované v C. Příklad: pokud jde o knihovny typu ImageMagick, bude API u všech cílových platforem podobné. napsat interfacy k existujícím populárním nástrojům by nemuselo být _tak_ složité - nejsložitější mezikód se nakonec vždy bude generovat jen pro to C, pro ostatní platformy bude překlad triviální.

    ovšem proč se snažit argumentovat, když ty máš svojí zjevenou pravdu a předem víš, co všechno určitě nepotřebuješ a určitě to nepotřebuje ani nikdo jiný...
    REDGUY
    REDGUY --- ---
    XCHAOS: Ty si napsal asi 10 příspěvků podrobně rozebírajících, jak je to celé nesmysl - nesmyslny jsou tvoje zduvodneni o tom, jak se lidi budou ucit programovat ctenim tveho generovaneho kodu, jak je potreba vyresit "problem" s konfiguraci tim, ze "platoforma" automaticky vsechno "zkonfiguruje" sama, jak programovat v C znamena "platoform lock-in" a tak dale a tak dale. Tohle jso konkretni nesmysly a pitomosti. "Chci si hrat" je jedinej rozumnej duvod a nikdy jsem ho nepopiral. Nelzi o tom.
    REDGUY
    REDGUY --- ---
    XCHAOS: hele, je to už 10 let. No jasne. Takze to je fakt relevantni informace 8)))

    když byl napsaný v Djangu, zatímco po přepsání do nativního Pythonu - aha, ty jen nevis, co znamena slovo "nativni". Ok 8)))
    XCHAOS
    XCHAOS --- ---
    REDGUY: ehm, kdyby si napsal jen "hraj si a předveď výsledek", tak bych vůbec nic nerozporoval. Ty si napsal asi 10 příspěvků podrobně rozebírajících, jak je to celé nesmysl... a když ti došly argumenty, tak se zase zoufale snažíš dosáhnout zabanování.

    což asi udělám.. je fakt nelogické mít lidi, které mám na ignorelistu, ve svých klubech nezabanové...
    XCHAOS
    XCHAOS --- ---
    REDGUY: hele, je to už 10 let. Ale stejný web (dost primitivní,co si budeme povídat - měl vybrat v podstatě nejnovější položky z jediné tabulky) tehdy zvládal asi 3 requesty za sekundu, když byl napsaný v Djangu, zatímco po přepsání do nativního Pythonu jich zvládal asi 30 :-)

    Připouštím, že tehdy možná někdo jen použil to Django špatně (moje práce to tehdy nebyla...). V Pythonu ale pořád občas programuju.. zrovna teď nějakou kombinatoristiku pro plánování naší bezdrátové sítě. V Pythonu se mi výborně pracuje s datovými strukurami - i když zrovna tenhle konkrétní algoritmus bych asi v C napsat dokázal, tak samozřejmě, když píšu něco jednorázově a jen pro sebe, tak dnes automaticky sáhnu po Pythonu.
    REDGUY
    REDGUY --- ---
    XCHAOS: dostanu tuny odpovědí "ne, s tímhle si opovoaž hrát" - hmmm. Takze ja napisu doslova "Jo, hraj si a pak predved vysledek" nebo "napis konkretni specifikaci, nebo jeste lepe, naprogramuj to" ... a xchaos najednou tvrdi, ze "opovaz si s tim hrat"? A pak se divis, o tobe rikam, ze jsi bezostysnej zmrd a lhar 8))
    REDGUY
    REDGUY --- ---
    XCHAOS: výkonnost Djanga mi, dejme tomu, neohromila (srovnáváno s nativní Python webovou aplikací) - Django neni "nativni Python webova aplikace"? A jakpak jsi to meril a srovnaval? Muzes to prosim nejak rozvest, jen tak, at se pobavime?
    XCHAOS
    XCHAOS --- ---
    AXTHEB: takhle... přímo programovat jsem se v tom neučil, ale výkonnost Djanga mi, dejme tomu, neohromila (srovnáváno s nativní Python webovou aplikací)

    nápad, že bych můj code generátor měl i ORM vlastnosti je popravdě jenom nápad. Ale bude staticky typovaný, tedy bude mít např. ekvivalent datové struktury struct, jako Céčko - v té na rozdíl od Python slovníku (dict) nebude moci být libovolný náhodný bordel...

    jinak samozřejmě si cením konstruktivní kritiky, ale ta zdejší debata, kdy já víceméně nastíním, že si s něčím chci a dostanu tuny odpovědí "ne, s tímhle si opovoaž hrát".. no nevím.
    AXTHEB
    AXTHEB --- ---
    AXTHEB: A samozřejmě, že to jde i obráceně, máš tabulku/pohled v databázi tu si necháš popsat Python kódem. Ale uděláš to jednou, a pokud ti někdo změní databázi tak na to přijdeš hned a tedy snadno zjistíš, komu máš jít naplivat do klávesnice.
    AXTHEB
    AXTHEB --- ---
    XCHAOS: Kdybys ses místo vymýšlení metaplatforem naučil Python a nějaké dobré ORM pro něj (třeba to, co je v Djangu). Žádné změny syntaxe, prostě si uděláš objekt a on se magicky umí ukládat do databáze a všechny ty užitečné věci okolo.
    Mezi kód vytvářející silně typovanou strukturu je mizérie která tě zachvíli sežere nějakou magickou chybou. Nadefinovat si objekt/strukturu a pro ní odraz v databázi bude vždy bezpečnější.
    REDGUY
    REDGUY --- ---
    XCHAOS: co takhle představa, že by mezikód pro jakýkoliv výsledek složitější SQL operace dokázal vybudovat lokální silně typovanou strukturu? - No a? V cem je vyhoda? Proc je kvuli tomu potreba psat vlastni jazyk? Co to vlastne znamena a jak by to vlastne fungovalo? Vi sam XChaos, o cem mluvi, nebo zase jen mota dohromady nejaky odporny termity a citi se pritom hrozne cool? Otazky, otazky, otazky 8)))
    REDGUY
    REDGUY --- ---
    XCHAOS: jde zdůvodnit třeba i jen tím, že si prostě chci hrát (a opravdu by mi zajímalo, co najdeš špatném na tomhle nic, na tom pochopitelne nic spatneho neni. Akorat ze tvoje prefoukly ego ti nedovoli v ten moment prestat a skutecne si zacit hrat, ale musis pak mit plnou hubu kecu o tom, jak vyresis neexistujici nebo marginalni problemy, jak se lidi budou ucit programovat ctenim tveho generovaneho kodu, jak implementujes genialni "design patterny" tak skvele, ze se sebehnou lidi a zacnou na tebe pracovat a tak dale a tak dale. Jo, hraj si a pak predved vysledek. Temahle nafoukanejma recickama se ztrapnujes hned dvakrat: jednou ted, podruhy az je srovname s vysledkem 8))

    REDGUY
    REDGUY --- ---
    XCHAOS: tímhle si zase dokazuješ co? - protoze ses ani po vsech tech letech nenaucil citovat to, na co reagujes, tak fakt netusim na co ptas.
    XCHAOS
    XCHAOS --- ---
    REDGUY: ad browserový javascript: jediný jazyk, který je dnes reálně nativně instalovaný kdekoliv, je jazyk, ve kterém ani nejde ukládat do lokálního filesystému (a to je prostě fakt...). k zdůvodnění vývoje nové platformy to nestačí, to je fakt.

    moje meta-platforma, co bude od začátku cílit na více cílových platforem, jde zdůvodnit třeba i jen tím, že si prostě chci hrát (a opravdu by mi zajímalo, co najdeš špatném na tomhle :-)

    (jinak co takhle představa, že by mezikód pro jakýkoliv výsledek složitější SQL operace dokázal vybudovat lokální silně typovanou strukturu? připouštím, že nevím, jestli chci zacházet tak daleko... ale v zásadě, pokud bych opravdu chtěl programovat tak, že nebudu přemýšlet, ve které z 5 různých syntaxí se zrovna nacházím, tak bych se touhle cestou vydal...)
    XCHAOS
    XCHAOS --- ---
    REDGUY: tímhle si zase dokazuješ co? (BTW, to už je intuitivnější generický mysql connect než tohle :-))
    Kliknutím sem můžete změnit nastavení reklam