Sjå
Du trudde kanskje at å sjå var eit vanleg nynorsk verb? I så fall trur eg du skal sjå deg om etter eit par nye lesebrillar. Sjå er nemleg ein nynorsk variant av det velkjente programmeringsspråket C. Sjå vart utvikla under .nyno-bølgjen. Språket har mange fellestrekk med C, men inneheld også element som er karakteristisk for nynorsk programmering.
Variablar i Sjå
Sjå inneheld ikkje nøyakteg dei same variablane som C. Dei mest brukte variablane i Sjå er:
- Heiltal er Sjå-ekvivalenten av integer
- Flyttal heiter fosse (etter Jon Fosse) i Sjå. (Opprinneleg kunne ikkje flyttal definerast i Sjå, og ein måtte derimot bruke brudden brøk)
- Ekvivalenten av string heiter tarjei (kortform for Tarjei Vesaas-novelle).
Kontrollstrukturar i Sjå
Sjå er eit Turing-komplett språk, og inneheld kontrollstrukturar som liknar C:
- Ei while-løkkje definerast med å skrive medan
- Eit if-utsegn kan gjerast med å skrive viss
- case kallast med å skrive døme
- Ein kan introdusere ein break ved å skrive kaffipause
Døme på syntaks
heiltal a = 0 heiltal b = 3 heiltal i = 0 medan a<=b { i = i + 1 viss a==b { skriv('a er lik b') } elles { } viss i>10 { kaffipause } }
Spesielle element i Sjå
Sjå er tilrettelagt for parallellprosessering. For C-kompilatorar som er tilpassa parallellprosessering ville ein gjere følgjande for å parallellprosessere ei for-løkkje:
parfor ... { # Do parallell processing of operation }
I Sjå gjerast dette slik:
samstundes ... { # Gjer fleire operasjonar samstundes. }
Variantar av Sjå
Sjå Skarpt er ei objektorientert vidareutvikling av Sjå. Ein klasse er kalt ei bås i Sjå Skarpt, og kan enten vere offentleg (public) eller hemmeleg (private):
bås BåsNamn { heiltal variabelEin, variabelTo offentleg ... }
Sjå i C
Det er mogleg å skrive Sjå i standard C ved å inkludere sjå.h, som ser slik ut:
#define aksiom axiom #define anten xor #define anten_lik xor_eq #define beskytta protected #define bit_eller bitor #define bit_og bitand #define bredtekn_t wchar_t #define bruk using #define brøk float #define byggjesett asm #define definer typedef #define denne this #define dessutan default #define dynamisk_lat_som dynamic_cast #define døme case #define eineståande static #define eksporter export #define eller or #define eller_lik or_eq #define elles else #define fang catch #define flyktig volatile #define foranderleg mutable #define fortsetje continue #define forventar expects #define gjer do #define gjev return #define heiltal int #define hemmeleg private #define hopp goto #define hovud main #define ihopsatt union #define ikkje not #define ikkje_lik not_eq #define ikkjenoko void #define ikkjenokopekar nullptr #define importer import #define inga_unntak noexcept #define innmeldt register #define justering alignof #define justersom alignas #define kaffipause break #define kast throw #define klasse class #define ko_gjev co_return #define ko_skap co_yield #define ko_vent co_await #define kompilator_krev static_assert #define kompilator_lat_som static_cast #define komplement compl #define konsept concept #define krev assert #define lim_inn inline #define liste enum #define lovar ensures #define medan while #define modul module #define moglegheitar switch #define mønster template #define namnerom namespace #define negativ signed #define noko auto #define ny new #define offentleg public #define og and #define og_lik and_eq #define omtolk_lat_som reinterpret_cast #define operasjon operator #define oppbygnad struct #define positiv unsigned #define prøv try #define refleksjonsuttrykkk reflexpr #define revisjon audit #define ri_over override #define sann true #define sannheit bool #define siste final #define skriv printf #define slett delete #define småtal short #define stor long #define storbrøk double #define storleik sizeof #define stort long #define synkronisert synchronized #define tekn char #define tekn16_t char16_t #define tekn32_t char32_t #define tekn8_t char8_t #define transaksjons_trygg transaction_safe #define transaksjons_trygg_dynamisk transaction_safe_dynamic #define treng requires #define tråd_lokal thread_local #define tydelig explicit #define typenamn typename #define udeleleg_avbryt atomic_cancel #define udeleleg_inga_unntak atomic_noexcept #define udeleleg_lagre atomic_commit #define uekte virtual #define uforanderleg const #define uforanderleg_berekn consteval #define uforanderleg_lat_som const_cast #define uforanderleg_uttrykk constexpr #define usann false #define utandørs extern #define uttrykk_type decltype #define venn friend #define viss if