Logica jest przeznaczona specjalnie do pracy z danymi.
Nowa propozycja dla obsługi baz danych czyli trochę o historii
Co jakiś czas rodzi się nowy język. Firma Google ogłosiła właśnie powstanie języka Logica – na licencji open source. Jest to następca istniejącego już języka logicznego Google, Yedalog, i stanowi język programowania podobny nieco do Datalogu.
Datalog to logiczny język zapytań, który mieści się gdzieś pomiędzy Prologiem a formalną algebrą relacyjną, która stanowi podstawę SQL. Można go chyba najlepiej opisać jako dający potężne możliwości język zapytań ale jednocześnie jako starannie skrojony język logiczny. Datalog został stworzony, aby dać teoretykom baz danych możliwość korzystania z programowania logicznego, w szczególności za pomocą zapytań rekurencyjnych. Yedalog rozszerzył Datalog, aby był bardziej praktyczny, dodając obsługę pojęć, takich jak zagnieżdżone rekordy.
Co daje Logica?
Logica kompiluje się do SQL i działa w Google BigQuery. Co to znaczy? Logica tworzy wyrażenia logiczne (program) a następnie przemienia je w wyrażenie SQL, dzięki czemu można ten program wykonać w BigQuery, który jest zaawansowanym silnikiem SQL, jakżeby inaczej – od Google. Logica zawiera również eksperymentalną obsługę PostgreSQL i SQLite. Zespół Google twierdzi, że jest bardziej zwięzły i obsługuje czyste mechanizmy abstrakcji, których brakuje w SQL. Ponadto Logica zapewnia gotowe moduły i importy, może być też używana z interaktywnego notatnika Pythona oraz sprawia, że testowanie zapytań jest naturalne i łatwe.
Dużą przewagą, jaką Logica oferuje w porównaniu z SQL, jest obsługa abstrakcji. Chociaż SQL obsługuje widoki i funkcje do zapisywania i ponownego wykorzystywania podzbiorów logiki, są one ograniczone i – co chyba najgorsze - różnią się w zależności od danej implementacji SQL. Google ujmuje to tak:
Ta nieodłączna odporność na rozkład logiki na małe fragmenty prowadzi do skomplikowanych, wymyślnych, długich zapytań, kopiowanych i wklejanych fragmentów kodu i ostatecznie niemożliwych do utrzymania, nieustrukturyzowanych baz kodu SQL.
SQL
Mówi się, że dane to nowa ropa a SQL jest obecnie niczym lingua franca do pracy z danymi. Kiedy w latach 70. wynaleziono język SQL (lub Structured English Query Language, jak go po raz pierwszy nazwano), jego autorzy mogli nie wyobrażać sobie popularności, jaką osiągnie pół wieku później. Obecnie niezliczone systemy, od małych aplikacji do inteligentnych zegarków po rozwiązania informatyczne dla przedsiębiorstw, odczytują i zapisują dane za pomocą języka SQL.
Logika i agregacja
Logiczne języki programowania używają specyficznej składni, bo opartej na matematycznej logice. Nie używają więc naturalnego języka (np. angielskiego). Co więcej, Logica rozszerza klasyczną składnię programowania logiki dalej, w szczególności o agregację, stąd nazwa: Logica = logika + agregacja.
SQL działa na zestawach wierszy (relacjach). Ich odpowiednikiem w programowaniu logicznym jest predykat. To nadal de facto zestaw wierszy, ale jest logicznym warunkiem opisującym wiersze relacji. Przykładowy kod do znalezienia liczb pierwszych mniejszych niż 30 to w języku logicznym:
# Define natural numbers from 1 to 29.
N(x) :- x in Range(30);
# Define primes.
Prime(prime: x) :-
N(x),
x > 1,
~(
N(y),
y > 1,
y != x,
Mod(x, y) == 0
);
Logica umożliwia także definiowanie i ponowne wykorzystywanie podzapytań i funkcji.
Twórcy języka Logica twierdzą, że jej zastosowanie przez programistów pozwoli zapewnić czytelność zapytań SQL i generalnie wzmocni dobre praktyki inżynieryjne w tworzeniu tych zapytań.