Rockstar (programski jezik)

S Vikipedije, slobodne enciklopedije
Rokstar
Originalni nazivengl. Rockstar
Izgovara serokstar
ModelProceduralno programiranje, dinamički tipiziran, ezoterični
Pojavio se1980-ih
Autor(i)Dajlan Beti
Sistem tipovaMysterious, Number, String, Boolean, Object, Null
Dokumentacija[1]

Rockstar je dinamički tipiziran, Tjuring-potpun, programski jezik,pripada grupi ezoteričnih programskih jezika.[1]
Rokstar je dizajniran za kreiranje kompjuterskih programa koji su nalik tekstovima pesama, i na njegov razvoj je veliki uticaj imalo društvo tekstopisaca rok muzike 1980-ih. Jezik je zabavan, ko bi odoleo da pokrene program koji je baziran na tekstu koji je Mitlof napisao, zar ne?
Iako je Rokstar potpuno definisan programski jezik, pre svega je napravljen iz zabave. Programski jezik Rokstar kreirao je Dajlan Beti(engl. Dylan Beattie), podstaknut tvitom Pol Stovela, koji je rekao: "Da bi stvarno zbunili poslodavce trebalo bi napraviti programski jezik pod nazivom Rokstar"[2].

Specifikacija programskog jezika Rokstar[uredi | uredi izvor]

Zamišljeno je da se programeru da velika sloboda pri pisanju i strukturiranju programa napisanih u ovom jeziku, zarad iskazivanja njihove poetičnosti.
Rokstar programi koriste UTF-8 enkodiranje i imaju ekstenziju .rock.

Komentari[uredi | uredi izvor]

Programski jezik je izrično protiv upotrebe komentara sa obrazloženjem da korisnik treba sam da nađe smisao programa, bez sugestija o tome šta je napisano. Ako se baš insistira na upotrebi komentara, potrebno ih je staviti u okviru zagrada (). To znači da ne možete koristiti zagrade u pisanju složenih aritmetičkih izraza već ih je potrebno razložiti na više jednostavnijih.

Promenljive[uredi | uredi izvor]

Postoje dva načina za deklarisanje promenljivih u programskom jeziku Rokstar.
Uobičajene promenljive se deklarišu upotrebom ključnih reči (a, an, the, my ili your) za kojima sledi ime promenljive koje mora da sadrži male ASCII karaktere a-z. Ključna reč je pritom deo promenljive, dakle a boy je promenljiva različita od promenljive the boy.
Ispravna promenljiva je bilo koja vlastita imenica koja nije rezervisana kao ključna reč i ne počinje velikim slovom. Promenljive mogu uključiti u sebe proizvoljan broj blanko karaktera dokle god reč iza blanko karaktera počinje velikim slovom. Iako mnogi programeri koriste ovo svojstvo za imenovanje promenljivih poput Sustomer ID, Tax Rate or Distance In KM, preporučuje se davanje imena promenljivama na sledeći način: Tommy, Gina, Doctor Feelgood, Mister Crowley, Kayleigh, Tom Sawyer, Billie Jean and Janie.
Poput Rubija(engl. Ruby) i Pajtona(engl. Python) promenljive su dinamički-tipizirane i nije ih potrebno deklarisati pre upotrebe.
Ako je promenljiva definisana van funkcije ona ima globalan opseg vidljivosti. Globalne promenljive su vidljive u čitavom programu od mesta inicijalizacije. Ako je prmenljiva deklarisana u funkciji onda je lokalna. Lokalne promenljive su dostupne od svoje inicijalizacije do kraja funkcije u kojoj su incijalizovane.
Ključne reči it, he, she, him, her, they, them, ze, hir, zie, zir, xe, xem, ve, i ver se odnose na poslednju inicijalizovanu promenljivu.

Tipovi[uredi | uredi izvor]

Rokstar ima jako slične tipove promenljivih kao i ECMAScript, osim što undefined nije u duhu rock'n'roll-a, pa se koristi ključna reč mysterious umesto nje.

  • Mysterious - vrednost koja je na snazi dok korisnik ne dodeli vrednost promenljivoj
  • Null - ima numeričku vrednost 0 i logičku false
  • Boolean - logički tip promenljive, može imati dve vrednosti true i false
    • right, yes i ok predstavljaju logičku vrednost true
    • wrong, no i lies predstavljaju logičku vrednost false
  • Number - brojevi se u Rokstaru su skladišteni korišćenjem DEC64 sistema
  • String - je niz 16-bitnih neoznačenih celih brojeva koji se predstavljaju UTF-16 enkodiranjem
  • Object - je kolekcija imenovanih polja kao u ECMAScript-u

Istinitost[uredi | uredi izvor]

Rezultati poređenja određuju se na osnovu pojma koji se zove „istinitost”. Ako je rezultat poređenja vrednost koja je istinita, ona će se implicitno pretvoriti u true. Ukoliko dobijena vrednost nije istinita, implicitno će se pretvoriti u false.

  • Mysterious - false
  • Null - false
  • Boolean - true ako je vrednost istinita, inače false
  • Number - false ako je vrednost jednaka 0, inače true
  • String - true
  • Object - true

Konstante i ključne reči[uredi | uredi izvor]

Reči koje se koriste za konstrukciju literala određenog tipa nazivaju se konstante.
Reči koje se koriste za pisanje različitih sintaksnih konstrukcija nazivaju se ključne reči.

Konstante: mysterious, null, nothing, nowhere, nobody, empty, gone, true, right, yes, ok, false, wrong, no, lies, maybe, definitely maybe.

Literali i dodeljivanje[uredi | uredi izvor]

Za pisanje niskih u programskom jeziku Rokstar koriste se dvostruki navodnici " ".

* "Hello San Francisco"

Numerički literali u se zapisuju kao decimalni brojevi.

* 123
* 3.141592654

Dodela se označava kombinacijom ključnih reči put/into.

* Put 123 into X - додељује се вредност 123 у променљиву X
* Put "Hello San Francisco" into the message - додељује вредност "Hello San Francisco" у променљиву the message

Jednostruki navodnici[uredi | uredi izvor]

Većina programskih jezika koristi jednostruke navodnike, da opiše stringovne literale poput : 'like this'. Međutim kada se piše tekst na engleskom jeziku ASCII kodiranim karakterina "'" se koristi da naznači reči poput: you're, she's, he's, shouldn't, rock'n'roll. Rock'n'roll konstantno koristi apostrofe: sweet child o' mine, ain't talkin' 'bout love, guns n' roses.
Imajući to u vidu, Rockstar dolazi do sledećeg rešenja:

  • Reč 's\W+ - jednostuki navodnik, koji prati malo 's' i jedna ili više belina - biće zamenjeni sa " is "(belina, is, belina )
  • Ovo omogućuje da "Janie's got a gun" (inicijalizuje Janie sa vrednošću 313) i Union's been on strike (inicijalizuje Union sa vrednošću 426) da budu ispravne deklaracije promenljivih.
  • Svi ostali jednostruki navodnici se potom ignorišu, ain't je isto što i aint, wakin' ima 5 karaktera a ’’’’’ je ekvivalentno sa praznim stringom. Ovo znači da nadalje mežete da koristite jednostruke navodnike bez brige da oni mogu da utiču da dođe do greške prilikom prevođenja programa.


Arimetika[uredi | uredi izvor]

Osnovne aritmetičke operacije izvode se pomoću ključnih reči plus, minus, times i over.
Aritmetički izrazi:

  • {a} plus {b} - sabiranje
  • {a} minus {b} - oduzimanje
  • {a} times {b} - množenje
  • {a} over {b} - deljenje

Primeri:

  • Put the whole of your heart into my hands - množi promenljivu the whole sa promenljivom your heart i smešta rezultat u promenljivu my hands
  • My world is nothing without your love - vrednost promenljive My world je rezultat oduzimanja promenljive your love od 0
  • If the tears of a child is nothing - proverava da li je rezultat množenja promenljivih the tears i a child jednak 0
  • My heart over the moon - rezultat je deljenje promenljivih My heart i the moon

Logički operatori[uredi | uredi izvor]

Programski jezik Rokstar ima četiri različita logička operatora.
Logički izrazi:

U izračunavanju vrednosti logičkih izraza koristi se lenjo izračunavanje. Osnovna odlika ovakvog izračunavanja jeste izračunavanje samo onoga što je neophodno, o znači da ako se izračunavanjem prvog argumenta može odrediti rezultat, drugi argument nije potrebno računati.


Binarno poređenje[uredi | uredi izvor]

Operatori za poređenje (is, ain't, is not) su dozvoljeni, ako se radi o poređenju istih tipova podataka. Objekti se porede po jednakosti reference, dok se svi ostali tipovi porede po jednakosti vrednosti.

Komparatori za sortiranje (is higher than, is lower than, is as high as, and is as low as) su dozvoljeni jednino ako su oba operanda brojevi ili stringovi, ili su konvertovani u jedan od ovih tipova sledeći pravila ispod. Brojevi se porede kao što je očekivano, dok se stringovi porede leksikografski.

  • <Mysterious> <op> Mysterious => Equal.
  • <Non-Mysterious> <op> Mysterious => Non equal.
  • String <op> Number => Prevodi string u broj koristeći sistem sa osnovom 10, ignorišući vodeće nule.
  • String <op> Boolean => Prevodi string u boolean koristeći sve definisane aliase.
  • String <op> Null => Non equal.
  • Number <op> Boolean => Prebacuje broj u boolean po istinitosti.
  • Number <op> Null => Prevodi null u 0.
  • Boolean <op> Null => Prevodi null u false.

Primeri

  • "1" is 1 je true zato što se "1" prevodi u broj 1
  • "2" ain't Mysterious je true zato što nijedan tip nije ekvivalentan sa mysterious osim njega samog.
  • "02" < "10" je true jer leksikografsko poređenje između 0 i 1 pokazije da je prvi karakter manji od drugog.

Prioritet operatora[uredi | uredi izvor]

U programskom jeziku Rokstar redosled operatora prema prioritetu isti je kao i u matematici.

  1. Funkcijski poziv
  2. Logički operator NOT (desna asocijativnost)
  3. Množenje i deljenje (leva asocijativnost)
  4. Sabiranje i oduzimanje (leva asocijativnost)
  5. Operatori poređenja (leva asocijativnost)
  6. and, or i nor (leva asocijativnost)

Primer:

  • A taking B times C plus not D times E and F - predstavlja izraz ((A(B) * C) + (!D * E)) && F


Inkrementiranje i dekrementiranje[uredi | uredi izvor]

U Rokstar programskom jeziku za inkrementiranje se koristi konstrukcija Build {promenljiva} up, a za dekrementiranje Knock {promenljiva} down. Ukoliko se više puta upotrebi up ili down, inkrementiranje i dekrementiranje će se izvršiti onoliko puta koliko je puta upotrebljena reč up odnosno down. Zarez se može nalaziti između svakog up ili down.

  • Build my world up - vrednost prmenljive my world se povećava za 1
  • Knock the walls down -vrednost prmenljive the walls se umanjuje za 1
  • Knock the walls down, down - vrednost promenljive the walls se umanjuje za 2

Ulaz/izlaz[uredi | uredi izvor]

Ključna reč Listen se koristi za čitanje jedne linije sa STDIN. Listen to se koristi za imenovane promenljive.

  • Listen to your heart - čita jednu liniju sa ulaza i smešta u promenljivu your heart

Kljcčna reč Say se koristi za ispisivanje vrednosti promenljive na STDOUT.

  • Say Tommy - ispisuje na STDOUT vrednost koja je sačuvana u promenljivoj Tommy

Umesto ključne reči Say mogu se koristiti Shout, Whisper i Scream.

Naredbe[uredi | uredi izvor]

Uslovi[uredi | uredi izvor]

Uslovni izrazi počinju sa ključnom reči If a zatim se navodi izraz. Ukoliko izraz ima istinitosnu vrednost true, onda se izvršava sledeći blok koda. Ukoliko je istinitosna vrednost izraza false, izvršava se deo koda koji se nalazi nakon naredbe Else.


Petlje[uredi | uredi izvor]

U programskom jeziku Rokstar petlja se označava ključnom reči While ili Until. Petlje omgućavaju izvršavanje kodnog bloka dok je izraz zadovoljen.

 Tommy was a dancer
 While Tommy ain't nothing,
 Knock Tommy down

Vrednost promenljive Tommy se inicijalizuje na 16, vrši se dekrementiralje promenljive sve dok vrednost promenljive Tommy ne bude jednaka 0. Naredbe break i continue funkcionišu kao i u većini programskih jezika. Rokstar definiše izraz Break it down koji se kkoristi umesto break, kao i izraz Take it to the top umesto continue.

Blokovi[uredi | uredi izvor]

Blok u Rokstaru počinje sa If, Else, While ili Until, a završava se praznom linijom ili završetkom datoteke.
EOF završava sve otvorene blokove koda.

 Tommy was a dancer
 While Tommy ain't nothing
 Shout it
 Knock it down


Funkcije[uredi | uredi izvor]

Funkcije se deklarišu korišćenjem ime promenljive koju prati ključna reč takes, i zatim niz parametara odvojenih ključnom reči and.
Primer funkcija:

 Multiply takes X and Y
 Search takes Needle and Haystack

Telo funkcije je niz naredbi koje nisu razdvojene blanko karakterima. Blanko karakteri označavaju kraj tela funkcije. Funkcije u programskom jeziku Rokstar uvek imaju naredbu return, čiju funkciju vrši ključna reč Give back.

Funkcije se pozivaju korišćenjem ključne reči taking i moraju da imaju bar jedan argument. Argumenti se razdvajaju korišćenjem ključne reči 'and' ili ','. Argumenti mogu biti samo promenljive i literali. Izrazi koji imaju više operatora nisu dozvoljeni.Funkcije su pohlepne, ako nađu više simbola koje mogu uključiti u argument, uključiće ih.

  Multiply taking 3, 5 је израз који враћа 15
  Search taking "hands", "lay your hands on me"
  Put Multiply taking 3, 5 and 9 into Large поставиће large на 3 * 5 * 9 NOT (3 * 5) && 9.

Primeri programa[uredi | uredi izvor]

Evo primera FizzBuzz programa napisanog u Rockstar jeziku, sa blokom naredbi koji služe razjašnjenju[3]:

 Modulus takes Number and Divisor
  While Number is as high as Divisor
  Put Number minus Divisor into Number
      (blank line ending While block)
  Give back Number
      (blank line ending function declaration)
  Limit is 100
  Counter is 0
  Fizz is 3
  Buzz is 5
  Until Counter is Limit
  Build Counter up
  If Modulus taking Counter, Fizz is 0 and Modulus taking Counter, Buzz is 0
     Say "FizzBuzz!"
  Continue
      (blank line ending 'If' Block)
  If Modulus taking Counter and Fizz is 0
  Say "Fizz!"
  Continue
      (blank line ending 'If' Block)	
  If Modulus taking Counter and Buzz is 0
  Say "Buzz!"
  Continue
      (blank line ending 'If' Block)
  Say Counter
      (EOL ending Until block)

I evo iste stvari u idiomatskom Rockstar-u, napisanog poetičnim izražavanjem

  Midnight takes your heart and your soul
  While your heart is as high as your soul
  Put your heart without your soul into your heart
  
  Give back your heart
                                                                                                  
  Desire is a lovestruck ladykiller
  My world is nothing 
  Fire is ice
  Hate is water
  Until my world is Desire,
  Build my world up
  If Midnight taking my world, Fire is nothing and Midnight taking my world, Hate is nothing
  Shout "FizzBuzz!"
  Take it to the top
                                                                                            
  If Midnight taking my world, Fire is nothing
  Shout "Fizz!"
  Take it to the top
                                                                                                     
  If Midnight taking my world, Hate is nothing
  Say "Buzz!"
  Take it to the top
  Whisper my world

Reference[uredi | uredi izvor]

  1. ^ „Rokstar”. GitHub. GitHub. Pristupljeno 28. 10. 2018. 
  2. ^ „Podsticaj za kreiranjem”. esolang.org. esolang. Pristupljeno 26. 10. 2018. 
  3. ^ „Primeri”. boingboing.net. boingboing. Pristupljeno 25. 10. 2018. 

Spoljašnje veze[uredi | uredi izvor]