Pike
Z Wikipedii
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; }