• ú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: no hele, popravdě nevím :-) výhodou je, že code generator může např. všude, kde se jakkoliv přistupuje k referencím na odkazovanou paměť a stejně tak i na konce scope, kde zaniká existence proměnných, přidat nějaké reference countery.

    v podstatě právě to, že jsem se vzdal myšlenky, aby generovaný kód byl za každou činu nějak snadno a cool čitelný, mi umožní použít některou ze strategií, které bych při ručním programování použít nechtěl. možné je i ruční generování "free" na objekty, na které po dobu jejich existence další odkaz zaručeně nevznikl a nějaký mechanismus předávání počítadla reference counterů ve všech ostatních případech.

    pochopitelně to musí být stejně blbuvzdorné, jako je to třeba v tom Pythonu, programátoři prostě o uvolňování paměti nebudou muset přemýšlet, když nebudou chtít. mým úkolem bude pořešit toto v tom generovaném mezikódu... na druhou stranu, ten překladač bude o generovaném kódu vědět všechno, co by o něm věděl dobrý programátor - takže vlastně píšu program, který bude v C programovat za mě :-)

    každopádně, jakákoliv snaha říct, že nějaké objekty vzniklé v nějakém úseku jsou dočasné a už se mají dealkovat, se bude programátorovi na tomhle levelu vyjadřovat daleko snažším způsobem (asi jako v C můžeš přidat scope kamkoliv a skrz něj pár proměnných na stack, které se zahodí jakmile nejsou potřeba). ovšem na rozdíl od mé předchozí vize nadstavby nad C budou takováhle akcelerace kódu či úspora paměti zcela dobrovolná a programátoři se tím nebudou muset zabývat povinně.
    REDGUY
    REDGUY --- ---
    Hele, XChaosi, jak bude fungovat treba sprava pameti? Kdyz budes prekladat jak do gargbage-collected jazyku, tak do C, jakpak to bude fungovat v xJazyku?
    REDGUY
    REDGUY --- ---
    XCHAOS: o se nových platforem go a rust týče, tak start nového vlákna (nebo taky ne - přesné chování není definováno, může a nemusí se to spustit v novém vlákně...) pomocí klíčového slova "go" je tam příjemně intuitivní a dost možná to do svého projektu převezmu - v rustu se thready spousteji pres "go"? To jsou mi novinky... Kazdopadne, zjevne nechapes, ze nejde o to, jaky "klicovy slovo" pouzijes. Golang ma celou koncepci postavenou na gorutinach (ktery jsou neco jinyho nez klasicky thready), vcetne celyho runtime a knihoven. Zase neco, co zcela ignorujes. Obdobne v rustu mas celej model ochrany pameti, integorvanej s multithreadinngem. To jsou ty podstatny veci, ne jak se jmenuje nejaky klicovy slovo. Zkus aspon trochu premejslet, neco si o tom nastudovat a neztracet cas povrchnostma.
    REDGUY
    REDGUY --- ---
    XCHAOS: že programátor ví, co dělá, a které objekty jsou na sobě nezávislé a které ne, to by minimálně _měla_ být pravda, - blbost nebyla to, ze by programator vedel co dela, ale to, ze obecne jen programator vi, jestli lze paralelizovat.

    že chci jazyk s blbuvzdornou a inutitivní syntaxi pro vícevláknový během, . - HAHAHAHAHAHAHAHAHAHAHAHAHAHA. Hele, bezpecny paralelni zpracovani dat je hodne, hodne slozitej problem. Spousta hodne chytrej lidi na nem pracuje v podstate desitky let, vymejsleji metodologie, abstrakce, kompletni programovaci jazyky a v podstate to porad neni poradne vyreseny, porad je tam spousta prilezitosti, jak si rozbit hubu. A ty si myslis, ze proste jen tak prijdes, vyfrknes nejakou zhruba Python-like syntaxi do ktery zvejkackou prilepis extra klicovy slovo "go" a tim to vyresis? Navic prenositelne mezi C/PHP a kdovi cim jeste? LOOOOL. Ne. Ani omylem. To je zase klasickej priklad xchasovoskyho Dunning-Kruger efektu: o problemu mas nejaky zakladni vedomosti, ale mnohem, mnohem vic toho proste ani nahodou netusis. Vysledek? Predstavujes si, jak to vyresis nejakejma trivialnima hackama, ktery ale ignorujou jak obrovsky komplexni problem to je.

    Co komunikace mezi threadama? Synchronizace pristupu k datum? Race conditions? CPU-bound vs IO-bound tasky? Exceptiony v threadech? Spravnej pocet threadu? Priorita? A tak dale, a tak dale...

    taky by znal - minimálně po prvním průchodu cyklu - dobu - HAHAHAHA. Wrong on so many levels.

    by asi vlákna zvládaly targety C a nodejs - node.js zvlada thready? Jako jo, ted je tam pridali jako experimentali featuru, ale spis mi prijde, ze proste jen zase kecas o necem, cemu nerozumis a nahodou ses trefil. Protoze jestli je node.js necim specifickej, tak prave tou absenci threadu (az teda to te soucasne experimentalni verze)

    A tak dale, a tak dale. Proste zjevne jen motas buzzwordy dohromady. Zjevne z toho nic nebude a pokud ano, dopadne to stejne jako SunTrip. Bolest, utrpeni, spousta duct-tape a prekrocenej casovej limit 8)))
    XCHAOS
    XCHAOS --- ---
    REDGUY: podívej, to, že programátor ví, co dělá, a které objekty jsou na sobě nezávislé a které ne, to by minimálně _měla_ být pravda, i když samozřejmě předpokládá to, že programátor rozumí prostředí, ve kterém pracuje.

    i kdybych nevyhlásil jiný cíl, než že chci jazyk s blbuvzdornou a inutitivní syntaxi pro vícevláknový během, který bude schopen generovat ze zdrojáku mezikód pro platformy, které to jednoduše neumožňují, i pro ty, které to umožňují, tak je to dostatečné zdůvodnění, proč ten projekt rozjíždět (víš, že jsem o tom mluvil už dřív...)

    co se nových platforem go a rust týče, tak start nového vlákna (nebo taky ne - přesné chování není definováno, může a nemusí se to spustit v novém vlákně...) pomocí klíčového slova "go" je tam příjemně intuitivní a dost možná to do svého projektu převezmu (jako název mám regnutou jednu doménu, už léta...ale zatím tomu říkejme třeba "xCh Basic", po vzoru ZX Basic :-) i když to s Basicem historickým ani microsoftím teda nebude mít společného celkem nic)

    Problém je, že já bych chtěl doplnit nějakou logiku, která sama rozhodne, jestli se nová vlákna mají startovat, nebo jestli zůstáváme v hlavním vlákně (to se dá doplnit čítačem počtu volání toho "go", a v případě smyčky se známým počtem iterací, což je tak nějak pointa, by runtime znal režii, kterou má start vlákna a taky by znal - minimálně po prvním průchodu cyklu - dobu, kterou trval poslední podobný segment - takže by runtime sám vyhodnotil, jak moc má smysl to paralelizovat - což zase řekněme, že ví programátor líp, nebo to může záviset na vstupních datech...)

    aby bylo jasné, jak to myslím:

    Klasické sekvenční procházení (jo - dvojtečka pravděpodobně bude volitelná nebo možná nebude dovolená vůbec - nebude to Python, byl by to jen syntaktický cukr, protože jednořádkové if a for jsou ošklivé :-))

    
    for prvek in seznam 
     zpracuj prvek
     print prvek, "zpracovan"
    


    A tohle by bylo procházení v předem nedefinovaném počtu threadů, podle toho, jaké parametry nastavíme runtimu (nebo jak runtime sám vyhodnotí momentální možnosti systému)

    
    for prvek in seznam 
     go
      zpracuj prvek
      print prvek, "zpracovan"
     print "jedeme dal..."
    


    Takhle by se mohlo zapisovat čekání na ukončení vlákna (moje inspirace, možná by se vyplatilo se podívat, jak to píšou v tom Go :-) zatím je to inspirované spíš Python konstrukcí try ~ except
    
    for prvek in seznam 
     go
      zpracuj prvek
      print "vlakno zpracovalo", prvek
     wait
      print "hlavni proces ma k dispozici zpracovany", prvek
     print "jedeme dal..."
    


    (volání fukcí bez úvozovek je převzaté z Basicu - opět, o syntaxi teprve začínám přemýšlet a nechci nikoho mást tím, že to bude vypadat hned od začátku jako Python, který to není :-) současně bude go bude řešit takové věci, aby se dal použít intuitivní zápis a hodnotu proměnné "prvek" v daném scope mi nepřepsalo jiné vlákno, což bude docela úlet, ale podle mě nejjednodušší bude, aby si o přístup k neduplikované verzi proměnné z nadřazeného scope bylo nutné v "go" scope explicitně zažádat (globální proměnné uvnitř volaných funkcí budou ovšem už zase globální - to je pro změnu inspirace v C)

    Prostě si stanovím, že tam, kde odbočuju do vlákna pomocí "go", bych dal prostě counter dosud neukončených vláken (počítadlo běžících threadů by mělo být celkem nekontroverzně implementovatelné), no a v kombinaci s nějakým monitoringem, kolik třeba thready alokují paměti, by se každý další průchod křižovatkou rozhodoval, jestli startovat thread, nebo ne (důvodem by mohlo být jak moc threadů, tak moc paměti alokované neukončenými thready).

    jakýkoliv paralelizovatelný kód přitom z principu musí být možné provozovat sekvenčně na "hloupých" platformách (v tomhle případě by asi vlákna zvládaly targety C a nodejs... Python to rozumně umí až od trojky, PHP to zase snad prý neumí v režimu skriptů pro webserver, což je tedy zrovna asi platforma, na kterou budu cílit).

    Přitom si jen vezmi hlídání toho, že ve vlákně by se měly používat reentrantní verze funkcí ze standardní knihovny, zatímco mimovlákno to potřeba není, by v ručně psaném vícevláknovém kódu zkrátka byly k zbláznění. Takhle mi code generátor sám pořeší, aby každé odstartované vlákno mělo vlastní kopii proměnných ve scope (podtýkám, že typicky půjde o kopie refererencí/pointerů na objekt - ne o kopii celého objektu), a hloupější cílové platformy se o "zvláknovatelnosti" nedozví vůbec - a je to.

    Už jen to, abych z jediného zdrojáku mohl vygenerovat paralelně obyčejnou i thread-safe verzi kódu, aniž bych nad tím musel dál přemýšlet, je dostatečná motivace začít nad něčím takovým přemejšlet :-) (tedy v podstatě - přemýšlím nad tím, jak to udělat, abych už nemusel přemýšlet :-)

    Všechna CPU jsou už řadu let vícejádrová a já v podstatě pořád programuju tak, jako se programovalo před 20 lety, když ta jádra byla v nejlepším případě tak 2 a jedno trvale žral systém. A přemýšlet nad tím, kolik vlastně těch threadů mám pustit, se mi fakt nechce a chci aby o tom za mě přemýšlel počítač, který to ví líp (zatímc to, jestli se o to vůbec můžeš pokusit, naopak zase JÁ vím líp...)
    REDGUY
    REDGUY --- ---
    XCHAOS: jinak důkaz, že se to dnes běžně dělá, námatkou - nikdo nerika, ze se to nedela. Ale podivej se treba na ten CoffeeScript: mas nejakou velmi rozsirenou platformu (webovej browser), na ktery existuje pouze jeden programovaci jazyk, kterej navic v dobe vzniku CoffeeScriptu byl dost hloupej a mel/ma par dost blbech featur. Takze vznikl CoffeeScript kterej v podstate opravuje a doplnuje JavaScript. Coz je kompletne jina motivace, nez mas ty. Na tvych cilovych platoformach existuje spousta kvalitnich jazyku a tvuj vlastni jazyk nic noveho, lepsiho neprinese, naopak, podle toho co pises o "jednoradkovych templatach" to bude dost mrzak, obsahujici jen ty nejzakladnejsi vlastnosti spolecni vsem cilovejm jazykum.

    Cili zase klasicky, tvuj "dukaz" je jednak o necem, co nikdo nerozporuje, jednak se tyka uplne jine situace.

    Mě jako jeden poměrně vážný argument napadá, - "pomerne vazny argument" proc napsani uplne vlastni jazyk je, ze nevis, jak pomoci maker v C udelat paralelni zpracovani seznamu? LOL 8))))

    jen programátor zná záměr, kdy se musí procházet položky seznamu sekvenčně a kdy mohou být paralelizované - nepravda. V C to tak mozna je, ale obecne to neplati.

    celá struktura přitom bude fungovat i když se pro ""hloupé" vyšší jazyky preloží identicky s normální for. - anebo proste muzes programovat v Pythonu, kterej ma modul multiprocessing . Nebo v Clojure, kde proste udelam pmap. Nebo Perl6, kterej ma podporu pro multithreading velmi hluboko v sobe. Nebo, pokud jsem IO-bound, tak v Node.js. A necpohybuju ze nejaka knihovna existuje i pro C. Anebo proste pokud jsem trouba a o nicem z toho nevim, tak si budu predstavovat, ze jsem prisel na neco genialniho a zacu vymejslet vlastni jazyk. Co z toho je lepsi reseni 8)))
    XCHAOS
    XCHAOS --- ---
    ještě poslední slovo dneska - proč se mi s tím asi chce přeci jen hrát. přečetl jsem si historii tohoto přístupu - používal se hlavně na začátku éry mikropočítačů, co jsem tak pochopil....
    Source-to-source compiler - Wikipedia
    https://en.wikipedia.org/wiki/Source-to-source_compiler

    (ale nezmiňuje to příklady zavedených code generátorů)
    Eiffel (programming language) - Wikipedia
    https://en.wikipedia.org/wiki/Eiffel_(programming_language)
    Although there is no direct connection between Eiffel and C, many Eiffel compilers (Visual Eiffel is one exception) output C source code as an intermediate language, to submit to a C compiler, for optimizing and portability.

    jinak důkaz, že se to dnes běžně dělá, námatkou
    CoffeeScript - Wikipedia
    https://en.wikipedia.org/wiki/CoffeeScript

    Mě jako jeden poměrně vážný argument napadá, že pokud chci paralelně k vždy-sekvenčmu for_each (nebo prostě for ve stylu pytnonu) udělat nějakou modifikaci (typu for_any, nebo napsat jen "any"), které bude automaticky spouštět iteraci ve více vláknech (jen programátor zná záměr, kdy se musí procházet položky seznamu sekvenčně a kdy mohou být paralelizované!), tak si prostě v C s makry nevystačím ani při nejlepší vůli.

    celá struktura přitom bude fungovat i když se pro ""hloupé" vyšší jazyky preloží identicky s normální for. Pro C pak můžou existovat dva sub-targety, jeden s použitím multithreadingu a druhý bez něj. přitom ale zdroják zůstane snadno čitelný a přenositelný na systémy bez multithreadingu.

    (podotýkám, že dnes se fakt pořád spousta věcí programuje tak, jako by CPU pořád měla jen jedno jádro.... zrovna na serverech, kde se prostě jen pustí víc procesů, to asi nevadí... pokud budu mít datovou strukturu, která přibližně bude vědět "kolik toho je", tak jen třeba automatická paralelizace kódu, o kterém programátor ví, že paralelizovatelný je, za nějaké to úsilí stojí...)
    REDGUY
    REDGUY --- ---
    XCHAOS: tím pádem zase mezikód bude poměrně debugovatelný i mimo rámec IDE, které je specializované na konkrétní jazyk. - HAHAHAHAHAHAHAHAHA. Takze ty rikas, ze se bude debuggovat ten generovanej mezikod? HAHAHAHAHAHAHA. Cili kdyz budu chtit ladit svuj program, budu muset soucasne premejslet ve svym jazyce a v cilovym jazyce? HAHAHAHAHAHAHA. Tak touhle zoufaly usili vydavat kazdou nesmysl a pitomost vlastne za vyhodu, to je proste super 8))

    že v jistý moment je užitečnost algoritmu tím větší, čím větší množství lidí je schopno porozumět zdrojovému kódu a SOUČASNĚ čím větší množství lidí je schopné kód jakkoliv spustit. - akorat ze tenhle "argument" ma ten problem, ze kdyz pises v Pythonu nebo C, tak jsi schopnej to pustit v podstate vsude a rozumi tomu taky spousta lidi. PHP jsi pak schopnej pustit vsude, kde potrebujes (realnej webovej server, neschopnej pustit PHP snad ani neexistuje, ). Takze znovu: tvoje predstava, ze fungl novej jazyk, kterej nikdo neumi a kterej se bude prekladat do C/PHP/Pythonu/whatever nejak uzitecne rozsiri mnozstvi platforem, na ktery jsem schopnej programovat, je _nesmyslna_.

    očekávám jednořádkové templaty - LOL. Jinymy slovy, ten "prekladac" bude extremne naivni a jazyk sam extremne omezenej, protoze to bude proste nejakej malinkej prunik vlastnosti jednotlivejch cilovejch jazyku. Abys mohl mit "jednoradkove templaty", tak proste nebudes moc pouzit veci, ktery jsou v Pythonu a ne v C a tak dale. Cili to bude hloupy, omezeny a pomaly. Oooukej 8)))
    XCHAOS
    XCHAOS --- ---
    Is there a program which converts code written in one programming language to code in another programming language? - Quora
    https://www.quora.com/...written-in-one-programming-language-to-code-in-another-programming-language
    XCHAOS
    XCHAOS --- ---
    KEJML: tak minimálně to, že z kódu obsahujícího unicode identifikátory vygeneruju mezikód pro C, které je nemá, ale zato tam můžu do mezikódových pracovních názvů proměnných zabudovat masivní debug info (typu local_integer_xn--luouk k-z2a6lsyxjlexh, global_string_xn--rrvn28h :-). tím pádem zase mezikód bude poměrně debugovatelný i mimo rámec IDE, které je specializované na konkrétní jazyk...

    podívej se na to z toho úhlu pohledu, že v jistý moment je užitečnost algoritmu tím větší, čím větší množství lidí je schopno porozumět zdrojovému kódu a SOUČASNĚ čím větší množství lidí je schopné kód jakkoliv spustit.

    samozřejmě taky nejtěžší bude generování C mezikódu a pokud zvládnu tohle, tak paralelní překlady do vyšších jazyků jsou v proti tomu podstatě formalita (očekávám jednořádkové templaty...)

    taky mi asi inspirovalo, že se dnes používá se střídavými výsledky strojový překlad mezi vecelku-nedeterministickými lidskými jazyky - přičemž na překlad mezi téměř-deterministrickými počítačovými jazyky jsem nenarazil (ale právě to zkusím pogooglit...)
    REDGUY
    REDGUY --- ---
    KEJML: Souhlas. Je to cute, ale fakt to neni featura, kvuli ktery by nekdo zahodil celej ekosystem normalniho rozsirenyho jazyka a presel na xJazyk.
    KEJML
    KEJML --- ---
    Jako na unicofe identifikátorech bych se fakt netočil. To funguje v Jave, Perlu, Pythonu 3, Javacriptu, Ruby a jistě v mnohých dalších. Na druhou stranu v komerční praxi jsem to použitý neviděl.
    REDGUY
    REDGUY --- ---
    XCHAOS: ale kdo ovládá všechny ty knihovny? - aha. Takze tvoje reseni je "budu si psat vsechno sam, tak to budu mit pod kontrolou a budu vedet, kdo to dela a jestli je to bezpecny". No, je videt, ze o programovani cehokoliv vetsiho fakt vubec nic nevis.

    Nemluve o tom, ze se ted krasne strilis do vlastni nohy: pokud ty neveris knihovnam, proc by nekdo mel verit tvemu prekladaci?

    slabiny se ti hledají blbě. - LOOOOOOL. No jasne, zadny "slabiny" tady vubec najevo nevysly, nenene, v zadnym pripade. Idiotsky debugovani, zadny knihovny, nebo uz samo to, ze vlastne nejsi poradne schopnej rict, jaky realny vyhody to bude mit, ne, to vubec nejsou slabiny 8)))))


    že nějaký jazyk přináší spoustu okrajových a málo používaných features, to jako velkou výhodu nevidím. - rika clovek, kterej se chvastal tim, ze jeho jazyk bude umoznovat unicode ve jmenech promenych 8))))
    XCHAOS
    XCHAOS --- ---
    REDGUY: ano, ale kdo ovládá všechny ty knihovny? do jisté míry je tím dané, že i když kód, který si stáhneš, je opensource, tak znalost jazyka, bez znalosti všech použitých knihoven, je ti téměř nanic, pokud jde o vyhodnocení toho, co kód vlastně dělá a jestli je bezpečný...

    REDGUY: a debugger... přiznávám, že jsem o tom nepřemýšlel, je fakt, že už léta vyvíjím bez debuggeru a když něco nedělá to co má, tak používám konzervativní nástroje jako logování nebo debugovací výstup. je ale pravdě, že je to dnes silně menšinový styl (přitom v 90kách jsem normálně používal Borland IDE.. jen jsem si to odvykl při ladění aplikace, co se nevešla do paměti, nebo ne současně s aktivním ovladčem síťové karty, byly v ní problémy s přepínánám grafického módu, apod.... a pak dtto, v Linuxu na přelomu tisíciletí žádné pořádné IDE nebylo, i když jsem kdysi používal první IDE, která byla)

    v nějakej moment si prostě krokovat kód odvykneš a přidáš do něj debug hlášky... vím že to zní jako návrat do historie, ale prostě IDE, která jsem viděl v poslední době, jsou natolik monstrózní, že mi přijde lepší prostě psát kód, u kterého je jasné co dělá :-)

    (použít commandline debugger je pak naprosté zoufalství, před tím jsem prchnul hned jak to šlo :-)

    zmínka o debugování je samozřejmě namístě.. já chci cílit na lidi, co potřebují co nejrychleji napsat kód, který dělá to, co chtějí, aby dělali... myslím fakt nemám větší ambice než svého času Perl, který v podstatě začínal jako nástroj na efektování parsování logů a generování různých statistik.

    pokud by se to fakt náhodou rozšířilo, tak navázat debugování na debug informace v mezikódu by bylo pro vývojáře ide asi to nejmenší, navíc právě překlad do více jazyků může v budoucnu umožnit třeba použít pro debugování jazyk, ve kterém se lépe debuguje, protože má nějaký runtime (javascript?), zatímco deploynout bys mohl binárku vyrobenou z C mezikódu.

    prostě jako obvykle útočíš na hypotetický koncept jen tak z principu (protože tě to prostě baví), ale slabiny se ti hledají blbě.

    to, že nějaký jazyk přináší spoustu okrajových a málo používaných features, to jako velkou výhodu nevidím. jak jsem psal dříve - snižuje se tím počet osob, které jsou schopné kódu porozumět, čímž se v podstatě znehodnocuje celý koncept opensource (porozumět zdrojovému kódu spravovaného jiným vývojovým týmem je často docela komplikované)

    uznávám, že Esperanto, coby vzdáleně podobný pokus v "lidské lingvistice" zůstalo okrajovou kuriozitou...
    Esperantští rodilí mluvčí – Wikipedie
    https://cs.wikipedia.org/wiki/Esperant%C5%A1t%C3%AD_rodil%C3%AD_mluv%C4%8D%C3%AD
    wow.. Soros je rodilý mluvčí Esperanta? tak to vysvětluje mnohé :-))
    REDGUY
    REDGUY --- ---
    XCHAOS: představ si třeba názvy proměnných v plném utf-8. - Ach boze. Myslis treba tak, jako v Perlu 6? Sokujici 8)))

    v generovaném mezikódu můžu řádky původního zdrojáku vždycky vkládat jako komentář - a to bude k cemu? Ty jako cekas, ze nekdo bude pracovat s tim mezikodem? Nebo proste bude muset, protoze mu nic jinyho nezbude treba pri lateni programu, protoze xJazyk samozrejme zadny poradny debuggery mit nebude? To zni fakt pohodlne 8)))

    Akorat ze teda porad nic konkretniho a zasadniho. UTF-8 jmena promenych? Cute, ale zily to nikomu fakt nerve. Puvodni zdrojak jako komentar? Wow, sokujici. Znovu: proc by nekdo mel zahodit vsechno, co mu prinasi Pyhon/Perl/Erlang/Node.js a pouzivat xJazyk?
    REDGUY
    REDGUY --- ---
    XCHAOS: ano, PHP i node.js mají dnes vlastní balíčkovací systémy - co to zase mlzis? Proc do toho tahas balickovaci system? Nejde o balickovaci system, jde o to, ze pro PHP, Perl, Python a dalsi rozsireny jazyky existuje spousta knihoven (bez ohledu na to, jak jsou distribuovany), ktery muzes pouzivat. Komprese, kryptografie, statistika, http, whatever, proste kdyz to potrebuju, tak najdu prislusnou knihovnu a jedu. Zatimco u xJazyka? Nic.

    několikrát jsem tě prosil, abys solární letadla a kola netahal do diskuzí, kde jsou offtopic. me prijde fakt zabavny, jak je tvuj pristup naprosto stejnej, at uz jde o letadla, programovani nebo kola. Spousta velkejch reci a pak... no, vime 8)


    doufám aspoň snad uznáš, že je to daleko rozumnější ze je_co_ daleko rozumnejsi? Zatim jen placas paty pres devaty a nejsi schopnej poradne popsat, co vlastne udelas, co presne to bude delat a v cem to bude lepsi.
    XCHAOS
    XCHAOS --- ---
    REDGUY: ehm, "ekosystém knihoven".... ano, PHP i node.js mají dnes vlastní balíčkovací systémy, ale je to fakt dobře? fakt by se měly aplikace lepit takhle? (ostatně i Perl je má)

    Jako mícháš pátý přes devátý a několikrát jsem tě prosil, abys solární letadla a kola netahal do diskuzí, kde jsou offtopic.

    S tímhle nic vyhrát nechci, prostě jde jen o to, že jsem už někdy v éře 8bitových počítačů plánoval "vlastní dialekt Basicu", protože některé tehdejší dialekty Basicu se mi od pohledu líbily o dost víc, než tehdy oficiálně doporučovaný Turbo Pascal. (Hodně lidí se naštve, když Python označím za "dialekt Basicu"... ale... :-)) Prostě vždycky jsem přemýšlel nad omezeníma jazyka, kterým se bavím s počítačem...

    celá věc s paralelním cílením na víc platforem se mi může vymstít, až narazím na konstrukci, kterou třeba některý z těch jazyků nemá vůbec, nebo jí má řešenou zcela odlišeně od ostatních (ehm, to popravdě nastane asi hodně brzo - viz jen různé systémy odchytávání vyjímek, apod. :-)

    celkově je to prostě nová věc, o které jsem začal přemýšlet. dnes máš toolkity, které ti umožní úplně předefinovat nějaký jazyk a psát v něm úplně jiným stylem, než v původním jazyce: tohle je vlastně přesný opak, je za tím snaha o srozumitelnost, o psaní jednotným stylem bez ohledu na cílovou platformu.

    (doufám aspoň snad uznáš, že je to daleko rozumnější, než releasnout nějakou aplikaci pro více platforem a pak čekat, že případná zlepšení nebo bugfixy někdo backportne pro všechny podporované platformy...)
    DANIELSOFT
    DANIELSOFT --- ---
    XCHAOS: proměnné v mezikódu se mohou jmenovat komplexně a obsahovat v sobě např. informace o typu

    to už existuje :)
    Name mangling - Wikipedia
    https://en.wikipedia.org/wiki/Name_mangling
    XCHAOS
    XCHAOS --- ---
    REDGUY: bude high-level, ale staticky typovaný. vlastně v nějakých prvních alfaverzích bude určitě daleko víc low-level, než cílové platformy typu PHP, Python nebo Javascript :-)

    je to poměrně jednoduchý nápad, který je navíc příjemně mimoběžný k mým dalším snahám v C - pokud někdy v budoucnu vymyslím nějaký vlastnílepší memory management, můžu ho právě zabudovat do tohohle překladače :-)

    jak jsem tu před lety předváděl, v čistém C není problém zkonstruovat většinu vyšších abstrakcí, typu polymorfní objekty, apod. Jediný problém je, že tyhle konstrukce pak nejsou úplně human-readable, což právě precompiler řeší (mj. ručení editace těch složitějších konstrukcí budou zdlouhavé a náchylné k chybování programátora, a makra mají taky svoje mouchy...).

    Mj. v generovaném mezikódu můžu řádky původního zdrojáku vždycky vkládat jako komentář (nebo min.to může být on-demand feature, přepínaná commandline parametrem).

    Další věc, která mi napadá je, že proměnné v mezikódu se mohou jmenovat komplexně a obsahovat v sobě např. informace o typu, což mezikód učiní čitelnějším a umožní to vkládat do názvů proměnných znaky, které cílové platformy nepovolují (zase, tahle feature může být volitelná...)

    (Příklad: představ si třeba názvy proměnných v plném utf-8. generování mezikódu tenhle problém plně řeší. možná ti to nepřijde podstatné, ale já si dovedu představit, že to zpřístupní programování třeba národům, které nepoužívají latinku... a i v češtině bude frajeřina mít proměnné s diakritkou :-))

    (Jako částečně je to samozřejmě samoúčelné, ale taky to neprezentuju jako jako nějaké všespásné řešení - s rostoucím věkem a vývojem okolo je pro mě všchno programování víc a víc jenom hraní... ale pořád mám potřebu udělat něco,s čím by si chtěli pak hrát i jiní...)
    REDGUY
    REDGUY --- ---
    A btw, chapu spravne, ze si predstavujes, ze tvuj xJazyk bude obdobne high-level jako rekneme python nebo php, nebo mozna jeste vic... a soucasne si myslis, ze zvladnes napsat jeko prekladac do C, takze to bude schopny bezet i na hardwarove extermne omezenejch embedded platformach? No, LOL. Uz se nemuzu dockat 8)))
    Kliknutím sem můžete změnit nastavení reklam