Pike

Z Wikipedii

Skocz do: nawigacji, szukaj

Pike to interpretowany język programowania posiadający składnię podobną do tej wykorzystywanej w C. Wywodzi się bezpośrednio z języka LPC.

Głównym zastosowaniem jest pisanie CGI dla serwera WWW Roxen, chociaż możliwe jest również pisanie aplikacji interaktywnych. Najlepiej sprawdza się w aplikacjach internetowych i przetwarzaniu napisów, a podobieństwo do C powoduje, że osoby piszące wcześniej w tym języku łatwo mogą się nauczyć Pike'a.

Pike zawiera wiele zaawansowanych struktur danych, takich jak zbiory, typowane tablice asocjacyjne oraz wyrażenia lambda.


Spis treści

[edytuj] Przykłady

Przykładowy kod:

import Stdio;

int main()
{
string name;

write ("Hello, world !\nWhat's your name ?\n");
sscanf (stdin->gets(), "%s", name);
write ("Hello, %s\n", name);
return 0;
}

[edytuj] Przykład użycia preprocesora

PPP - Pike PreProcessor - rozumie dyrektywy takie jak:

  • #define - tak samo jak w C
  • #include - włączyć zawartość pliku
  • #string - włączyć zawartość pliku jako łańcuch tekstowy
  • dyrektywy kompilacji warunkowej

Plik ppp.inc:

Hello, world

Plik wykonywalny:

#define foo bar
#define i(j) import j;

i(Stdio);

int main()
{
string foo = #string "ppp.inc";
write ("%s", bar);
return 0;
}

[edytuj] Przykład zmiennej tablicowej

W przykładzie arr to tablica dowolnych rozmiarów złożona ze zmiennych typu string:

import Stdio;

int main()
{
array (string) arr;
string s;

arr = ({"He", "llo, ", "world!\n"});

foreach (arr, s)
write ("%s", s);

return 0;
}


[edytuj] Lambda-wyrażenia

Funkcje można zwracać albo tak jak w C, albo za pomocą notacji lambda.

import Stdio;

string foo ()
{
return "Ala";
}

string bar ()
{
return " ma ";
}

function f (int i)
{
return i?foo:bar;
}

function g (int i)
{
return (i ?
( lambda() {return "kota";} ):
( lambda() {return ".\n";} ));
}

int main()
{
write ("%s", f (1)());
write ("%s", f (0)());
write ("%s", g (1)());
write ("%s", g (0)());
return 0;
}

Program wypisze na standardowym wyjściu "Ala ma kota."

[edytuj] Tablice asocjacyjne

W Pike można używać tablic asocjacyjnych.

import Stdio;

int main()
{
mapping (int: string) map1;
mapping (string: string) map2;

map1 = ([100:"ala", 200:"ma", 300:"kota"]);
map2 = (["ma":"kota", "kot":"pies", "kasia":"basia"]);

write ("map1[200] = %s\n", map1[200]);
write ("map2[map1[200]] = %s\n", map2[map1[200]]);
return 0;
}


[edytuj] Linki zewnętrzne