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
,my
aleboyour
za 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 boy
je 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 ID
aleboCena Produktu
, špecifikácia odporúča používať skôr idiomatické názvy akoTommy
,Doctor Feelgood
,Billie Jean
aleboJanie
.
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 X
vloží do premennejX
hodnotu123
Put "Hello San Francisco" into message
vloží do premennejmessage
hodnotu"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 up
zvýši hodnotu premennejmy world
o 1Knock the walls down
zníži hodnotu premennejthe walls
o 1Knock the walls down, down, down
zníži hodnotu premennejthe walls
o 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 hands
priradí do premennejmy hands
hodnotuthe whole
krátyour heart
My world is nothing without your love
priradí do premennejyour love
hodnotunothing
(0) mínus hodnota premennejyour love
If the tears of a child is nothing
vrátitrue
/false
podľa toho, či sathe tears
kráta child
rovná 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 true
priradí do premennejMy heart
hodnotutrue
Tommy is nobody
priradí do premennejTommy
hodnotunull
(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!\n
priradí do premennejTommy
hodnotuHello San Francisco!
San Francisco says Hello back\n
priradí do premennejSan Francisco
hodnotuHello 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 ladykiller
uloží do premennejTommy
hodnotu100
Sweet Lucy was a dancer
uloží do premennejSweet Lucy
hodnotu16
My dreams were ice. A life unfulfilled; wakin' everybody up, taking booze and pills
uloží do premennejMy dreams
hodnotu3.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 nobody
priradí do premennejTommy
hodnotunull
(cez aliasnobody
)If Tommy is nobody
vykoná nasledujúci blok kódu v prípade, že Tommy == null (hodnota premennejTommy
jenull
)
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 heart
načíta riadok zo vstupu a uloží ho do premennejyour heart
Say Tommy
vypíš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 Y
Love 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, 5
je 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.