A empresa Google apresentou uma nova linguagem declarativa de programação lógica chamada Logica, destinada à manipulação de dados e que traduz programas para a linguagem SQL. A nova linguagem é voltada para quem deseja usar a sintaxe de programação lógica ao escrever consultas a bancos de dados. Atualmente, o código SQL resultante pode ser executado no armazenamento Google BigQuery ou em bancos de dados PostgreSQL e SQLite, cuja compatibilidade ainda é experimental. No futuro, está previsto ampliar o número de dialetos SQL suportados. O código do projeto é escrito em Python e publicado sob a licença Apache 2.0.
Logica dá continuidade ao desenvolvimento de outra linguagem de processamento de dados criada no Google, o Yedalog, e oferece um nível de abstração que não está disponível no SQL padrão. As consultas em Logica são programadas na forma de um conjunto de afirmações lógicas. Suportam módulos, operações de importação e a possibilidade de utilizar Logica a partir do console interativo Jupyter Notebook. Por exemplo, para gerar um resumo das pessoas mais mencionadas nas notícias de 2020, pode-se usar o seguinte programa em Logica para consultar o banco de dados 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 | +—————-+—————-+
A elaboração de consultas complexas em SQL resulta na necessidade de criar longas cadeias de código, que não são intuitivas e dificultam a reutilização de partes da consulta e a manutenção. Para cálculos repetitivos típicos em SQL, é possível usar visões e funções, mas elas não suportam operações de importação e não oferecem a flexibilidade característica das linguagens de alto nível (por exemplo, não é possível passar uma função para outra função). O Logica permite compor programas a partir de pequenos blocos lógicos, claros e acessíveis para reutilização, que podem ser testados, associados a nomes específicos e agrupados em pacotes, disponíveis para uso em outros projetos.
Fonte: opennet.ru
