Pike

Z Wikipedii, wolnej encyklopedii
Przejdź do nawigacji Przejdź do wyszukiwania
Ten artykuł dotyczy języka programowania. Zobacz też: inne znaczenia.
Pike
Ilustracja
Logo języka
Pojawienie się 1994[1]
Paradygmat wieloparadygmatowy (m.in. obiektowy, imperatywny)
Aktualna wersja stabilna 8.0.702
(1 listopada 2018) [±]
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 (ang.). [dostęp 2021-06-02].
  2. Pike Home (ang.). [dostęp 2021-06-02].
  3. a b Download - Pike Programming Language (ang.). [dostęp 2021-06-02].
  4. About (ang.). [dostęp 2021-06-02].
  5. Vincent Lextrait: The Programming Languages Beacon, v10.0 (ang.). styczeń 2010. [dostęp 14 marca 2010]. [zarchiwizowane z tego adresu (30 maja 2012)].