Pike – Wikipedia, wolna encyklopedia

Pike
Logo języka Pike
Logo języka
Pojawienie się

1994[1]

Paradygmat

wieloparadygmatowy (m.in. obiektowy, imperatywny)

Aktualna wersja stabilna

8.0.1116
(24 grudnia 2020) [±]

Twórca

Fredrik Hübinette[1]

Licencja

GNU GPL, GNU LGPL, MPL[2]

Platforma sprzętowa

IA-32, amd64, ARM, PowerPC, RISC-V[3]

Platforma systemowa

Linux, Mac OS X, Windows, SunOS[3]

Strona internetowa

Pikeinterpretowany język programowania o składni zbliżonej do języka C.

Początkowo od 1994 funkcjonował pod nazwą µLPC jako stworzona przez szwedzkiego programistę, Fredrika Hübinette reimplementacja języka LPC z bardziej permisywną licencją. Nazwa Pike została przyjęta ok. 1996 roku ze względów marketingowych. W 2002 firma Roxen, w której pracował Hübinette, przekazała prawa do języka Uniwersytetowi Linköping[1].

Zastosowania[edytuj | edytuj kod]

Sprawdza się w zastosowaniach internetowych i szybkim przetwarzaniu tekstu. Jest bazowym językiem systemu zarządzania treścią rozwijanego przez szwedzką firmę Roxen AB na bazie serwera o tej samej nazwie[4]. Stanowi podstawę środowiska serwerowego Opery Mini[5].

Charakterystyka[edytuj | edytuj kod]

Podobieństwo do C/C++ sprawia, że osoby piszące wcześniej w tych językach łatwo się go uczą.

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

Przykłady[edytuj | edytuj kod]

Przykładowy kod:

import Stdio;  int main() {historia    string name;    write("Hello, world !\nWhat's your name ?\n");    sscanf(stdin->gets(), "%s", name);    write("Hello, %s\n", name);    return 0; } 

Przykład użycia preprocesora[edytuj | edytuj kod]

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; } 

Przykład zmiennej tablicowej[edytuj | edytuj kod]

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; } 

Lambda-wyrażenia[edytuj | edytuj kod]

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."historia

Tablice asocjacyjne[edytuj | edytuj kod]

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; } 

Przypisy[edytuj | edytuj kod]

  1. a b c History. [dostęp 2021-06-02]. (ang.).
  2. Pike Home. [dostęp 2021-06-02]. (ang.).
  3. a b Download – Pike Programming Language. [dostęp 2021-06-02]. (ang.).
  4. About. [dostęp 2021-06-02]. (ang.).
  5. Vincent Lextrait: The Programming Languages Beacon, v10.0. styczeń 2010. [dostęp 2010-03-14]. [zarchiwizowane z tego adresu (30 maja 2012)]. (ang.).