Korisnik:Natalija1234/pesak

S Vikipedije, slobodne enciklopedije

LOLCODE je ezoterični programski jezik inspirisan LOL jezikom[1] (eng. lolspeak).

Kreirao ga je 2007. godine Adam Lindzej (eng. Adam Lindsay), istraživač na računarskom odseku na Univerzitetu Lankaster.

LOLCODE
velika
Pojavio se2007.
Dizajner(i)Adam Lindzej
Aktuelna verzijav0.11.2
Sistem tipova.lol, .lols
Uticao naLolcats
Veb-sajtlolcode.org

Jezik nije jasno definisan u smislu prioriteta operatora i ispravnih sintaksi, ali postoji nekoliko funkcionalnih interpretora i kompajlera. Jedan interpretor jezika dokazao je da je jezik Tjuring-potpun.[2]

Struktura i primeri programskog jezika[uredi | uredi izvor]

Ključne reči ovog jezika su preuzete iz žargonskog internet jezika, koji je poznatiji kao lolcat Internet meme. Karakteristike ovog jezika su skraćenice i neispravno napisane reči. Prvi primer je jednostavn program koji ispisuje "HAI WORLD", tj. "Zdravo svete".

Primer 1[uredi | uredi izvor]

HAI 1.2
CAN HAS STDIO?
VISIBLE "HAI WORLD!"
KTHXBYE

Tumačenje koda:

Kod Značenje
HAI [ВЕРЗИЈА] U svim LOLCODE programima, HAI ("Hi!", "Zdravo") započinje program i određuje tačnu verziju programa (iako se to u praksi ne koristi često).
CAN HAS [БИБЛИОТЕКА]? U mnogim programskim jezicima, jedna od prvih naredbi je uključivanje standardne biblioteke za funkcije. Obično je to naredba: #include <stdio.h> ["stdio" skraćeno od "standard input/output library"]. Ova komanda ima isto značenje, proverava da li je izabrana biblioteka dostupna i uključuje je.
VISIBLE "ПОРУКА" Prikazuje poruku na ekranu.
KTHXBYE Kao što HAI započinje program, KTHXBYE ("K," "THX," i "Bye" skraćeno od "OK, thanks, bye", odnosno "U redu, hvala, zdravo") završava program.

Primer 2[uredi | uredi izvor]

Sledeći program zahteva otvaranje dokumenta. U slučaju da je dokument otvoren prikazuje ga, a u suprotnom izbacuje grešku.

HAI 1.2
CAN HAS STDIO?
PLZ OPEN FILE "LOLCATS.TXT"?
    AWSUM THX
        VISIBLE FILE
    O NOES
        INVISIBLE "ERROR!"
KTHXBYE

Tumačenje koda:

Kod Značenje
PLZ OPEN FILE "IME"? Otvara navedeni fajl.
AWSUM THX

O NOES

U slučaju da je fajl otvoren AWSUM THX (skraćeno od eng. "Awesome, thanks!") daje dalje naredbe; u suprotnom O NOES izbacuje grešku.
I HAS A [ПРОМЕНЉИВА] Koristi se za deklarisanje promenljive.
BTW Služi za ostavljanje komentara. (Skraćenica za eng. "by the way").

Primer 3[uredi | uredi izvor]

HAI 1.0
CAN HAS STDIO?
I HAS A VAR
IM IN YR LOOP
   UP VAR!!1
   VISIBLE VAR
   IZ VAR BIGGER THAN 10? KTHX
IM OUTTA YR LOOP
KTHXBYE

[3]

U datom programu naredba IM IN YR LOOP započinje petlju u kojoj se promenljiva povećava za 1, prikazuje i poredi sa 10. Kada dostigne vrednost 10 IM OUTTA YR LOOP izlazi iz petlje. Ovaj program se u novijoj verziji jezika može kodirati i na sledeći način:

HAI 1.2
CAN HAS STDIO?
IM IN YR LOOP UPPIN YR VAR TIL BOTH SAEM VAR AN 10
    VISIBLE SUM OF VAR AN 1
IM OUTTA YR LOOP
KTHXBYE

Tipovi podataka[uredi | uredi izvor]

Kao i u većini drugih programskih jezika u jeziku LOLCODE podaci su organizovani u tipove. Pri unosu promenljive tip podataka je određen automatski prema sadržaju, pa ne mora pojedinačno da se deklariše. Međutim korisniku je dozvoljeno da sam izabere tip za određenu promenljivu.

Spisak tipova podataka u jeziku LOLCODE[4]:

Unos Tip
I HAS A STRING ITZ "DOGZ ARE GOOOD" YARN
I HAS A INTEGER ITZ 42 NUMBR
I HAS A FLOAT ITZ 3.1415 NUMBAR
I HAS A BOOLEAN ITZ WIN TROOF
I HAS A UNTYPED NOOB
I HAS A AGE 
GIMMEH AGE
BTW Променљива је сада типа YARN. За конвертовање у NUMBR:
AGE IS NOW A NUMBR

U prethodnom primeru komanda GIMMEH očekuje da korisnik unese vrednost promenljive. Svaki sadržaj koji korisnik unese automatski se registruje kao tekst (eng. string, u jeziku LOLCODE - yarn). Komanda [ПРОМЕНЉИВА] IS NOW A [ТИП ПОДАТАКА] omogućava konverziju iz jednog tipa podataka u drugi.

Operatori[uredi | uredi izvor]

Kao i u ostalim programskim jezicima i u jeziku LOLCODE se mogu vršiti različite operacije. Operacije među promenljivima se zadaju pomoću operatora. Operatori se mogu podeliti u nekoliko kategorija.

Aritmetički operatori[uredi | uredi izvor]

Nad operandima brojevnih tipova (NUMBR ili NUMBAR ) mogu se primeniti sledeći aritmetički operatori:

Kod Operacija
SUM OF 21 AN 33 21 + 33
DIFF OF 90 AN 10 90 - 10
PRODUKT OF 12 AN 13 12 * 13
QUOSHUNT OF 32 AN 43 32 / 43
MOD OF 43 AN 64 Ostatak pri deljenju 43 sa 64
BIGGR OF 23 AN 53 max(23, 53)
SMALLR OF 53 AN 45 min(53, 45)

Logički operatori[uredi | uredi izvor]

Logički operatori primenjuju se nad brojevnim vrednostima kojima se pridružuju logičke ili istinitosne vrednosti. Postoje sledeći logički operatori:

Kod Operacija
BOTH OF WIN AN WIN konjunkcija
EITHER OF FAIL AN WIN disjunkcija
WON OF WIN AN FAIL isključiva disjunkcija
NOT FAIL unarna negacija
ALL OF WIN AN WIN MKAY konjunkcija beskonačne arnosti
ANY OF WIN AN FAIL MKAY disjunkcija beskonačne arnosti

Relacijski operatori[uredi | uredi izvor]

Relacijski operatori primenjuju se nad brojevnim vrednostima i kao rezultat daju istinitosnu vrednost u dva oblika

Kod Operacija
BOTH SAEM "CAT" AN "DOG" x == y
DIFFRINT 732 AN 184 x != y
BOTH SAEM 12 AN BIGGR OF 12 AN 4 x >= y
BOTH SAEM 43 AN SMALLR OF 43 AN 56 x <= y
DIFFRINT 64 AN SMALLR OF 64 AN 2 x < y
DIFFRINT 75 AN BIGGR OF 75 AN 643 x > y

Kontrola toka[uredi | uredi izvor]

Naredbe za kontrolu toka omogućavaju različite načine izvršavanja programa, u zavisnosti od vrednosti promenljivih. One uključuju naredbe grananja i petlje.

Naredbe grananja[uredi | uredi izvor]

Naredbe grananja ili naredbe uslova, na osnovu vrednosti nekog izraza, određuju naredbu ili grupu naredbi koje će biti izvršene.

Naredba if[uredi | uredi izvor]

U opštem slučaju ova naredba ima sledeći oblik:

[ИЗРАЗ 1], O RLY?
    YA RLY
        [НАРЕДБА 1]
    MEBBE [ИЗРАЗ 2]
        [НАРЕДБА 2]
    NO WAI
        [НАРЕДБА 3]

Ova naredba prvo proverava uslov [ИЗРАЗ 1]; ukoliko je uslov ispunjen izvršava se [НАРЕДБА 1], u suprotnom proverava se sledeći uslov, ako je on ispunjen izvršava se [НАРЕДБА 2], a ako nijedan od uslova nije ispunjen prelazi se na [НАРЕДБУ 3].

Na konkretnom primeru to izgleda ovako:

I HAS A ANIMAL
GIMMEH ANIMAL
BOTH SAEM ANIMAL AN "CAT", O RLY? 
    YA RLY
        VISIBLE "YOU HAV A CAT"
    MEBBE BOTH SAEM ANIMAL AN "MAUS"
        VISIBLE "NOM NOM NOM. I EATED IT."
    NO WAI
        VISIBLE "AHHH IS A WOOF WOOF"

Naredba switch/case[uredi | uredi izvor]

Ova naredba koristi se za višestruko odlučivanje i u opštem slučaju izgleda ovako:

ИЗРАЗ, WTF?
    OMG КОНСТАНТАН ИЗРАЗ 1
        НАРЕДБА 1
        GTFO
    OMG КОНСТАНТАН ИЗРАЗ 2
        НАРЕДБА 2
        BTW на крају наредбе нема `GTFO` тако да ће и следећи израз бити тестиран
    OMG КОНСТАНТАН ИЗРАЗ 3
        НАРЕДБА 3
        GTFO
    OMGWTF
        НАРЕДБА 4

Naredbe koje treba izvršiti označene su slučajevima (eng. case) za različite pojedinačne vrednosti izraza. Svakom slučaju je pridružen konstantan izraz. Ukoliko zadati izraz ima vrednost nekog od konstantnih izraza izvršava se odgovarajuća naredba. Naredba GTFO koja se nalazi na kraju slučaja označava izlazak iz grananja. Ukoliko on nedostaje prelazi se na sledeći slučaj. Slučaj OMGWTF izvršava [НАРЕДБУ 4] ukoliko izraz nema vrednost nijednog od prethodno navedenih slučajeva.

BTW Case statement:
I HAS A COLOR
GIMMEH COLOR
COLOR, WTF?
    OMG "R"
        VISIBLE "RED FISH"
        GTFO
    OMG "Y"
        VISIBLE "YELLOW FISH"
    OMG "G"
    OMG "B"
        VISIBLE "FISH HAS A FLAVOR"
        GTFO
    OMGWTF
        VISIBLE "FISH IS TRANSPARENT OHNO WAT"

Petlje[uredi | uredi izvor]

Petlje, odnosno ciklusi ili repititivne naredbe uzrokuju da se određena naredba ili grupa naredbi izvršava više puta, sve dok je neki logički uslov ispunjen. Razlikujemo dva tipa petlji. U osnovi one imaju istu funkciju ali se mogu koristiti obe u zavisnosti od problema radi bolje čitljivosti koda.

Petlja while[uredi | uredi izvor]

Ova petlja koristi se za izvršavanje naredbe sve dok je određeni uslov ispunjen. U opštem obliku to izgleda ovako:

IM IN YR LOOP [НАРЕДБА] WILE [ИЗРАЗ]
IM OUTTA YR LOOP

Ulaskom u petlju uslov [ИЗРАЗ] se iznova proverava i blok naredbi se ponavlja sve dok istinitosna vrednost izraza postane netačna. Tada se izlazi iz petlje i nastavlja se sa izvršavanjem prve sledeće komande u programu.

Primer ovakve petlje može biti:

IM IN YR LOOP NERFIN YR ITERATOR WILE DIFFRINT ITERATOR AN -10
    VISIBLE ITERATOR
IM OUTTA YR LOOP

Petlja for[uredi | uredi izvor]

IM IN YR LOOP [ИЗРАЗ 1] TIL [ИЗРАЗ 2] AN ПРОМЕНЉИВА
    [НАРЕДБА]
IM OUTTA YR LOOP

[ИЗРАЗ 1] predstavlja izraz dodele i menja vrednost relevantne promenljive, a [ИЗРАЗ 2] je relacijski i predstavlja uslov. Naredba se izvršava sve dok uslov ne postane neispunjen, a vrednost relevantne promenljive se menja svakim prolaskom kroz petlju. To znači da uslov nije ispunjen samo u poslednjem prolasku kroz petlju, nakon čega se izlazi iz nje.

Primer ovakve petlje može biti:

I HAS A TEMPERATURE
GIMMEH TEMPERATURE
TEMPERATURE IS NOW A NUMBR
IM IN YR LOOP UPPIN YR ITERATOR TIL BOTH SAEM ITERATOR AN TEMPERATURE
    VISIBLE ITERATOR
IM OUTTA YR LOOP

Implementacije[uredi | uredi izvor]

Najnoviji i najsavremeniji interpretor za jezik LOLCODE je lci, koji je napisao Džastin Meza (Justin Meza) u programskom jeziku C. On efikasno interpretira LOLCODE na raznim platformama.[5]

Prva implementacija LOLCODE bila je PHP parser koji je napisao Džef Džouns (Jeff Jones).[6] To je bila i prva veb stranica koja koristi LOLCODE kao stvarni veb jezik. Kao otvoreni izvor sa licencom stila BSD-a, većina veb lokacija ga je koristila za implementaciju LOLCODE zapisa. Pobednička prezentacija Pecha Kucha na PHP Works 2008. bila je o ovom parseru.

Postoji .NET kompajler za LOLCODE koji je napisao Nik Džonson (Nick Johnson)[7], i predstavljen je na Microsoft seminarima za obuku za programere, na konferenciji TechEd 2007. godine u Australiji.[8][9]

PL / LOLCODE, projekat na čelu sa Džošom Toleijem (Josh Tolley), čini LOLCODE dostupnim kao serverski programski jezik unutar PostgreSQL-a.

Microsoft Dynamic Language Runtime ima implementaciju LOLCODE za potrebe testiranja.

LOLCODE-java (JavaScript / prevodilac za programski jezik LOLCODE) je dostupan projekat, ali još uvek nije usklađen sa verzijom 1.3. Takođe je dostupan i LOLCODE za JavaScript prevodioca.

Postoji i kompajler LOLCODE uključen u virtuelnu mašinu Parrot kao jedan od jezika koji pokazuju upotrebu Parrot-ovih alatki za prevođenje.

Povezani projekti[uredi | uredi izvor]

LOLCODE je takođe inspirisao LOLPython, koji je napisao Endru Dalke (eng. Andrew Dalke). LOLPython koristi sintaksu inspirisanu LOL jezikom, sličnu onoj iz LOLCODE-a, ali sa Python stilom. Radi na prevođenju izvora LOLPython u Python kod.[10]

ArnoldC je predstavnik LOLCODE-a koji zamenjuje lol jezik sa citatima iz različitih filmova Arnolda Švarcenegera.[11]

Reference[uredi | uredi izvor]

  1. ^ „Web photo phenomenon centers on felines, poor spelling”. Houston Chronicle. 2007-06-05. Pristupljeno 2018-10-25. 
  2. ^ „Proof that LOLCode is turing complete:BrainF*** interpreter in LOLCode”. 2007-07-11. Pristupljeno 2018-10-17. 
  3. ^ „home · LOLCODE”. 2007-10-02. Pristupljeno 2018-10-25. 
  4. ^ „Learn LOLCODE in Y Minutes”. learnxinyminutes.com. Pristupljeno 2018-10-25. 
  5. ^ „LOLCODE”. lolcode.org. Pristupljeno 2018-10-25. 
  6. ^ Lindsay, Adam T. „lolcode”. atl.me (na jeziku: engleski). Pristupljeno 2018-10-25. 
  7. ^ „Google Code Archive - Long-term storage for Google Code Project Hosting.”. code.google.com (na jeziku: engleski). Pristupljeno 2018-10-25. 
  8. ^ „TechEd Day 2: Microsoft announces LOLCode support and Cheezburger Studios”. istartedsomething (na jeziku: engleski). 2007-08-09. Pristupljeno 2018-10-25. 
  9. ^ Bort, Julie. „LOLcode in next Visual Studio? For young and funny cats”. Network World (na jeziku: engleski). Pristupljeno 2018-10-25. 
  10. ^ „LOLPython”. www.dalkescientific.com. Pristupljeno 2018-10-25. 
  11. ^ „ArnoldC”. lhartikk.github.io. Pristupljeno 2018-10-25. 

Spoljašnje veze[uredi | uredi izvor]