L'azienda Google ha presentato un nuovo linguaggio dichiarativo di programmazione logica chiamato Logica, progettato per manipolare i dati e tradurre programmi in SQL. Questo nuovo linguaggio è orientato a coloro che desiderano utilizzare la sintassi della programmazione logica nella scrittura di query per i database. Attualmente, il codice SQL risultante può essere eseguito nello storage di Google BigQuery o nei database PostgreSQL e SQLite, il cui supporto è ancora sperimentale. In futuro, si prevede di ampliare il numero di dialetti SQL supportati. Il codice del progetto è scritto in Python ed è pubblicato sotto licenza Apache 2.0.
Logica continua lo sviluppo di un altro linguaggio di elaborazione dei dati sviluppato in Google, Yedalog, e fornisce un livello di astrazione non disponibile nel SQL standard. Le query in Logica sono programmate sotto forma di un insieme di affermazioni logiche. Sono supportati moduli, operazioni di importazione e la possibilità di utilizzare Logica dall'interfaccia interattiva Jupyter Notebook. Ad esempio, per creare un riepilogo delle persone più frequentemente menzionate nelle notizie del 2020, si può utilizzare il seguente programma in Logica per interagire col database GDELT: @OrderBy(Mentions, «mentions desc»); @Limit(Mentions, 10); Mentions(person:, mentions? += 1) distinct :- gdelt-bq.gdeltv2.gkg(persons:, date:), Substr(ToString(date), 0, 4) == «2020», the_persons == Split(persons, «;»), person in the_persons; $ logica mentions.l run Mentions +—————-+—————-+ | person | mentions_count | +—————-+—————-+ | donald trump | 3077130 | | los angeles | 1078412 | | joe biden | 1054827 | | george floyd | 872919 | | boris johnson | 674786 | | barack obama | 438181 | | vladimir putin | 410587 | | bernie sanders | 387383 | | andrew cuomo | 345462 | | las vegas | 325487 | +—————-+—————-+
La scrittura di query SQL complesse porta alla necessità di scrivere catene lunghe e poco intuitive, che ostacolano il riutilizzo delle parti della query e ne rendono difficile la manutenzione. Per calcoli ripetitivi standard in SQL, è possibile utilizzare viste e funzioni, ma esse non supportano le operazioni di importazione e non offrono la flessibilità tipica dei linguaggi di alto livello (ad esempio, non è possibile passare una funzione a un'altra funzione). Logica consente di comporre programmi a partire da piccoli blocchi logici comprensibili e riutilizzabili, che possono essere testati, associati a nomi specifici e raggruppati in pacchetti disponibili per l'uso in altri progetti.
Fonte: opennet.ru
