Forum » Programiranje » Sushi Lang, ker mi je bilo dolgčas sem šel delat svoj prevajalnik
Sushi Lang, ker mi je bilo dolgčas sem šel delat svoj prevajalnik
BigWhale ::
Sushi Lang je programski jezik, ki sem ga zacel pisati, ker me je zanimalo kako komplicirano bi bilo narediti nekaj kar se prevede v binarni format in lahko pozenes na svojem racunalniku. Na zacetku sem delal stvari sam in prve verzije so bile resnicen minimalizem, potem se pa za pomoc prosil chatGPT in Claude Code, tko da je zdaj nek mixed bag, kjer vecino kode spise Claude, jaz pa nekaj malega popravljam za njim.
https://github.com/BigWhale/sushi-lang
Sushi ima trenutno zlo mejhn stdlib, zna delat osnovne operacije z datotekami in s stdin/stdout. Zraven so se osnovne matematicne operacije, in osnovne sleep funkcije. Podpira vse standardne osnovne tipe: integer, float, in string. Dodatno pa se array, list, in hashmap. Ima podporo za funkcije, nekaj genericnih struktur. Vsak tip lahko nadgradis z extend metodami, na genericne tipe pa lahko opremis s perki, ki so bolj genericna oblika extend metod.
Trenutno Sushi deluje na macOS in Linuxu. V teoriji dela tudi na Windows vendar platform layer za Windows se ni spisan in ker imam gaming racunalnik v sosednji sobi, bo to se trajal ... :D Sushi je spisan prakticno v celoti v Pythonu, del stdliba je implementiran v LLVM IRju. Trenuten release bojda dela na Linuxu (stestirano samo skozi Github CI/CD in s sinteticnimi testi) in pri meni na macOSu.
Sushi je neka mesanica Python, Rust, C, in Go. Pobral sem stvari, ki so mi bile vsec pri posameznih jezikih in naredil nek mish-mash, strictly typed jezika s preprosto sintakso in semi-pedantic error handling. Prevajalnik se trudi ujeti cim vec stvari v casu prevajanja.
Se language guide, ce koga zanima:
https://github.com/BigWhale/sushi-lang/...
https://github.com/BigWhale/sushi-lang
Sushi ima trenutno zlo mejhn stdlib, zna delat osnovne operacije z datotekami in s stdin/stdout. Zraven so se osnovne matematicne operacije, in osnovne sleep funkcije. Podpira vse standardne osnovne tipe: integer, float, in string. Dodatno pa se array, list, in hashmap. Ima podporo za funkcije, nekaj genericnih struktur. Vsak tip lahko nadgradis z extend metodami, na genericne tipe pa lahko opremis s perki, ki so bolj genericna oblika extend metod.
Trenutno Sushi deluje na macOS in Linuxu. V teoriji dela tudi na Windows vendar platform layer za Windows se ni spisan in ker imam gaming racunalnik v sosednji sobi, bo to se trajal ... :D Sushi je spisan prakticno v celoti v Pythonu, del stdliba je implementiran v LLVM IRju. Trenuten release bojda dela na Linuxu (stestirano samo skozi Github CI/CD in s sinteticnimi testi) in pri meni na macOSu.
Sushi je neka mesanica Python, Rust, C, in Go. Pobral sem stvari, ki so mi bile vsec pri posameznih jezikih in naredil nek mish-mash, strictly typed jezika s preprosto sintakso in semi-pedantic error handling. Prevajalnik se trudi ujeti cim vec stvari v casu prevajanja.
Se language guide, ce koga zanima:
https://github.com/BigWhale/sushi-lang/...
SHA-256 ::
Čestitke za uspešen projekt, koliko časa misliš da ti je to vzelo?
In ali računaš, da boš v bodoče kaj kode pisal v Sushi-ju(?), ali so te hobi jeziki preveč nezanesljivi tudi za preproste binaryje?
Osebno mi je ~ simbol precej neroden za uporabo, pa še večina tipkovnic ga ima na različni lokaciji.
In ali računaš, da boš v bodoče kaj kode pisal v Sushi-ju(?), ali so te hobi jeziki preveč nezanesljivi tudi za preproste binaryje?
Osebno mi je ~ simbol precej neroden za uporabo, pa še večina tipkovnic ga ima na različni lokaciji.

Blinder ::
Še ena stvar, ki se jo zlahka naredi z AI. Saj podobno sem razmišljal naredit tudi jaz, prevajalnik z AI, kolikor sem razumel copilota je simple za naredit. V takšnih časih živimo. Potem imaš še optimiste, ki se grejo učit programiranja s ciljem, da bodo dobili job
99.991% of over-25 population has tried kissing.
If you're one of the 0.009% who hasn't, copy & paste this in your Signature.
Intel i5-14400f rtx 3050 Pismo smo stari v bozjo mater. Recesija generacija
If you're one of the 0.009% who hasn't, copy & paste this in your Signature.
Intel i5-14400f rtx 3050 Pismo smo stari v bozjo mater. Recesija generacija
Ales ::
Ne, ne živimo v takšnih časih. To je bullshit.
Je pa veliko tega, da ljudje brez znanja mislijo, da bodo z LLM-ji kar naredili kompleksne stvari, praktično kar hočejo. Nismo tam, še zdaleč ne, in vprašanje, kdaj in če sploh bomo.
V to vas prepričuje milijon YT videov, ki so v veliki meri popoln crap, in razni CEO debili, ki se jim gre le za financiranje njihovih "podvigov". Ne nasedat ravno vsemu, no.
Je pa veliko tega, da ljudje brez znanja mislijo, da bodo z LLM-ji kar naredili kompleksne stvari, praktično kar hočejo. Nismo tam, še zdaleč ne, in vprašanje, kdaj in če sploh bomo.
V to vas prepričuje milijon YT videov, ki so v veliki meri popoln crap, in razni CEO debili, ki se jim gre le za financiranje njihovih "podvigov". Ne nasedat ravno vsemu, no.
pegasus ::
Zna ai narediti jezik, ki je striktno brez dvoumij, s samo eno možno interpretacijo kode? V stilu Spark Ada, a z bolj moderno sintakso?
Utk ::
Nek basic compiler smo naredili na fri v enem semestru. Če se držiš recepta, ga narediš, ni kaj veliko za zajebat. Kaj od tam naprej delaš, da dodajaš dodatne funkcije v jezik, je pa druga stvar in je delo neomejeno. Ga ne more zmanjkat.
DamijanD ::
BW zakaj imaš za deklaracijo "let" in "=", potem za prirejanje pa ":=" ? A ni dovolj že sam "let", da veš da gre za prvotno vrednost?
BigWhale ::
BW zakaj imaš za deklaracijo "let" in "=", potem za prirejanje pa ":=" ? A ni dovolj že sam "let", da veš da gre za prvotno vrednost?
Z let deklariras spremenljivko, ki potem ostane immutable in je ne mores spreminjat. Lahko pa potem naredis rebind z ":=", nekaj kar moras explicitno zahtevat. V planu sem imel se eno opcijo za compiler, da ti vrze error ali pa warning, ce uporabljas rebind. Tako dobis mal bolj funkcijsko programiranje, ce zelis.
Še ena stvar, ki se jo zlahka naredi z AI. Saj podobno sem razmišljal naredit tudi jaz, prevajalnik z AI, kolikor sem razumel copilota je simple za naredit. V takšnih časih živimo. Potem imaš še optimiste, ki se grejo učit programiranja s ciljem, da bodo dobili job
Zlo hitr dobis nekaj kar ti dela, ker imas na netu source kodo za kup programskih jezikov, tukaj je se LLVM, ki ga velik modernih jezikov uporablja. Ljudje, ki znajo programirati bodo v naslednjih letih se vedno dobivali sluzbe kot programerji, kljub AI.
Zgodovina sprememb…
- spremenil: BigWhale ()
BigWhale ::
Čestitke za uspešen projekt, koliko časa misliš da ti je to vzelo?
In ali računaš, da boš v bodoče kaj kode pisal v Sushi-ju(?), ali so te hobi jeziki preveč nezanesljivi tudi za preproste binaryje?
Osebno mi je ~ simbol precej neroden za uporabo, pa še večina tipkovnic ga ima na različni lokaciji.
Trenutno imam v Suhiju spisanih prek 800 testov, ki so v bistvu preprosti programi s katerimi testiram, ce compiler dela tako kot treba. Sedaj pa v Sushiju pisem JSON parser, ki bi ga rad dodal kot prvi proper sushi library v samo instalacijo. Json ni tako kompliciran. Parser bo bolj kot ne proof-of-concept, da se da v Sushiju napisat tudi kaj dejansko uporabnega. Za preproste stvari je Sushi ze sedaj povsem ok.
Kar naredi jezik uporaben je standard library in community. Za prvo imam nek nacrt kaj se zelim v standard libraryju, za drugo pa ne glih. Svar je hobby. :))
Naceloma je sedaj cilj, da v Sushi dodam toliko funkcionalnosti, da bom lahko v Sushiju spisal Sushi bootstrap Sushi compiler, s katerim bom potem lahko prevedel proper Sushi compiler tako da bo Sushi postal self hosted in ne bom vec potreboval Pythona.
Koliko casa mi je vzelo pa tezko ocenim. Zacel sem delat nekaj malega konec avgusta, potem sem konec septembra zadevo porinil na Github. Od takra sem vsak dan porabil nekaj ur po sluzbi, da sem se ukvarjal s tem. Cez novoletne praznike sem naredil pavzo ker sem sel pisat PDF reader za Android, ker so vsi obstojeci sranje. :D
Kar se pa tice ~ in Sushija, ce tvoje funkcije in metode vracajo vrednosti, potem ga ne rabis. ~ je "Blank Type" in na nek nacin nadomesca NULL/None, uporablja pa se resnicno v izrednih primerih, ko imas funkcijo, ki tezko karkoli vrne.
Zna ai narediti jezik, ki je striktno brez dvoumij, s samo eno možno interpretacijo kode? V stilu Spark Ada, a z bolj moderno sintakso?
Zna. Podobno sem zacel s Sushijem, vendar je ideologija hitro trcila ob realnost in potem zacnes v jezik dodajat stvari zato da je delo vsaj priblizno znosno. :>
Zgodovina sprememb…
- spremenil: BigWhale ()
sbawe64 ::
Cez novoletne praznike sem naredil pavzo ker sem sel pisat PDF reader za Android, ker so vsi obstojeci sranje. :D
Readera ti ni ok ?
https://play.google.com/store/apps/deta...
Je pa ime popolnoma mimo.
2020 is new 1984
Corona World order
Corona World order
Zgodovina sprememb…
- spremenilo: sbawe64 ()
BigWhale ::
Cez novoletne praznike sem naredil pavzo ker sem sel pisat PDF reader za Android, ker so vsi obstojeci sranje. :D
Readera ti ni ok ?
https://play.google.com/store/apps/deta...
Je pa ime popolnoma mimo.
Ne, rabil sem nekaj brez vseh featurjev, samo prikaz PDFja, TOC, in navigacijo po poglavjih. Brez reklam, brez AI, brez editinga, brez annotacij, res nekaj minimalnega.
https://github.com/BigWhale/sushiview-r...
napsy ::
...
Ne, rabil sem nekaj brez vseh featurjev, samo prikaz PDFja, TOC, in navigacijo po poglavjih. Brez reklam, brez AI, brez editinga, brez annotacij, res nekaj minimalnega.
https://github.com/BigWhale/sushiview-r...
Poglej si https://github.com/mudlej/mj_pdf/
"If you die, you die. But when you live you live. There is no time to waste."
pegasus ::
Podobno sem zacel s Sushijem, vendar je ideologija hitro trcila ob realnost in potem zacnes v jezik dodajat stvari zato da je delo vsaj priblizno znosno. :>Torej si odstranil zanesljivost in dodal udobje. Ok, zelo človesko ;-)
Moram spet mal pobrskati, gotovo je kje kak nadebudnež z podobnimi željami kot so moje ...
predi ::
Spisal, oz. bolje rečeno generiral na podlagi raznih BNF gramatik, sem že mnogo lekserjev in parserjev, in sicer po predlogah raznih standardov, ki jih je bilo treba implementirat. Splošno namenskega programskega jezika in zanj prevajalnika pa še ne (in ga tudi ne nameravam), tako da, kudos to you, OP.
BigWhale ::
...
Ne, rabil sem nekaj brez vseh featurjev, samo prikaz PDFja, TOC, in navigacijo po poglavjih. Brez reklam, brez AI, brez editinga, brez annotacij, res nekaj minimalnega.
https://github.com/BigWhale/sushiview-r...
Poglej si https://github.com/mudlej/mj_pdf/
Ja, sem ga videl. Prevec mi je. :D
Torej si odstranil zanesljivost in dodal udobje. Ok, zelo človesko ;-)
Ja, seveda. Tako prakticno vsak, ki je kadarkoli delal katerikoli programski jezik. Nic ti ne pomaga 100% zanesljivost, ce zaradi tega razvoj traja 100x dlje casa in stane 200x vec kot sicer. To pocnes takrat, ko gres na Luno, recimo. :)
Ce bi imeli 100% zanesljive avtomobile, bi se z njimi vozili samo milijarderji, ker ostali ne bi imeli denarja za to. :)
Zgodovina sprememb…
- spremenil: BigWhale ()
pegasus ::
Nic ti ne pomaga 100% zanesljivost, ce zaradi tega razvoj traja 100x dlje casa in stane 200x vec kot sicer. To pocnes takrat, ko gres na Luno, recimo. :)To so te nekaj nategnili in ti si požrl njihov FUD. To namreč sploh ni res, preberi si kaj o izkušnjah uporabe tovrstnih jezikov. Ugotoviš, da si z uporabo nedvoumnih jezikov prihraniš kup testiranja in se tem časa. Pričakujem, da bodo to tehnologijo še v tem stoletju uporabljali vsi, od web devov naprej, sicer je bolj varno živeti v jami in loviti divje živali za zajtrk.

Zimonem ::
Joj pegatka ti pa tvoja Ada Spark se ne uvršata med splošne programske jezike, niti ni Turing complete.
BigWhale ::
To so te nekaj nategnili in ti si požrl njihov FUD. To namreč sploh ni res, preberi si kaj o izkušnjah uporabe tovrstnih jezikov. Ugotoviš, da si z uporabo nedvoumnih jezikov prihraniš kup testiranja in se tem časa.
Joj nehaj, no. Ce delas rocket guidance za ICBM vzames ADO, ker jo rabis. Ce pa delas CMS je pa to norost, ker stvari te bodo drago stale in ker je cel ekosistem prakticno neobstojec.
Also, off-topic.
Zgodovina sprememb…
- spremenil: BigWhale ()
Vredno ogleda ...
| Tema | Ogledi | Zadnje sporočilo | |
|---|---|---|---|
| Tema | Ogledi | Zadnje sporočilo | |
| » | Suši iz hladilnika (strani: 1 2 )Oddelek: Loža | 7136 (4491) | gruntfürmich |
| » | Rate limit ali kako moderno USB misko priklopiti na star 16 bitni racunalnikOddelek: Programiranje | 2550 (1938) | BigWhale |
| » | Prvič v kitajsko restavracijo, kaj priporočate ? (strani: 1 2 )Oddelek: Loža | 25956 (23099) | Grumf |
| » | Svetla prihodnost za Ruby? (strani: 1 2 )Oddelek: Programiranje | 10479 (8929) | MrBrdo |