Pike
Z Wikipedii
Pike to interpretowany język programowania z wyglądu bardzo podobny do C. 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.
Jest on szybszy niż większość języków skryptowych.
Pike zawiera wiele zaawansowanych struktur danych, takich jak zbiory, typowane tablice asocjacyjne oraz wyrażenia lambda.
Pewne cechy wzorowane na C, a rzadko spotykane w innych językach:
- preprocesor, choć nie jest on używany do włączania nagłówków
- funkcje grupy printf i scanf, jednak z pewnymi modyfikacjami
- główna procedura to main(), która zwraca wartość typu int.
Strona domowa projektu: http://pike.roxen.com/
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; }
Spis treści |
[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; }
Pisze Ala ma kota.
[edytuj] Tablice asocjacyjne
W Pike można używać tablic asocjacyjnych, przy czym należy im przypisać typ zarówno klucza jak i wartości.
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; }