IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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 alebo your 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á od the 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 alebo Cena Produktu, špecifikácia odporúča používať skôr idiomatické názvy ako Tommy, Doctor Feelgood, Billie Jean alebo Janie.

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 premennej X hodnotu 123
  • Put "Hello San Francisco" into message vloží do premennej message 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 premennej my world o 1
  • Knock the walls down zníži hodnotu premennej the walls o 1
  • Knock the walls down, down, down zníži hodnotu premennej the walls o 3

Aritmetické výrazy

  • {a} plus {b} - sčítanie. Alias with
  • {a} minus {b} - odčítanie. Alias without
  • {a} times {b} - násobenie. Alias of
  • {a} over {b} - delenie.

Príklady

  • Put the whole of your heart into my hands priradí do premennej my hands hodnotu the whole krát your heart
  • My world is nothing without your love priradí do premennej your love hodnotu nothing (0) mínus hodnota premennej your love
  • If the tears of a child is nothing vráti true/false podľa toho, či sa the tears krát a 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 premennej My heart hodnotu true
  • Tommy is nobody priradí do premennej Tommy hodnotu null (pomocou aliasu nobody)

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 premennej Tommy hodnotu Hello San Francisco!
  • San Francisco says Hello back\n priradí do premennej San Francisco hodnotu Hello 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 premennej Tommy hodnotu 100
  • Sweet Lucy was a dancer uloží do premennej Sweet Lucy hodnotu 16
  • My dreams were ice. A life unfulfilled; wakin' everybody up, taking booze and pills uloží do premennej My dreams hodnotu 3.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 premennej Tommy hodnotu null (cez alias nobody)
  • If Tommy is nobody vykoná nasledujúci blok kódu v prípade, že Tommy == null (hodnota premennej Tommy je null)

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 premennej your heart
  • Say Tommy vypíše hodnotu premennej Tommy

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) 15
  • Love 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.


 

Všechny články v sekci
Ezoterické programovací jazyky
Článek pro vás napsal Martin Petrovaj
Avatar
Uživatelské hodnocení:
6 hlasů
Autor je lenivý vymýšľať nejaký slušný podpis. Venuje sa ale prevažne C#.
Aktivity