Staňte sa Rockstar Developerom!
S rastúcim počtom IT jobov a neustálym podstavom vývojárov a ďalších "ajťáckych" profesií sú recruiteri a personalisti nútení hľadať nové spôsoby, ako pritiahnuť novú pracovnú silu. Objavujú sa rôzne revolučné benefity, od straveniek až po home office raz do týždňa, ako vedľajší produkt občas aj vyššie platy. Najnovším a u marketingu obľúbeným nástrojom sa však stali tzv. kreatívne inzeráty. Firmy nám v nich tykajú a lanária nás na pozície typu "Ninja coder", "Senior Javascript Guru" alebo "Rockstar Developer".
Že netušíte, čo od vás môžu na takejto pozícii chcieť? Málokto tuší niečo viac než tikajúce deadliny a overtime na dennom poriadku. Vy však môžete ohúriť a prihlásiť sa na žiadanú pozíciu Rockstar Developera s unikátnym skillom - programovaním v jazyku Rockstar!
Čo to je?
Špecifikácia jazyku Rockstar vznikla v roku 2018 so zámerom vytvoriť naozajstný (aj keď zbytočný) programovací jazyk, aby recruiteri a HR manažéri prestali používať spojenie "rockstar developer". Celý jazyk je postavený na myšlienke, že program by mal byť v duchu a forme rockových pesničiek z 80. rokov minulého storočia. Jazyk je dynamicky typovaný a zatiaľ (10/2018) príliš nepodporuje objekty.
Pre Rockstar existuje už v súčasnosti niekoľko interpretov a
transpilerov, napr. do Javascriptu, C#, Pythonu, Javy, C a ďalších. V
prípade záujmu ich nájdete cez vyššie uvedený odkaz na GitHub, jedným z
najjednoduchších na použitie je napr. rockstar-py, ktorý preloží váš
Rockstar do Pythonu. Je ale nutné dodať, že kvôli "čerstvosti" jazyka a
jeho prebiehajúcemu vývoju nie sú jeho implementácie ešte úplne bug-free a
často ani na 100% up-to-specs. 
Súbory so zdrojovým kódom v Rockstare sa ukladajú do plaintextu,
štandardne s príponou .rock. V Rockstare tak môžete "vyvíjať"
prakticky kdekoľvek a s čímkoľvek. Poďme sa už ale pustiť do
programovania.
Premenné
Existujú 2 rovnocenné spôsoby, ako v Rockstare vytvoriť premennú:
- Všeobecné premenné začínajú jedným z kľúčových
slov
a,an,the,myaleboyourza ktorým nasleduje unikátny identifikátor danej premennej. Ten smie obsahovať len lower-case ASCII písmená od a po z. Kľúčové slovo na začiatku je tiež súčasťou identifikátora, takže napr.a boyje odlišná premenná odthe boy. - Vlastné premenné sú už podľa názvu vlastné
podstatné mená - začínajú sa veľkým začiatočným písmenom a môžu sa
skladať z viacerých slov oddelených medzerou (za predpokladu, že tiež
začína veľkým písmenom). Identifikátor samozrejme nesmie obsahovať
žiadne kľúčové slovo jazyka. Aj keď sa týmto spôsobom dajú vytvárať
premenné ako
Customer IDaleboCena Produktu, špecifikácia odporúča používať skôr idiomatické názvy akoTommy,Doctor Feelgood,Billie JeanaleboJanie.
Zámená
Pomocou kľúčových slov it, he,
she, him, her, they,
them, ze, hir, zie,
zir, xe, xem, ve, a
ver sa vieme odkázať na poslednú použitú premennú.
Odporúčam ale túto featuru nepoužívať, keďže väčšina implementácií
Rockstaru ju ešte nepodporuje.
Podobne ako v Pythone alebo Ruby, aj Rockstar je dynamicky typovaný jazyk a nemusíme ani deklarovať premenné predtým, než ich začneme používať.
Ak je premenná vytvorená mimo funkcie, jedná sa o tzv. globálnu premennú, teda viditeľnú v celom zvyšku programu (od riadku, na ktorom je vytvorená ďalej). Premenné vytvorené v rámci funkcie sú lokálne a dostupné len do dokončenia danej funkcie.
Typy
Ako sami uvidíte, typový systém v Rockstare je podobný tomu z ECMAScriptu
(až na to, že undefined neznie veľmi rockovo, tak sa namiesto
neho používa mysterious):
Mysterious
Reprezentuje hodnotu premennej, ktorej ešte nebola priradená žiadna
hodnota. Tento typ má len jednu hodnotu označenú kľúčovým slovom
mysterious.
Null
Obdobný význam ako v ostatných jazykoch. Pri porovnaní s nulou a hodnotou
false vráti pravdivý výsledok. Okrem null môžeme
použiť aj rovnocenné aliasy nothing, nowhere,
nobody, empty a gone.
Boolean
Logický typ, môže nadobúdať hodnoty true alebo
false. Kľúčové slová maybe a
definitely maybe sú vyhradené pre možné budúce využitie. Pre
true sú definované aj aliasy right, yes
a ok. Pre false sú definované aliasy
wrong, no a lies.
Number
Čísla v Rockstare sú ukladané v dátovom type DEC64. Pre oddelenie desatinnej časti sa používa bodka.
String
Stringy sú podľa špecifikácie vnútorne reprezentované ako sekvencie 16-bitových unsigned integerov, ktoré reprezentujú hodnoty z kódovania UTF-16.
Stringy v kóde sú ohraničené dvojicou úvodzoviek. Apostrof (single
quote) v sekvencii 's\W+ (apostrof nasledovaný malým písmenom s
a ľubovoľným počtom whitespace znakov) sa preloží ako is
(vysvetlené nižšie v článku), všetky ostatné výskyty apostrofov sú
ignorované.
Object
Kolekcia pomenovaných vlastností iných dátových typov, podobne ako v ECMAScripte.
Komentáre
Použitie komentárov v Rockstare sa dôrazne neodporúča. Toto je rock'n'roll, publikum si má vo vašom diele nájsť zmysel samo. Ak ale absolútne trváte na komentároch vo svojom kóde, použite okrúhle zátvorky.
Tommy was a lean mean wrecking machine. (initialises Tommy with the value 14487)
Áno, znamená to, že nemôžete používať zátvorky v aritmetických výrazoch. Je možné, že zložitejšie výrazy budete musieť rozložiť do viacerých menších a využiť viacero priradení.
Priradenie
Priradenie do premennej sa označuje kombináciou kľúčových slov
put/into:
Put 123 into Xvloží do premennejXhodnotu123Put "Hello San Francisco" into messagevloží do premennejmessagehodnotu"Hello San Francisco"
Inkrementácia a dekrementácia
Inkrementovanie premennej (zvýšenie jej hodnoty o 1) dosiahneme výrazom
Build {premenná} up, dekrementovanie zase cez
Knock {premenná} down. Viacnásobné opakovanie slov
up/down spôsobí opakovanie daného úkonu. Čiarky medzi
jednotlivými up/down sú povolené.
Build my world upzvýši hodnotu premennejmy worldo 1Knock the walls downzníži hodnotu premennejthe wallso 1Knock the walls down, down, downzníži hodnotu premennejthe wallso 3
Aritmetické výrazy
{a} plus {b}- sčítanie. Aliaswith{a} minus {b}- odčítanie. Aliaswithout{a} times {b}- násobenie. Aliasof{a} over {b}- delenie.
Príklady
Put the whole of your heart into my handspriradí do premennejmy handshodnotuthe wholekrátyour heartMy world is nothing without your lovepriradí do premennejyour lovehodnotunothing(0) mínus hodnota premennejyour loveIf the tears of a child is nothingvrátitrue/falsepodľa toho, či sathe tearskráta childrovná nule
Poetic literals
Dostávame sa k jednej z najzaujímavejších vlastností jazyka Rockstar, a
síce k možnosti pri priraďovaní do premenných vypustiť obsah svojho
básnického čreva. Jedná sa o alternatívu k priradeniu pomocou
put into.
Pre hodnoty true, false, nothing,
nobody a nowhere sa poetické priradenie skladá z
identifikátora premennej, kľúčového slova is a hodnoty, ktorú
priradzujeme:
My heart is truepriradí do premennejMy hearthodnotutrueTommy is nobodypriradí do premennejTommyhodnotunull(pomocou aliasunobody)
Poetické priradenie stringu prebieha rovnako, len používa kľúčové
slovo says. Všetko od neho až po koniec riadku sa vyhodnotí ako
string, ktorý sa priradzuje:
Tommy says Hello San Francisco!\npriradí do premennejTommyhodnotuHello San Francisco!San Francisco says Hello back\npriradí do premennejSan FranciscohodnotuHello back
Poetické priradenie čísel je ale najzaujímavejšie. Začína
identifikátorom premennej, do ktorej priradzujeme, nasleduje keyword
is (prípadne aliasy was/were). Zvyšok riadku sa
vyhodnotí ako reálne číslo, ktorého cifry sú dĺžkami jednotlivých slov.
Aby sa vyriešil nedostatok 1 a 2-písmenových rockových slov (a umožnila
cifra 0), dĺžka každého slova ešte prechádza cez modulo 10. Prvá bodka
funguje ako desatinný oddeľovač, všetky ďalšie znaky okrem písmen sú
ignorované.
Tommy was a lovestruck ladykilleruloží do premennejTommyhodnotu100Sweet Lucy was a danceruloží do premennejSweet Lucyhodnotu16My dreams were ice. A life unfulfilled; wakin' everybody up, taking booze and pillsuloží do premennejMy dreamshodnotu3.1415926535
Porovnávanie
Porovnávanie 2 hodnôt sa v Rockstare vykonáva operátorom is.
Z toho dôvodu je možné porovnanie vykonať len v rámci nejakého iného
výrazu - to, čo by bolo pôvodne podmienka, by sa osamote vyhodnotilo ako
priradenie:
Tommy is nobodypriradí do premennejTommyhodnotunull(cez aliasnobody)If Tommy is nobodyvykoná nasledujúci blok kódu v prípade, že Tommy == null (hodnota premennejTommyjenull)
Pre negáciu využijeme keyword not. K dispozícii je aj alias
ain't, ktorý môžeme použiť ako náhradu k is not.
To sa môže zdať byť trochu v rozpore s angličtinou, kde "Tommy isn't
anybody", "Tommy ain't nobody" a "Tommy ain't not nobody" z nejakého dôvodu
znamenajú to isté.
Ďalšie relačné operátory
Ďalšie relačné operátory sú:
is higher/greater/bigger/stronger than- väčšíis lower/less/smaller/weaker than- menšíis as high/great/big/strong as- väčší alebo rovnýis as low/little/small/weak as- menší alebo rovný
Input / Output
Pre načítanie jedného riadku z STDIN použijeme
Listen. Pre uloženie tejto hodnoty do premennej napíšeme
Listen to premenná. Príkaz Say premenná vypíše
obsah premennej premenná do STDOUT. Môžeme použiť
aj aliasy Shout, Whisper a Scream.
Listen to your heartnačíta riadok zo vstupu a uloží ho do premennejyour heartSay Tommyvypíše hodnotu premennejTommy
Flow control
Podmienky
Podmienené výrazy začínajú keywordom If, ktorý je
nasledovaný logickým výrazom. Ak sa vyhodnotí na true, vykoná
sa nasledovný blok príkazov. V opačnom prípade sa vykoná vetva
Else (ak je prítomná), alebo sa neudeje nič.
Cykly
Podobne ako pri podmienkach, cyklus je označený keywordom
While alebo Until a vykonáva sa dovtedy, kým platí
zadaná podmienka.
Tommy was a dancer While Tommy ain't nothing Knock Tommy down
Hore uvedený kód vytvorí premennú Tommy s hodnotou
16 a vo while cykle bude znižovať jej hodnotu, až kým nebude
rovná nule.
Keywordy break a continue existujú aj v Rockstare
a fungujú rovnako ako v iných jazykoch. K dispozícii sú ešte aliasy
Break it down pre break a
Take it to the top pre continue.
Bloky
Blok kódu v Rockstare začína keywordom If, Else,
While alebo Until a pokračuje až po prázdny riadok
alebo koniec súboru.
Tommy was a dancer While Tommy ain't nothing Scream Tommy Knock Tommy down Shout "Done!"
Funkcie
Funkcie sú deklarované svojím názvom, kľúčovým slovom
takes a svojimi argumentmi, ktoré oddeľujeme keywordom
and.
Multiply takes X and YLove takes Man and Woman
Telo funkcie je sekvencia príkazov bez akýchkoľvek prázdnych riadkov,
ktoré by ich oddeľovali. Prázdny riadok ukončuje telo funkcie. Ak má
funkcia vracať nejakú hodnotu, využijeme keyword
Give back {hodnota}.
Funkcie zavoláme keywordom taking:
Multiply taking 3, 5je výraz vracajúci (pravdepodobne) 15Love taking Tommy and Jane
Príklad
Nasleduje ukážkový program "Fizzbuzz" v minimalistickom Rockstare kvôli prehľadnosti:
Modulus takes Number and Divisor While Number is as high as Divisor Put Number minus Divisor into Number Give back Number 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 If Modulus taking Counter and Fizz is 0 Say "Fizz!" Continue If Modulus taking Counter and Buzz is 0 Say "Buzz!" Continue Say Counter
A tu je verzia v trochu umeleckejšie pojatom Rockstare a bez odsadenia:
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
Dúfam, že Vás článok o jazyku Rockstar aspoň pobavil a ovládate o
jeden ezoterický jazyk viac
Ak vytvoríte nejaké programy v tomto jazyku, nebojte sa s nami podeliť v
komentároch pod článkom.

