Rockstar је динамички типизиран, Тјуринг-потпун, програмски језик,припада групи езотеричних програмских језика. Рокстар је дизајниран за креирање компјутерских програма који су налик текстовима песама, и на његов развој је велики утицај имало друштво текстописаца рок музике 1980-их. Језик је забаван, ко би одолео да покрене програм који је базиран на тексту који је Митлоф написао, зар не? Иако је Рокстар потпуно дефинисан програмски језик, пре свега је направљен из забаве. Програмски језик Рокстар креирао је Дајлан Бети(енгл. Dylan Beattie), подстакнут твитом Пол Стовела, који је рекао: "Да би стварно збунили послодавце требало би направити програмски језик под називом Рокстар".

Спецификација програмског језика Рокстар Замишљено је да се програмеру да велика слобода при писању и структурирању програма написаних у овом језику, зарад исказивања њихове поетичности. Рокстар програми користе UTF-8 енкодирање и имају екстензију .rock. Коментари Програмски језик је изрично против употребе коментара са образложењем да корисник треба сам да нађе смисао програма, без сугестија о томе шта је написано. Ако се баш инсистира на употреби коментара, потребно их је ставити у оквиру заграда (). То значи да не можете користити заграде у писању сложених аритметичких израза већ их је потребно разложити на више једноставнијих.

Променљиве Постоје два начина за декларисање променљивих у програмском језику Рокстар. Уобичајене променљиве се декларишу употребом кључних речи (a, an, the, my или your) за којима следи име променљиве које мора да садржи мале ASCII карактере a-z. Кључна реч је притом део променљиве, дакле a boy је променљива различита од променљиве the boy. Исправна променљива је било која властита именица која није резервисана као кључна реч и не почиње великим словом. Променљиве могу укључити у себе произвољан број бланко карактера докле год реч иза бланко карактера почиње великим словом. Иако многи програмери користе ово својство за именовање променљивих попут Сustomer ID, Tax Rate or Distance In KM, препоручује се давање имена променљивама на следећи начин: Tommy, Gina, Doctor Feelgood, Mister Crowley, Kayleigh, Tom Sawyer, Billie Jean and Janie. Попут Рубија(енгл. Ruby) и Пајтона(енгл. Python) променљиве су динамички-типизиране и није их потребно декларисати пре употребе. Ако је променљива дефинисана ван функције она има глобалан опсег видљивости. Глобалне променљиве су видљиве у читавом програму од места иницијализације. Ако је прменљива декларисана у функцији онда је локална. Локалне променљиве су доступне од своје иницијализације до краја функције у којој су инцијализоване. Кључне речи it, he, she, him, her, they, them, ze, hir, zie, zir, xe, xem, ve, и ver се односе на последњу иницијализовану променљиву.

Типови Рокстар има јако сличне типове променљивих као и ECMAScript, осим што undefined није у духу rock'n'roll-а, па се користи кључна реч mysterious уместо ње. Mysterious - вредност која је на снази док корисник не додели вредност променљивој Null - има нумеричку вредност 0 и логичку false Boolean - логички тип променљиве, може имати две вредности true и false right, yes и ok представљају логичку вредност true wrong, no и lies представљају логичку вредност false Number - бројеви се у Рокстару су складиштени коришћењем DEC64 система String - је низ 16-битних неозначених целих бројева који се представљају UTF-16 енкодирањем Object - је колекција именованих поља као у ЕCMAScript-у

Истинитост

Резултати поређења одређују се на основу појма који се зове „истинитост”. Ако је резултат поређења вредност која је истинита, она ће се имплицитно претворити у true. Уколико добијена вредност није истинита, имплицитно ће се претворити у false. Mysterious - false Null - false Boolean - true ако је вредност истинита, иначе false Number - false ако је вредност једнака 0, иначе true String - true Object - true Константе и кључне речи

Речи које се користе за конструкцију литерала одређеног типа називају се константе. Речи које се користе за писање различитих синтаксних конструкција називају се кључне речи.

Константе: mysterious, null, nothing, nowhere, nobody, empty, gone, true, right, yes, ok, false, wrong, no, lies, maybe, definitely maybe.

Литерали и додељивање За писање ниских у програмском језику Рокстар користе се двоструки наводници " ".

* "Hello San Francisco" Нумерички литерали у се записују као децимални бројеви. * 123 * 3.141592654 Додела се означава комбинацијом кључних речи put/into. * Put 123 into X - додељује се вредност 123 у променљиву X * Put "Hello San Francisco" into the message - додељује вредност "Hello San Francisco" у променљиву the message

Једноструки наводници Већина програмских језика користи једноструке наводнике, да опише стринговне литерале попут : 'like this'. Међутим када се пише текст на енглеском језику ASCII кодираним карактерина "'" се користи да назначи речи попут: you're, she's, he's, shouldn't, rock'n'roll. Rock'n'roll константно користи апострофе: sweet child o' mine, ain't talkin' 'bout love, guns n' roses. Имајући то у виду, Rockstar долази до следећег решења: Реч 's\W+ - једностуки наводник, који прати мало 's' и једна или више белина - биће замењени са " is "(белина, is, белина ) Ово омогућује да "Janie's got a gun" (иницијализује Janie са вредношћу 313) и Union's been on strike (иницијализује Union са вредношћу 426) да буду исправне декларације променљивих. Сви остали једноструки наводници се потом игноришу, ain't је исто што и aint, wakin' има 5 карактера а ’’’’’ је еквивалентно са празним стрингом. Ово значи да надаље межете да користите једноструке наводнике без бриге да они могу да утичу да дође до грешке приликом превођења програма.

Ариметика Основне аритметичке операције изводе се помоћу кључних речи plus, minus, times и over. Аритметички изрази: {a} plus {b} - сабирање {a} minus {b} - одузимање {a} times {b} - множење {a} over {b} - дељење Примери: Put the whole of your heart into my hands - множи променљиву the whole са променљивом your heart и смешта резултат у променљиву my hands My world is nothing without your love - вредност променљиве My world је резултат одузимања променљиве your love од 0 If the tears of a child is nothing - проверава да ли је резултат множења променљивих the tears и a child једнак 0 My heart over the moon - резултат је дељење променљивих My heart и the moon

Логички оператори Програмски језик Рокстар има четири различита логичка оператора. Логички изрази: A and B - логичка конјункција A or B - логичка дисјункција A nor B - not A - логичка негација јединственог операнда У израчунавању вредности логичких израза користи се лењо израчунавање. Основна одлика оваквог израчунавања јесте израчунавање само онога што је неопходно, о значи да ако се израчунавањем првог аргумента може одредити резултат, други аргумент није потребно рачунати.

Бинарно поређење Оператори за поређење (is, ain't, is not) су дозвољени, ако се ради о поређењу истих типова података. Објекти се пореде по једнакости референце, док се сви остали типови пореде по једнакости вредности. Компаратори за сортирање (is higher than, is lower than, is as high as, and is as low as) су дозвољени једнино ако су оба операнда бројеви или стрингови, или су конвертовани у један од ових типова следећи правила испод. Бројеви се пореде као што је очекивано, док се стрингови пореде лексикографски. <Mysterious> <op> Mysterious => Equal. <Non-Mysterious> <op> Mysterious => Non equal. String <op> Number => Преводи стринг у број користећи систем са основом 10, игноришући водеће нуле. String <op> Boolean => Преводи стринг у boolean користећи све дефинисане алиасе. String <op> Null => Non equal. Number <op> Boolean => Пребацује број у boolean по истинитости. Number <op> Null => Преводи null у 0. Boolean <op> Null => Преводи null у falsе.

Примери "1" is 1 је true зато што се "1" преводи у број 1 "2" ain't Mysterious је true зато што ниједан тип није еквивалентан са mysterious осим њега самог. "02" < "10" је true јер лексикографско поређење између 0 и 1 показије да је први карактер мањи од другог.

Приоритет оператора У програмском језику Рокстар редослед оператора према приоритету исти је као и у математици. Функцијски позив Логички оператор NOT (десна асоцијативност) Множење и дељење (лева асоцијативност) Сабирање и одузимање (лева асоцијативност) Оператори поређења (лева асоцијативност) and, or и nor (лева асоцијативност) Пример: A taking B times C plus not D times E and F - представља израз ((A(B) * C) + (!D * E)) && F

Инкрементирање и декрементирање У Рокстар програмском језику за инкрементирање се користи конструкција Build {променљива} up, а за декрементирање Knock {променљива} down. Уколико се више пута употреби up или down, инкрементирање и декрементирање ће се извршити онолико пута колико је пута употребљена реч up односно down. Зарез се може налазити између сваког up или down. Build my world up - вредност прменљиве my world се повећава за 1 Knock the walls down -вредност прменљиве the walls се умањује за 1 Knock the walls down, down - вредност променљиве the walls се умањује за 2

Улаз/излаз Кључна реч Listen се користи за читање једне линије са STDIN. Listen to се користи за именоване променљиве. Listen to your heart - чита једну линију са улаза и смешта у променљиву your heart Кљцчна реч Say се користи за исписивање вредности променљиве на STDOUT. Say Tommy - исписује на STDOUT вредност која је сачувана у променљивој Tommy Уместо кључне речи Say могу се користити Shout, Whisper и Scream.

Наредбе

Услови Условни изрази почињу са кључном речи If а затим се наводи израз. Уколико израз има истинитосну вредност true, онда се извршава следећи блок кода. Уколико је истинитосна вредност израза false, извршава се део кода који се налази након наредбе Else.

Петље У програмском језику Рокстар петља се означава кључном речи While или Until. Петље омгућавају извршавање кодног блока док је израз задовољен.

Tommy was a dancer While Tommy ain't nothing, Knock Tommy down Вредност променљиве Tommy се иницијализује на 16, врши се декрементираље променљиве све док вредност променљиве Tommy не буде једнака 0. Наредбе break и continue функционишу као и у већини програмских језика. Рокстар дефинише израз Break it down који се ккористи уместо break, као и израз Take it to the top уместо continue.

Блокови Блок у Рокстару почиње са If, Else, While или Until, а завршава се празном линијом или завршетком датотеке. EOF завршава све отворене блокове кода.

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

Функције Функције се декларишу коришћењем име променљиве коју прати кључна реч takes, и затим низ параметара одвојених кључном речи and. Пример функција:

Multiply takes X and Y Search takes Needle and Haystack

Тело функције је низ наредби које нису раздвојене бланко карактерима. Бланко карактери означавају крај тела функције. Функције у програмском језику Рокстар увек имају наредбу return, чију функцију врши кључна реч Give back.

Функције се позивају коришћењем кључне речи taking и морају да имају бар један аргумент. Аргументи се раздвајају коришћењем кључне речи 'and' или ','. Аргументи могу бити само променљиве и литерали. Изрази који имају више оператора нису дозвољени.Функције су похлепне, ако нађу више симбола које могу укључити у аргумент, укључиће их.

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.

Примери програма

Ево примера FizzBuzz програма написаног у Rockstar језику, са блоком наредби који служе разјашњењу:

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