LOLCODE – ezoteryczny język programowania zainspirowany językiem pidgin English, używanym w fenomenie internetowym LOLCAT[1]. Język został stworzony w 2007 r. przez Adama Lindsaya, pracownika Wydziału Informatyki Lancaster University.
Język nie ma jeszcze dokładnie zdefiniowanej składni i semantyki. Mimo to istnieje już kilka działających interpreterów i kompilatorów.
Struktura języka i przykłady
LOLCODE jest napisany w mocno skróconym angielskim internetowym slangu i osoby, które go rozumieją, potrafią często zrozumieć zasadę działania programów bez doświadczenia programistycznego. Poniżej przykład programu Hello world oraz programu wypisującego zawartość pliku.
Składnia "Hello World" w języku LOLCODE
HAI
CAN HAS STDIO?
VISIBLE "HAI WORLD!"
KTHXBYE
Kod
Komentarz
HAI
We wszystkich programach napisanych w LOLCODE, HAI (slangowy odpowiednik angielskiego „hi”) rozpoczyna program.
CAN HAS [PLIK]?
Odpowiada za załadowanie bibliotek z dodatkowymi funkcjami. W języku C odpowiednikiem jest #include <PLIK>.
VISIBLE [TEKST]
Wypisuje tekst.
KTHXBYE
Kończy każdy program.
Zmienne i pętle
HAI
CAN HAS STDIO?
PLZ OPEN FILE "LOLCATS.TXT"?
AWSUM THX
VISIBLE FILE
O NOES
INVISIBLE "ERROR!"
KTHXBYE
W tym przykładzie zastosowana została komenda otworzenia pliku (PLZ OPEN FILE „NAZWA”? – „Proszę otwórz plik „NAZWA”?) oraz zwracanie wyjątków (AWSUM THX – „Świetne, dzięki!” i O NOES – „O nie!”).
Traktowanie wszystkich znaków, aż do końca linii, jako komentarz.
INVISIBLE
Zwracanie błędu na standardowy strumień błędów.
IM IN YR nazwa
Zwracanie błędu na standardowy strumień błędów.
KTHX
Zakończenie pętli.
GTFO
Przerwanie pętli.
ENUF
IZ
Instrukcja warunkowa.
Przykłady
Program wypisujący liczby od 1 do 10
Linia lolkodu
LOLCODE
Wyjaśnienie linii kodu
Porównanie do C++
1
HAI
Rozpoczęcie programu i zadeklarowanie biblioteki.
#include <iostream>
usingnamespacestd;
int main()
{
2
CAN HAS STDIO?
3
I HAS A VAR
Deklaracja zmiennej VAR.
for
(intwartosc = 1;
wartosc<=10;wartosc++
4
IM IN YR LOOP
Zwracanie błędu na standardowy strumień błędów pętli.
5
UP VAR!!1
Proces dodawania o wartości o 1, tzw. inktementacja
6
IZ VAR BIGGER THAN 10? HTHX
Jeżeli VAR jest większy niż 10, to przestań inkrementować.
7
VISIBLE VAR
Wypisz VAR.
)
cout << wartosc << " ";
8
IM OUTTA YR LOOP
Koniec pętli.
9
KTHXBYE
Zakończenie programu.
return 0;
}
Powyższy program wypisuje liczby od 1 do 10 (został napisany według specyfikacji w wersji 1.0).
Ten sam program można zapisać (według specyfikacji 1.2) w następujący sposób:
HAI
CAN HAS STDIO?
IM IN YR LOOP UPPIN YR VAR TIL BOTHSAEM VAR AN 10
VISIBLE SUM OF VAR AN 1
IM OUTTA YR LOOP
KTHXBYE
Program sprawdzający czy liczba jest większa od 10
Linia lolkodu
LOLCODE
Wyjaśnienie linii kodu
Porównanie do C++
1
HAICAN HAS STDIO?
Rozpoczęcie programu i zadeklarowanie biblioteki.
#include <iostream>
usingnamespacestd;
int main()
{
2
3
I HAS A VAR
Deklaracja i pobieranie zmiennej VAR.
int wartosc;
cout << "Podaj liczbę: " <<endl;
4
GIMMEH VAR
5
IZ VAR BIGGER THAN 10?
Warunek: Czy VAR jest większe niż 10?
if (wartosc>10){
//Wartość prawdziwa = 1
cout<<"Liczba"<< wartosc << "jest większa niż 10";
}
6
YARLY
Jeżeli tak:
7
BTW to jezt prafdziwe
Nie widoczny komentarz
8
VISIBLE "DUZA LICBA!"
Wypisywanie informacji, że VAR jest większa niż 10.
9
NOWAI
Jeżeli nie:
else if (wartosc>10)
else
10
BTW ta wardotz jest falzywa
Nie widoczny komentarz
{//Wartość fałszywa = 0
cout<<"Liczba"<< wartosc << "jest większa niż 10";
}
11
VISIBLE "MALA LICBA!"
Wypisywanie informacji, że VAR jest mniejsza niż 10.
12
KTHX
Zakończenie instrukcji if/else.
13
KTHXBYE
Zakończenie programu.
return 0;
}
Wsparcie
Obsługa LOLCODE została dodana do wirtualnej maszyny Parrot.
Istnieje oparty na platformie .NET kompilator LOLCODE, napisany przez Nicka Johnsona. Został wyróżniony podczas organizowanych przez Microsoft seminariów TechED 2007 Conference w Australii.