Dokumentacija

Uvod v Orb

Orb je jezik za programsko opremo, ki mora upoštevati pravila. Ti navedeš stanja in dogodke, prevajalnik zgradi aplikacijo ali pove, zakaj je ne more.

Program Orb opiše, kako se kos programske opreme obnaša: podatke, ki jih hrani, stanja, v katerih je lahko, dogodke, ki ga premikajo med njimi, in kaj prikaže v vsakem koraku. Pišeš ga v .lolo, majhnem zapisu v slogu Lispa. Prevajalnik ga preveri, nato ga neposredno zažene ali iz njega ustvari celotno aplikacijo.

Tu je celoten program. Teče na tej strani:

Avtomat stanj

Counting

on Counter · states: 1 · transitions: 4
emitsMOVED
INIT
INCREMENT
DECREMENT
RESET
nowready
Teče v živo

Zgornji program kot avtomati stanj, eden za vsako lastnost: vsak okvir je stanje, vsaka puščica dogodek, ki ga premakne, ikone na puščici pa so učinki, ki jih ta dogodek izvede. ◇ na puščici je varovalo; z miško pojdite nanj in preberite pogoj. Kako brati AVL

std-orb-docex-counter.lolololo
1app std-orb-docex-counter "1.0.0" 2"std-orb-docex-counter — the smallest complete orbital: one entity, one trait with one state, three buttons and a closed circuit." 3orbital CounterOrbital { 4 entity Counter [runtime] { 5 id : string! 6 count : number = 0 7 } 8 9 trait Counting -> Counter [interaction, instance] { 10 initial: ready 11 12 state ready { 13 INIT -> ready 14 (render-ui main { type: stack, direction: horizontal, gap: md, align: center, children: [ 15 { type: button, label: "−", action: DECREMENT, variant: secondary, aria-label: "Decrease" }, 16 { type: typography, content: @entity.count, variant: h2 }, 17 { type: button, label: "+", action: INCREMENT, variant: primary, aria-label: "Increase" }, 18 { type: button, label: "Reset", action: RESET, variant: ghost } 19 ] }) 20 INCREMENT -> ready 21 (emit MOVED { event: "INCREMENT" }) 22 (set @entity.count (+ @entity.count 1)) 23 DECREMENT -> ready 24 (emit MOVED { event: "DECREMENT" }) 25 (set @entity.count (- @entity.count 1)) 26 RESET -> ready 27 (emit MOVED { event: "RESET" }) 28 (set @entity.count 0) 29 } 30 31 emits { 32 MOVED -> external { 33 event : string! 34 } 35 @description "Each move names the event it took, so the diagram beside the demo can follow it." 36 } 37 } 38 39 page "/counter" -> Counting 40}

Kaj se zgodi, ko se sproži INCREMENT:

readyINCREMENT
→
ready
Effects (1)What runs, in order, when the transition fires.
(set @entity.count (+ @entity.count 1))
@entity.count@entity.count1+set

Enota: orbital

Vsak program Orb je sestavljen iz orbitalov. Orbital je zaključen kos vedenja:

  • entiteta: podatki, ki jih ima (Counter s poljem count);
  • ena ali več lastnosti: avtomati stanj, ki se odzivajo na dogodke in spreminjajo entiteto (Counting);
  • nič ali več strani: poti, na katerih se pojavijo njegove lastnosti (/counter).
text
1 2 Orbital = Entity + Traits + Pages Application = orbitals that talk to each other through events

Orbitali nikoli ne segajo drug v drugega. Ena lastnost odda dogodek, druga ga posluša, prevajalnik pa preveri, da ima vsak oddani dogodek kam iti.

Zaprti krog

Vsaka interakcija sledi isti zanki:

text
1 Event → Guard → Transition → Effects → UI → Event

Pritisk na + pošlje INCREMENT. Lastnost je v stanju ready, ki ima prehod za INCREMENT, zato se izvede: njegov učinek (set @entity.count (+ @entity.count 1)) posodobi entiteto, zaslon, vezan na @entity.count, pa pokaže novo vrednost. Nov zaslon spet ponudi iste gumbe, zato se zanka sklene.

Prevajalnik zanko uveljavlja. Gumb, katerega dogodka ne obravnava nobeno stanje, stanje, ki ga ni mogoče zapustiti, dogodek, oddan nikomur, ali stran, ki ne prikaže ničesar, so napake pri orb validate, še preden karkoli teče.

Zakaj jezik

Večina poslovne programske opreme so pravila: naročilo ne sme na pot pred plačilom, vračilo nad določenim zneskom potrebuje vodjo, na zahtevek je treba odgovoriti v enem dnevu. V običajni kodi so ta pravila razpršena po vmesniku, strežniku, bazi in testih, in se razhajajo.

V Orbu je pravilo oblika programa. Če iz stanja pending ni prehoda SHIP, neplačano naročilo ne more na pot, in to je preverjeno, ne upano. Ista datoteka je specifikacija, izvedba in vhod za preverjanje:

  • orb validate dokaže, da je program pravilno zgrajen (merilo je 0 napak in 0 opozoril);
  • orb verify prehodi vsak prehod in preveri, da naredi, kar napoveduje;
  • orb compile iz istega vira ustvari aplikacijo v TypeScriptu in drugih okoljih.

Kaj napišeš

Le redko sam napišeš vsak avtomat stanj. Standardna knjižnica prinaša na stotine vedenj (sezname, obrazce, čarovnike, nadzorne plošče, igre, učne pripomočke), ki jih uvoziš z uses in vežeš na svoje podatke. Obdržiš dele, ki so značilni za tvoje področje; ostalo ima knjižnica. Kako, pojasni sestavljanje.

© 2026 Almadar. Ljubljana, Slovenija.
Not reported here