From 7b1e0e39b4d3eab41ddf0b4c87fafbe8a804c400 Mon Sep 17 00:00:00 2001 From: Richard Thier Date: Tue, 30 Apr 2024 03:17:12 +0200 Subject: [PATCH] First drafts - it was long existing, but committed to git --- BASED.md | 362 ++++++++++++++++++++++++++++++++++++++++++++++++ csv-helyett.md | 3 + llvm-helyett.md | 17 +++ qbe.pdf | Bin 0 -> 116572 bytes 4 files changed, 382 insertions(+) create mode 100644 BASED.md create mode 100644 csv-helyett.md create mode 100644 llvm-helyett.md create mode 100644 qbe.pdf diff --git a/BASED.md b/BASED.md new file mode 100644 index 0000000..f545bad --- /dev/null +++ b/BASED.md @@ -0,0 +1,362 @@ +# A "based" programnyelvről + +Ha megcsinálom a "strukturált formában tárolt programszöveges" ötletem, akkor egy saját nyelvet is implementálnák vele, ami "nem memory safe, hanem nehezebbé teszi a memória hibákat" - tehát nem lenne bonyolult borrow checker hozzá. + +# Elnevezések + +- *.basd +- ./based build +- "Bézd" +- Based Advanced Simple Effective Devlang + - - - - - + +# Operátor precedencia + + https://www.youtube.com/watch?v=fIPO4G42wYE +^^Ez baromi hasznos és szerintem nem csak rekurzív leszállásnál lehet szerintem ez! + https://www.youtube.com/watch?v=AikEFhCaZwo + +# OOP helyett: handler + + handler Vector { + ... + } + +^^Ezek "kezelik" a memóriákat és resource-okat RAII-módon, konstruktorral és destruktorral. +Szerintem a struct-hoz képest is jobb szó. + + +# Memória és resource kezelés + +A lényeg ez (kb. "kötelező" RAII + extra szabályok dangling ref / pointer ellen): + +- referenciákat lehet paraméterként megadni elvárt típusnak ÉS visszatérési értékként is metódusoknál +- De referenciát eltárolni struct mezőben nem lehet - sima változóban félreteheted magadnak a stack-en ha nem akarod mindig kiírni az expression-t. +- Pointerekre meg van egy ownership modell, hogy a class-hoz / struct-hoz tartozik egy "resources" vagy "pointers" blokk... Valszeg csak külön syntax van erre, nem akarok ilyen hosszú szavakat kiírva látni, mert öli a produktivitást, hanem mint a C++ban pl van az inicializálós rész a konstruktornál, úgy a class-nál valami hasonló kis syntax erre... +- Ugye pointereket vissza tudnak adni és el tudnak fogadni paraméterként @resource-nak és @release-nek jelölt függvények (mint pl. a malloc meg a free). +- Az ilyen (így jelölt) függvényeket, csak konstruktorból és destruktorból tudod meghívni!!! +- De persze a konstruktor beállíthat a pointerednek valami értéket - nem kell malloc-ból inicializálja meg! és ugye nem kell free-szerű dolgokat hívnia rá... +- Meg persze a @resource nem kötelező, hogy pointer-t adjon vissza - mert adhat valami handle-t is mondjuk. Tehát ennek a "pointeres" blokknak vagy lehetnek nem pointeres változói, ami mondjuk egy integer csak, de úgy jobb, ha minden resource-t szerintem oda írsz - alternatíva, hogy tényleg csak a pointereket jelöljük külön is és akkor sima mezőnek ad értéket a konstruktorban a @resource-os függvény ami mondjuk egy adatbázis handle-t ad vissza valami hívásból és tárol el.... Lehet hogy tisztább ez így, csak így a resource handle-k nem egy helyen vannak, hanem félig a pointerek - félig a sima adatok közt. Valszeg érdemes pointer blokkot csinálni ami tényleg csak pointereket tartalmaz és ha nem használod - hát nem használod.... Egyre inkább hajlok az utóbbira, mert mégis tisztábbnak hangzik... +- Nyilván ezek mind privátok: de ha valaki referenciát ad paraméternek a saját típusodból egy metódusodban, az abban lévőket eléred mert van rá ugye visibility-d úgy. Meg esetleg ugye csinálhatsz friend jellegű dolgot, vagy "owner" class-t aki eléri a pointereid. Esetleg ha egymásba ágyazott class-okat csinálhatsz, akkor ez default bekerül friend-ként, hogy a class törzsében definiált másik class alapból a kintit tekinti ownernek... Ez az "owner class" jó ötletnek tűnik - el is neveztem protectornak - és így lehetnek protected pointerek - na azokat éri el az a speciális class / handler! +- A pointereknek adhatsz értéket, növelheted, csökkentheted, szorozhatod meg a faszomsetudja még mit akarsz vele. De csak a saját pointereidre van normális esetben láthatóságod... +- Alapból a pointer lehet null - alapból a referencia nem lehet null! Külön kell jelezni, ha lehet null egy visszaadott referencia, vagy paraméterben leírt ref - tehát ez a típus része. Mondjuk egy &ref? jellegű syntax, vagy valami ilyesmi. + +^^ez szerintem majdnem mindent kezel, de nyilvánvalóan nem mindent és pont az a célom, hogy a rust-al ellentétben NE akarjak mindent safe-en tartani, csak minél többet... + +asszem egyedül ezt nem kezelem így: + +T& genyoka() { + vector tmp; + tmp.pushback(T()); + return &tmp[0]; +} // obviously dangling reference + +^^de mivel a referenciákat kvázi "nem tárolhatod el" ezért az ilyen problémák baromira lokálisak maradnak szerintem - nem szétszóródnak a kódban. + +Természetesen ha @unsafe-nek jelölöd a függvényeid, akkor eltekinthetsz ezektől - olyankor mondjuk hozzáférsz mások pointer adattagjaihoz, használhatsz és adhatsz vissza pointer-eket és hasonlók. De ha a hívó maga nem unsafe, akkor nem tudja eltárolni a pointered, mert ugye nem tud rá változót csinálni (ha van valami var/auto jellegű típuskikövetkeztetés, akkor ott le kell állítani, ha nincs akkor eleve nem probléma, mert le se tudja írni az illető). Ugyebár természetesen az ilyen módon jelölt függvények továbbá mindenféle módon jelölt függvényt simán meg tudnak hírni - tehát pl. malloc-ot, vagy egy adatbázis kapcsolat létrehozást / elengedést is. + +A @unsafe-t lehet hogy class/struct pointer blokkjára is engedhetek rátenni, ami azt jelentené, hogy az ő pointereit más is látja, esetleg egész class-ra / struct-ra, amelybe lévő dolgok így öröklik lefele + +Mondanom se kell: GC nyilván nincs így! + +## Custom allokátorok / arénák + +A go-hoz újabban ajánlott "arénás" modell-t is lehet hogy valahogy alkalmazhatnánk - tehát hogy azzal oldjuk meg a custom allokátor kérdést... De szerintem egyszerűen úgy kell kialakítani a standard libet / kódokat, hogy template paraméter szerűen átvegye milyen @resource és @release függvényeket használ - tehát nem konkrétan malloc-ot, meg free-t mondjuk hanem csak azoknak megfelelő deklarációs függvényeket... Ezt C-ben is szoktam csinálni (pl. a kismap-ban van ilyen), de ugye ott függvény pointerekkel, amiket vagy eltárolok (de akkor runtime költsége van), vagy ha a perf fontos, akkor pl. a kismap esetén azt szoktam, hogy ezeket nem csak konstruálásnál, hanem minden hívásnál át kell adni ami használja - azért mert látom, hogy a compiler be tudja inline-olni, ha egy static inline force-inline stb. függvényt adok át neki function pointernek... De ez ugye "trükközgetés" feleslegesen és jó lenne, ha nyelvi elemként tudnánk ezt. Esetleg érdemes a hagyományos generik / template témától ezt különszedni? Nem biztos, lehet hogy azzal kezelendő. Cpp esetén template-ekkel szoktam ezt csinálni... + +A C++ esetén ugye probléma, hogy van "new", de mi eleve nem használunk ilyen dolgot.... A "new"-t amúgy is át kéne úgy nevezni, hogy "allocate-on-heap-while-being-slow-and-randomly-place-in-memory"... Mert nem kéne, hogy össze legyen kötve az allokálás fogalma az "új dolog létrehozásával" ugyebár... Ez csak az OOP miatti agymenés... + +Megj.: A "generational arenas" esetleg legyen támogatott? Ez egy olyan dolog, hogy az elemekhez amit allokálsz, odakerül egy "int generation" mező prefixként. Az indexek ezt követően "fatpointer" szerűek (mondjuk 2x32bit, vagy akár 2x16) és a "generációt" is tárolják "optimistic locking" szerűen. Ha törlésre kerül egy elem, akkor a generációja (-1*) szorozva lesz: ebből látni, hogy nem ugyan az, mint amire még az indexem valid lenne, tehát már dead object. Ellenben ez a memória cella / terület újra kiadható (és nem kell hosszú free-list, mert elég párat tárolni és utána szkennelni (akár külön szálon szkennelni amikor kiadok a listáról - ez a szál nyilván thread pool-os jelleggel már létezik, csak pihen) és ilyenkor a területre beadható a ((-1*gen) + 1) új érték, ami miatt a generáció ugye megint csak nem az lesz, mint amit hivatkoznak! Ez valszeg nem kéne nyelvi elem legyen, de attól függ mennyire arénázunk. + +# Párhuzamosság / Multithreading + +Jó lenne TALÁN, pár experimental dolog: + +- Azonos logikai (és fizikai) CPU-ra confine-olt thread-ek, amiknél így nem kell lock-olás (greenthread szerű, esetleg a go arénákhoz hasonlóan scope-olt allokáció hogy hova spawnoljanak). +- A go féle dolgok jók - kérdés, hogy java-szerűen ezek lib elemek legyenek, vagy mint a go-nál inkább nyelvi elemek. +- Lock-free programozáshoz legyen memory modell... Lehetőleg a C/Cpp-hez hasonló?? +- Pub-sub primitívnél library szinten lehetne az ötletem amit balásznak meséltem a volatile (igen a C-s volatile!) változóról, azonos fizikai, de külön hyperthread processzoron lévő szálnál gyorsabb kommunikálásra??? Nem hiszem, hogy nyelvi elem kéne legyen, de esetleg standard lib. + +De a minimálisabb követelmény / alapabb szett + +Szerintem kell nyelvi szintű memory modell, az atomic jellegű dolgok és memory barrier-ek átvétele a C++ból kb. jó lesz és még +talán a volatile is maradhat a C-s jelentésében (vagyis nem java-szerűen). Emellett egy sima és egy read-write lock még jó cucc. + +Jó kérdés, hogy akarunk-e valami SIMD történetet. Első körben legyen elérhető a C-re fordítás, majd ott bele gányolják ha kell. + +Ilyen go-jellegű, gorutinos történet talán jó volna, esetleg pipeline és tisztán funkcionális esetre ilyen automatikus PP. + +Low-prio... Őszinte leszek - igazából a memory model csak az "igazán" fontos, a többire lehet hogy elég egy pthread... + +# Standard library + +- Az "igazán" standard libnek szerintem nem kell "prefix" meg "namespace". +- Legyen string típus +- stl-szerű dolgok, de pl. lehetne numberizer-alapú a sort algók interfésze (Magyarsort, meg kicsit átgondoltabb, stb. stb.) +- Felmerül, hogy akarunk-e Jai-szerű opcionális desktop standard libet: ablakozás, alap grafika, stb. +- Felemrül, hogy akarunk-e az előző ponthoz hasonlóan opcionális web standard libet: pl. rest server, uWebsocket-el, clientside bindingok a dom-on mászkálásra, stb... Talán első körben nem kéne + +## Memória a standard lib esetén + +Legyen a kismaphoz hasonló - tehát (template) paraméterként kapnak a handle-k malloc és free függvényeket? Vagy van erre nyelvi cucc + +# Filozófia + +- Suckless - amennyire csak lehet legyünk minimalisták és egyszerűek! +- Lehetőleg ne millióféleképpen lehessen valamit megoldani... +- Ne akarjunk "tökéletességet", inkább praktikusságot. Pl. A borrow checker talán tökéletesebb, de bonyolultabb érteni. +- Minimális függőségek (pl. lehetőleg ne kelljen LLVM ehhez!) + +Összességében "worse-is-better" jellegű filozófia atekintetben, hogy inkább legyen az implementáció egyszerű, mint mindenre kiterjedő - és a konzisztenciához képest is fontosabb ez, mellesleg az implementációs egyszerűség fontosabb az interfész egyszerűségénél is. + +# Egyéb dolgok + +## Jobb pointerek + +Valahogy jó lenne elérni, hogy a default a "restrict" kulcsszóhoz legyen közelebb. + +* Talán a tömbök külön típussá emelése ebben már eleve segít +* Mivel az ownerek kezelnek csak tömböket, ők adhatnk ki referenciákat és range-eket, de azok ugye nem alias-olnak be könnyen +* A restrict kulcsszó támogatása a minimum - de talán kéne gondolkozni mit lehetne még kihozni, hogy jobb legyen! +* Ugye mivel van külön "tömb" típusunk, ezért arra is lehetővé kéne tenni a restrict-et pl. paramétereknél, különben bakis lesz. + +## Jobb tömbök + +Néhány dologra van szerintem szükségünk: + +* (Pointer + méret / range) jellegű tömb történet, ahol a méret / range lekérhető a típusból ADA-szerűen +* Range subtype (ada szerűen) külön a típusrendszerben - hajlok arra, hogy 0..méret lehessen csak range viszont (praktikus: dyn) +* Dinamikus esetben, hívhasd az ilyen függvény paramétert sort(range(array, 42)) történettel (ahol array egy pointer, 42 méret). + +A fordító két függvényt is generál ilyen függvényekből. A típusrendszer szerint azt a függvényt hívjuk meg, amelyik gyorsabb! +Igazából ha fordítási időben ismert méretű tömbbel hívjuk meg, akkor a "sima" függvény hívódik, kivéve, ha ez valami linkelt lib, +mert abban az esetben természetesen a "valódi" függvény fog hívódni - ezt C-re fordításnál még nem látom át hogyan kéne, de majd +meg kellene oldani... + +A lényeg, hogy a "tömb" típus az pointer + hossz minden esetben, de ahol tudja, a fordító kioptimalizálja a történetet! +Ha valami mást akar az ember, például performancia okokból, akkor simán adjon át egy pointert (és mondjuk null termináns). + +Ha a "range" második paramétere nem fordítási idejű konstans szám, akkor ott is a dinamikus függvényt hívjuk majd meg. + +A range, mint altípus megadás lehetővé teszi, hogy dolgok "osztozzanak" a méreten - pl. ECS egy játékmotorban, stb. +Emellett természetesen a standard library-ban kell "vector" típus és az tudjon range-t is adni neked. + +Szerintem az így kapott kód "már kellően biztonságos" általában. + +Lásd még: + + https://youtu.be/MUISz2qA640?t=1980 + +ui.: Ha nem lesz operátor overload, akkor szerintem legyen több dimenziós tömb (nem a tömbök tömbje, hanem: matrix[15, 10, 42] = 5; + +## Holy-C féle kiegészítések a switch statement-hez + +Erről még nem vagyok meggyőzve, de néha hasznosnak tűnnek: + +* begin és end klózok, melyek több switch-et körbefognak és mindegyikük előtt és után végrehajtódnak +* unchecked switch - ahol sose generálódik "mi történik, ha nincs olyan case" code path / jmp. Erre viszont kéne compile check is! + +Az előbbi egy kis usability feature és ugye a jump táblás megoldáson annyit változtat, hogy inline-ol oda közös részeket, mintha +azok egy függvénybe forceinline lennének kitéve: tehát igazából C kódot tudunk generálni, ami ezt tudja. + +A második egyébként lehet hogy pont `checked switch` kéne legyen. Miért? Hiszen ha compile time ellenőrzés van - hasonlóan a rust +match statement-jéhez erre, hogy ne hagyjál ki valami esetet, akkor az pont a checked nem? Első körben ebből is generálhatunk +C kódot is a fordítónkkal, de akkor nem lesz "gyorsabb" a generált kód - saját fordítóval elvileg lehet gyorsabb is majd, mert +ugyebár így tényleg teljesen jump tábla fog keletkezni. + +## Pattern matching + +Ez jó kérdés, hogy legyen-e. A rust-os match statement-nek azért vannak előnyei. Megfontolandó. + +## Öröklődés, polimorfizmus + +- Nem lesz altípusos polimorfizmus. +- Lesz generic / template jellegű fordítási idejű polimorfizmus +- Lesz "tagged union" jellegű polimorfizmus (lásd rust enum, vagy pl. std::variant) +- A kompozíció könnyítésére lesznek "protector"-ok, vagyis védnök szerepek a handle-k között a protected mezők elérésére. +- El kéne gondolkozni a kompozíció típusrendszerbeli megjelenítésén: Lehessen-e "int-like" vagy "MyType-like" stb? + +Lennének ugye a hagyományos típusok, olyankor ezek "konkrétumot" jelentenek. Tehát egy int az egy integer és nem más, sem pedig +nem valami dolog ami az "int-ből öröklődik". De ez igaz a konkrétság a nyelvben ugye így öröklődés hiányában igaz lenne a saját +handle típusokra is (a struct-ok okosabb neve itt a handle). + +Ellenben megadhatjuk egy típusnak, hogy egy-egy mezője (annak típusa alapján) "legyen a mi típusunk más típusú 'nézete' ott"! + +Például: + + handle A { + like int key; + string name; + }; + + // Megj.: Elfogad A a[42]; jellegű tömböt! + void sort(int-like elements[]) { + ... + } + +* Vegyük észre, hogy ez csakis fordítási idejű polimorfizmus ebben a formában! Ki kell tudnom számítani az offsetet! +* Azt is vegyük észre, hogy kell valami "operátor": Ugyanis akarok egy elemet írni - vagy csak a nézetét (default: nézete). +* Továbbá szerintem jó, ha le tudjuk kérdezni a "valódi típust" - mondjuk hogy deklarálhassam lokális tmp-nek a bubble sortban... +* Az eredmény: sokkal tisztább, kisebb algoritmusok "mintha csak számokon dolgoznék és nem adaton". + +Fontos: Nincs auto-konverzió! Ha nem azt írom, hogy "int-like" dolgot várok, akkor csak int-et kaphatok! Ez igaz akkor is, ha egy +RovarAdat dolgot várok és egy BogarAdatban lenne egy `like RovarAdat r;` akkor RovarAdat paraméterré nem válik a BogarAdat, csak +akkor, ha direkt kiírom, hogy "BogarAdat-like" az a bizonyos paraméter! Továbbá ha nem referencia / nem pointer, akkor másolódik +az egész handler természetesen azon a ponton! + +Megj.: Több ilyenje is lehet egy handle-nek! Nyugodtan lehet `like string name;` is itt! +Megj.: Szerintem beleférhet még: `like readable int get() {..}` és/vagy esetleg `*like int get() {.. return pointer ..} ? + +## Láthatóság + +* public +* readable +* resource +* protected (*) +* readable protected (*) +* protected resource (*) +* readable protected resource (*) +* private + +Ezekből több blokk is lehet (C++ szerűen) és többször is szerepelhetnek, ezáltal lehetővé tesszük a layout megadást! + +A public gondolom elsőre is érthető s a default. A readable az lényegében egy segítő ficsőr, hogy ne legyen annyi "getter": +Ugyanis ez azt adja, hogy mások kívülről olvashatják, de én belül még írhatom. + +A resource csak a konstruktorban és destruktorban érhető el. Tehát az "életciklus" alatt readonly ("ezt kezeli a handler"). + +A protected itt érdekes, mert nincs öröklődés, ellenben a handle-k megadhatják kiket protektálnak (kiknek védnökei): + + handle A { + protected: + int a = 10; + }; + + handle B { + protected: + int b = 42; + }; + + handle C protects A, B { + static work(A &a, B &b) { + print(a.a + b.b); // possible + } + } + +Nem inheritál, csak simán ad láthatóságot - főleg akkor hasznos, ha van B adattagod, vagy egy vektorod rá, vagy dolgozol vele. +Ez segít kicsit több kontrollt elérni kompozíciónál. Esetleg ez a típus része kéne legyen? + + handle C { + static work(protectee A &a, protectee B &b) { + print(a.a + b.b); // possible + } + } + +Így egy "readable protected" kombó is járja akkor már ami kifele olvasható, de csak protectoroknak írható. Hasonlóan jön még +a "protected resource" és a "readable protected resource" is - de ezek igazából kombinációk / modifier-ek ilyen módon. + +Ha valaki erre azt mondja - ez mekkora hülyeség! A C++ legalább a friend-nél úgy csinálja, hogy a class meg kell mondja a barátait, nem csak úgy "jelentkeznek" a barátai a semmiből..... +annak azt mondom: az örökléshez meg nem kell semmi ilyesmi, szóval eddig pontosan ez volt örökléssel, hogy aki csak szeretett volna ilyet, odaírta, hogy örököl tőled és ugye hozzáfért a protectedhez.... + +## Metaprogramozás + +- Az implementációs közegből kifolyóan, a compiler scriptelésével - esetleg itt-ott erre valami syntax sugar, hogy ne legyen bonyi. +- A zig comptime-ra érdemes még ránézni és valami hasonlót esetleg csinálni? Azt sokan szeretik és produktívabb, mint a rust makrók. +- Valamilyen szintű generic: lehetőleg nem ducktype-os, hanem a template-ekhez közelebbi módon okosabb, de nem turing teljes +- Igazából a fent leírt "trükközés" az "AKA" kulcsszóval és "*AKA" kulcsszóval! +- FONTOS: Legyen már lehetőség függvényt adni template paramnak (int-et is, meg típust is, de függvényt is please). +- Az if constexpr (...) { .. } az tetszett a modern C++ból! + +## Strukturált formában tárolt programszöveg (tm) fordítás + +Az első pontot nehezebb érteni, ha nem ismerjük a kontextust: Van ez az ötletem, ami forth-szerű, de faszerkezetben strukturált "compiler", ahol a forth szavaknak lehetnek "gyerekei" és ilyen blokkjai. A (...) blokk is csak egy block, mint a [..], vagy akár a {...}. Ugyanúgy forth szavakat definiálunk és meg tudjuk mondani, hogy a compiler az adott szóhoz érve mit csináljon. Tehát konkrétan scriptelni tudjuk a fordítót. Most nem mennék bele ebbe, de pár kiegészítéssel (papíron ez részletesen is megvan) kb. az összes "értelmes" nyelvet lehet így "parzolni". A fordításban csak egymásba pipe-olva állítjuk elő a következő és következő változatokat több pass-ban - és az utolsó pass ugye mondjuk fizikai fájlba ír, vagy interpreter esetén mondjuk végrehajt. Ezzel debuggolni is tök könnyű a "compiler/interpreter"-t vagy nézni hol mit optimalizál. + +Viszont ha ezt megcsinálom, akkor ezt az itt leírt nyelvet, ezzel implementálva alapból van metaprogramozásunk - méghozzá mindennél erősebb. De ugye nem feltétlenül kényelmes is... Pl. a jai, vagy a zig comptime lehet hogy sokkal kényelemsebb. + +Megj.: A "néhány kiegészítés / részlet" azok olyasmik mint hogy nyilvántartjuk az indentálást (mind a hibajelzések, mind az ilyen python-szerű fos nyelvek miatt), kicsit trükközni kell a <..> jellegű dolgoknál (pl. generics, template), vagy épp hogy a "fordító scriptelése" azt is jelenti, hogy tudunk előre-olvasni vagy akár kézzel karakterenként olvasni és úgy mozogni az "input szöveg nyelén" ahogy Csörnyei mondaná Magyarosan a "handle"-t... Tehát ezzel tényleg nagyon testre szabható mi történik. Alapból stack-ed is van, mint a forth-nak, meg mellé vannak a fordító adatszerkezetei is (bár esetleg azokat csak akkor éred el, ha speciális jellegű szót definiálsz). + +## Exception és hibakezelés + +- Exception-ök nincsenek +- Go és rust-hoz hasonló hibakezelés az szerintem jó ötlet, de egy-az-egyben egyik se tetszik ebből a kettőből. Jó ha van valami syntax sugar és az is, ha kötelezővé tudod tenni az error-t is visszaadó függvény hívásánál a hibakezelést, vagy tovább propagálást. +- Stack unwinding, meg ilyesmi sincs így: egyszerűen syntax sugar van, hogy fordításkor kikényszerítheted a hiba lekezelését ha valaki hív téged. Az egyetlen kérdés, hogy mi történik a tagged union-os esetben ha polimorfizmus van és más-más esetben lehet, vagy nem lehet hiba... hát a válasz az, hogy a függvény deklarációban benne kell legyen a hiba szóval a hiba maga itt nem polimorf (vagyis csak ugyan ennyire, de nem lehet olyan, hogy valamely tagged union variáns olyan hibát dob és úgy, ahogy az nincs interfészben jelölve). + +Alternatíva: + +- Volt az a gondolatom az error-stream hibakezelésről, ahol error stream-eket lehet definiálni +- Ez kicsit egybemossa / együtt kezeli a logolást és hibakezelést. Konkrétan az error-ok és malfunction-ök ilyen stream-be kerülnek, ahonnal popp-olhatjuk őket - vagy ignorálhatjuk is. Ha hibát ignorálunk, akkor ebből alapesetben leállás lesz, ha malfunction-t, akkor viszont logolódik. De ignorálás helyett tehetünk is valamit - ami lehet az is, hogy kézzel leignoráljuk pl., vagy akár a sorban hagyjuk. Ez egyfajta globális hibakezelés, csak a getlasterror-jellegű dolgok helyett nem felejtődnek el a hibák - hacsak úgy nem konfiguráljuk a dolgokat. Ha "úgy" konfiguráljuk, akkor thread-local szemantikával globálisak csak - tehát nem úgy, mint a C-s esetben a nagyon-nagyon globális hibák. + +Ezt elég barokkosan kidolgoztam, de az volt a bajom vele, hogy túl összetett és talán nehezen érthető. Az, hogy a hibák simán értékek, mint go-ban, vagy rust-ban az sokkal egyszerűbb - és ennek a nyelvnek az egyik előnye az egyszerűség lenne ugyebár pont! + +## Szintaxis + +Jobb szeretném, ha a C-hez közelebb állna a syntax, mint pl. a zig, vagy rust csinálja. Sőt az optimális az lenne, ha bármely C kód fordulna is - amennyiben egy @unsafe-t ráteszünk az adott függvényre. Ez persze nem strict cél, hanem hogy "általában így legyen" mondjuk az már jó lenne. Tehát nem feltétlen lenne jó mindent is implementálni a C-ből, de pár alap dologban legyünk hasonlatosak szerintem. + +## Visszafelé kompatibilitás + +Igazából nem cél a visszafelé kompatibilitás. Nem is nagyon lehet megmondani, hogy mi lenne a nyelv "őse" ami felé kompatibilis kéne legyen nyelvi és szintatktikai szemmel nézve... + +Ami viszont jó lenne, ha egyből tudnánk fordítani C/C++ kódot a zig-hez hasonlóan. Ez a zig-nek azért brutális előnye! Viszont vannak ezzel kapcsolatban azért komoly nehézségek, ezért lehet hogy sokkal járhatóbb út, ha ezt a lépésenkénti átállást inkább úgy támogatjuk, hogy az egyik referencia implementációja a fordítónak C/C++ kódot fordít! Azért így írom, hogy C "slash" C++, mert szép dolog C-re fordulni (és onnantól minden mikrovezérlőn is elfutni, meg mindenhol, ahol van C), de a C++-ra fordulásnak akkor van előnye, ha C++ interop-ot szeretnénk és például hívni akarunk onnan osztályokhoz tartozó metódusokat, vagy hasonlókat. + +Az itt a probléma, hogy ha megengedjük, hogy C++ kódokat hívhassunk (azáltal, hogy C++ra fordulni is tudunk), akkor vajon a nem C++-ra forduló fordító backend ezt hogyan fogja kivitelezni? Az extern "C" jellegű dolognál nincs annyira ez a probléma, de praktikusan ezt megoldani mégis elég hasznosnak tűnik, mert akkor legacy kódot tudnak erre a nyelvre emelni a zig-hez hasonlóan. + +Talán a megoldás valami olyasmi, hogy ne teljesen seamless integrációt csináljunk, hanem "csak majdnem". + +^^Azért a nyelv saját magával legyen már visszafelé kompatibilis majd... szóval nem akarok python-szerűt csinálni majd... + +## Típusrendszer + +- Alapjában véve erősebben lenne típusos, mint a C/C++. Tehát pl. nem engedünk int-ből double-be csak úgy adatot tenni meg ilyenek, kevesebb lenne az ilyen mágia is... +- Jó kérdés, hogy legyen-e típus-kikövetkeztetés, meg ilyen modern cuccok amit a "nyelvek típusrendszere" kurzuson tanultam még egyetemen és sok modern nyelvben van. +- A referenciánál az, hogy lehet-e null az a típus része! +- Öröklődés alapú polimorfizmus: nincs és nem is akarok! +- Szerintem NEM duck-typing-al kéne generic-et csinálni, vagy template-et... +- runtime type info: szerintem nem kéne ilyen... érdekes, de a JonBlow-nak kell a Jai-ba és Gamedev-re is sokan sírnak érte? +- reflection: fú szerintem nem nagyon kéne - maximum compile time kiszámítható pár dolog... + +## AOP + +- Szerintem pár dolog azért hasznos lenne az aspectj-ből átvéve. Úgy, hogy nem lesz reflection, azért elég sok mindent pótolna ez! +- Igazából az erős metaprogramozás miatt ez szerintem megvalósítható ilyen @Before és @After dolgokkal meg @MyAOP jelölőkkel. +- Megj.: Talán egyszerűen a @-os szavak koncenció szerint dolgozhatnak a mögöttük lévő cuccoson / talán ez nem is külön effort, + de úgy érzem valahogy jobb lenne ezt külön nyelvi szintre emelni? Tényleg nem biztos, mert elvileg ez megírható anélkül.. + +## Plugin / modul architektúra + +- Lehet hogy jó volna nyelvi szinten rendesen támogatni? Vagy akár csak library szinten? Lásd videót ahol TsodingDaily hot code replace-t csinál C-ben. A rákövetkező videó is jó, ahol X-makrókkal csinálja meg hogy olvashatóbb legyen (amikor fordítunk dolgokat akkor is jó volna ezt is ismerni - addigra valszeg elfelejtem és nézhetem újra). +- Fordítási idejű plugin/modulozás viszont tök hasznos volna! Az talán nyelvi szinten is! +- importálás talán java szerűen, csak annál is egyszerűbben. Majd megnézem a go hogyan csinálja pl. A lényeg, hogy include helyett jó lenne ha a fordító tudná hogy vannak modulok és azok mit exportálnak, onnan mit importálunk. A C/C++ modulokat is meg kéne nézzem hogyan működnek - főleg ha kéne az interop (vagy akár az erre fordító fordító backkend..) +- Fordítási idejű dependency injection is lehetne. + +Amit nem kéne: Nem kéne, hogy az egész világ annyira dinamikus és szálkezelős legyen, mint az OSGi-al java-ban. De pl. onnan a product-modul-komponens felosztást jó lenne megcsinálni. A modul-t és namespace-t összekötném (mint ahogy java-ban OSGi modulokkal össze is kötöttem jellemzően?) - esetleg a runtime esetet úgy kezelve, hogy a namespace megjelölhető modulnak, de így ugye lehetnek sub-namespace-jei. + +Azt, hogy hol keresse a kódot jó kérdés hogy java-szerűen akarom-e, vagy C/C++ szerűen... tehát hogy a namespace szabályok írják-e le, vagy sem. Mindkettőnek van előnye ugyebár... és hátránya is... + +## Operator (és egyéb) overloading + +- Magam is megosztott vagyok, hogy legyen-e. Valamennyire azért kívánatos pl. egy vektor típusnál hogy simán tömb-szerűen használható. +- Azoknak is igaza van, hogy nehezebb követni mi történik: mekkora a költsége egy műveletnek... +- Igazából a múltkor a "dinamikus programozás és algebrai csigamátrix optimalizálás" videómban nagyon kényelmes volt! De talán külön kéne "rendes" 2D tömb nyelvi (vagy meta?) szinten és csőváz? Vagy esetleg ha már overload-al van csinálva, akkor megoldhatnánk, hogy matrix[x][y] legyen? Egyébként szerintem ez C++ esetén is megoldható... vissza kellet volna adnom egy objektumot az offset értékkel és az eredeti tömb pointerrel - és ezen objektumnak lett volna szintén operátor overload-ja, ami a végső számítást végzi... + +## Fordítás + +Mint említettük korábban a "strukturált formában tárolt programszöveges" ötlettel lenne ehhez referencia implementáció - sőt ha metaprogramozásnak azt tartjuk meg, akkor valószínű, hogy más implementációk is azt kell használják - ez egy érdekes kérdést vet fel, mert lehet hogy gyorsabb kód fordítás lenne elérhető, ha nem azzal metaprogramoznánk, hanem csak arra átírnánk a kódot - tehát ha kikötjük, hogy nem lehet ilyen metaprogramozás (forth-szerű szó definiálás), hanem mi magunk saját metaprogramozást alakítunk ki, amit arra fordítunk az első lépésben le... Ez lehetővé tenné, hogy mások, más módon is implementálhassák a nyelvet - ami vagy jó, vagy nem jó... + +Én arra gondoltam, hogy hasznos lenne olyan, ami (emberileg olvasható) C vagy C++ kódra fordít bináris helyett - de emellé egy "rendes" fordítót is érdemes volna írni. Először is, ezzel nagyon jó optimalizációkat kapunk "ingyen", másodszor az interop-nak nagyon segít. + +Viszont ugye a saját megoldás is nagyon fontos, de egyben ott a strukturált formás ötlet, ami erre lehetőséget is ad. Milyen target-eket kéne viszont supportálni? Szerintem a legjobb az volna, ha direkt webassembly (wasm) targetünk lenne! Emellé esetleg még egy x86-os target mondjuk linux-ra. Onnan a community kihozhatja a többit ha nagyon kell. A wasm lehetne optimalizálni is képes compiler, ami viszont gyorsan is fordít (jai-szerűen gyorsan?), de ha nagyon-nagyon release-t akarunk, akkor ott lenne a C/C++ kimenet. + +A C/C++ kimenettel az a nehéz, hogy egyeztetni kell a szemantikáinkat - de mivel nem valami extra bonyolult programnyelvet csinálunk, ez talán ugye nem is olyan nehéz ;-) + +- Természetesen érdemes elgondolkozni, hogy eleve adjunk-e build-system-et, vagy ne. Ez egy érdekes kérdés. Ha nem adunk, akkor a modul lookup stb. is bonyolódhat pl. de könnyebb beilleszteni a BASED programokat meglévő build rendszerbe amikor interop van (pl. makefile) és ugye kevesebb effort is megcsinálni. De inkább arra hajlok, hogy mi magunk, a fordítóval build-eljünk. Ez mondjuk még a "strukturált..." megvalósításától is függ, hogy miként is lenne jobb... Szóval valamennyire nyitott kérdés is... + +## Csomagkezelés + +Nem igazán támogatom, bár ha véletlen sikeres nyelv volna, nehéz lenne megoldani, hogy mások ne csináljanak hozzá. De a legjobb az volna, ha first-class támogatás lenne a manuális csomag / modul kezelésnek, a sima bemásolgatósnak... + +## OS support + +Linux-first, onnan aki szeretné implementálja át portolással más OS-re szerintem... + +## LSP + +- Sajnos egyetértek JonBlow-val és fasságnak tartom... De ha valaki akar, próbáljon írni egyet oké... diff --git a/csv-helyett.md b/csv-helyett.md new file mode 100644 index 0000000..106108f --- /dev/null +++ b/csv-helyett.md @@ -0,0 +1,3 @@ +# Érdekes alternatíva + + https://www.youtube.com/watch?v=qWjhuXBrBfg diff --git a/llvm-helyett.md b/llvm-helyett.md new file mode 100644 index 0000000..d865b78 --- /dev/null +++ b/llvm-helyett.md @@ -0,0 +1,17 @@ +# LLVM helyett + +Az LLVM baromi nagy és bloated (persze jó sok optimalizációt tud)... + +Ezt a QBE-t találtam, ami ezred akkora, de közel 25-70% olyan gyors. + +Még jobb: Az IL köztes reprezentáció igazából szöveges!!! + +# Linkek + + https://www.youtube.com/watch?v=JTjNoejn4iA + https://github.com/DoctorWkt/acwj/blob/master/63_QBE/Readme.md + https://c9x.me/compile/docs.html + https://c9x.me/compile/doc/il.html + https://archive.fosdem.org/2022/schedule/event/lg_qbe/attachments/slides/4878/export/events/attachments/lg_qbe/slides/4878/qbe.pdf + https://c9x.me/compile/bib/ + https://github.com/tsoding/qbe-notes diff --git a/qbe.pdf b/qbe.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d964fa2b97d297e4797e0f49344d9e244c48c008 GIT binary patch literal 116572 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