0

Tworzenie aplikacji webowych w Prologu

Prolog - wykorzystanie w aplikacjach webowych

Prolog jest językiem programowania, o którym pewnie wiele osób gdzieś słyszało, jednak nie miało z nim zbyt wiele do czynienia. Bardzo dobrze spisuje się w zakresie sztucznej inteligencji, chociażby poprzez realizację paradygmatu logicznego, w przeciwieństwie do większości pozostałych języków, które realizują paradygmat imperatywny. Okazuje się jednak, że za jego pomocą można też w całkiem przystępny sposób tworzyć aplikacje webowe.

Co potrafi Prolog?

Nie ma co ukrywać, że składnia języka Prolog jest odmienna od tej, którą spotykamy np. w Javie czy C#. Mimo to, umożliwia nam on wykorzystanie najważniejszych zdobyczy protokołu HTTP oraz innych języków programowania, np. sesji, serwowania plików statycznych, obsługę błędów i przekierowań, korzystanie z wzorców architektonicznych (np. MVC) czy całkiem dobre wsparcie WebSocketów (gniazd sieciowych) na porcie 80.
Prolog sam w sobie jest w stanie gromadzić dane używając pamięci RAM (nie jest do tego wymagana oddzielna baza danych), jednak nie ma żadnego problemu, żeby zrzucać te dane na dysk twardy czy nawet używać typowej bazy danych, co może przyspieszyć wykonanie niektórych zapytań (chodzi przede wszystkim o kwestię indeksów, które natywnie nie występują w Prologu). Trzeba zauważyć, że nie ma tutaj potrzeby wykorzystywania jakiegokolwiek systemu ORM, gdyż Prolog jest w stanie sam sobie „zaciągać” odpowiednie dane.

Generowanie HTMLa

Prolog korzysta z trzech różnych systemów tworzenia widoku (z warstwy MVC): simple_template (rozwiązanie podobne np. do Twiga), Prolog Web Pages (PWP) oraz html//1. Programista może wybrać ten, który mu najbardziej się podoba czy spełnia dodatkowe wymagania. Przykładowo nasz kod HTML (wraz z odpowiednią funkcją opakowującą) może być zapisany w poniższej postaci [1]:

say_hi(_Request) :-
    reply_html_page(
       [title('Howdy')],
       [h1('A Simple Web Page'),
        p('With some text')]).

Zalety i wady

Wbrew pozorom istnieją strony internetowe oparte na języku Prolog i zdaje się, że całkiem dobrze funkcjonują. Moim zdaniem można wyróżnić kilka zalet tworzenia takich aplikacji:

  • wynikowy kod jest znacznie krótszy w porównaniu np. do Javy,
  • otrzymujemy możliwość korzystania z konstrukcji języka logicznego, które są praktycznie obce w językach imperatywnych.

Niemniej trzeba też wspomnieć o wadach takiego rozwiązania:

  • Prolog jest stosunkowo kiepsko znany wśród programistów, a więc ciężko znaleźć wsparcie czy rozwiązanie nietypowego problemu (opłata dla dodatkowego programisty pewnie też będzie znacznie wyższa niż normalnie). Z tego też wynika, że wielu programistom będzie ciężko zrozumieć działanie kodu bez dodatkowego przeszkolenia,
  • małe wsparcie (np. brak dobrych wtyczek do MongoDB).

Czy warto korzystać z języka Prolog? 

Jak widać Prolog radzi sobie nawet w aplikacjach webowych, jednak wydaje mi się, że obecnie warto skupić się na językach bezpośrednio do tego przeznaczonych, np. PHP, HACK czy JavaScript, które posiadają małe, ale jednak przydatne udoskonalenia względem tego co oferuje Prolog. Jeśli jednak nasza aplikacja mocno skupia się na sztucznej inteligencji i wykorzystaniu reguł z języka Prolog to być może warto, aby cała aplikacja była oparta o ten język programowania. Wszystkim zainteresowanych kieruję do tutoriala opisującego w jaki sposób można stworzyć swoją pierwszą aplikację oraz do przykładowych kodów źródłowych na GitHubie.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *