В чём Logica: зачем Google сделала новый язык программирования
12 апреля 2021 года инженеры Google объявили о разработке нового языка программирования — Logica. Разбираемся, кому и зачем он нужен.


Абрикос Абрикосовый для Skillbox Media
Google уже мало Go — подавай ещё один собственный язык программирования с блэкджеком и всеми полагающимися штуками (мы про комьюнити разработчиков, конечно). Поэтому недавно техногигант анонсировал язык программирования Logica. Посмотрим, насколько это логичный шаг для Google и какие перспективы у нового языка.
Что такое Logica
Logica — это декларативный логический язык программирования из семьи Datalog, подмножества Prolog. Его синтаксис восходит к Yedalog (кстати, тоже разработка Google), а в названии языка соединены два понятия — «логика» и «агрегация» (logic + aggregation), потому что запросы в Logica формулируются как логические выражения.
В основе семейства Datalog и реляционных баз данных лежит одна и та же концепция: данные — это набор некоторых отношений, а работа с данными — это последовательность операций с этими отношениями. Однако они по-разному описывают эти операции: Datalog использует математический синтаксис, а SQL — синтаксис естественного языка (английского).
Logica не оторван от SQL: любая логическая программа сначала переводится в SQL-выражение, которое можно запустить на BigQuery — правда, для этого понадобится Google Cloud Project. А вот чтобы запускать Logica-программы у себя на компьютере, придётся установить Python3.
Авторы языка — Евгений Скворцов, математик, выпускник Уральского госуниверситета (2003) и канадского Университета им. Саймона Фрейзера, а ныне сотрудник Google, и Константин Третьяков — data scientist из Эстонии.

Зачем отказываться от SQL
Авторы позиционируют Logica как простую и удобную альтернативу старичку SQL — в молодом языке объединились ясность логического программирования и мощь систем вроде BigQuery. А сделали его в основном для того, чтобы писать запросы к дедуктивным базам данных (см. статью на «Википедии»).
Но зачем вообще менять проверенный годами и ставший стандартом для БД SQL на что-то новое? Причина простая: в SQL запросы состоят из огромного количества английских слов — в итоге сложный запрос может состоять из сотен строк кода, в которых даже чёрт ногу сломит, а у программиста потекут слёзы. Представьте, что вместо напечатанной сложной математической формулы вы пытаетесь понять какую-то математическую операцию на слух — когда сосед вам рассказывает, что и в какой последовательности надо сделать. Кроме того, SQL слабоват в работе с абстракциями.
А вот на Logica легко написать компактный, понятный и логичный (а как иначе!) код, который можно переиспользовать, собирать в пакеты и импортировать в другие программы. То есть даже если вы написали свой запрос несколько лет назад, то сможете быстро его прочитать и разобраться, что к чему. Фактически Logica привносит в запросы лучшие инженерные практики, характерные для языков вроде Python, C++ или Java.
Плюсы Logica очевидны даже на примере «Hello, world!». Так выглядит программа на Logica (это вместе с установкой языка в Collaboratory) — за решёткой спрятаны комментарии к коду.
# Install.
python3 -m pip install logica
# Run:
# To see usage message.
python3 -m logica
# To print SQL for HelloWorld program.
python3 -m logica — print Greet 'Greet(greeting: "Hello world!")'
А вот та же программа, только в профиль — то есть на SQL. Logica явно выигрывает и в читаемости, и в лаконичности кода.
CREATE TABLE helloworld (phrase TEXT);
.tables
CREATE TABLE helloworld (phrase TEXT);
INSERT INTO helloworld VALUES ("Hello, World!");
SELECT COUNT(*) FROM helloworld;
SELECT * FROM helloworld WHERE phrase = "Hello, World!";
Однако язык Logica удобен не только стилем кода — программы на нём компилируются в SQL. А значит, разработчик на выходе получает стандартный код, который работает где угодно, и при этом может использовать объединённую мощь движка Google BigQuery вместе с ясностью и удобством синтаксиса логического языка программирования.
Интеграция с Google Colab позволяет запускать один или несколько запросов и сохранять результаты в переменные Python, что помогает точнее выразить логику получения данных и сфокусироваться на коде Python и том, что Python делает лучше всего (визуализация, машинное обучение и тому подобное).
Если в C, Python, C++, Java основный структурный элемент — это функции, а в SQL — запрос, то Logica работает с предикатами (predicate), то есть инструкциями, которые содержат в себе переменные.
В кого целится Google
Google грамотно просчитала потенциальный рынок нового языка. Целевая аудитория Logica — все, кто работает с SQL. А это прежде всего инженеры и специалисты по обработке данных.
Согласно исследованиям JetBrains, в 2015 году в мире числилось семь миллионов SQL-разработчиков. Однако к 2021 году общее число программистов выросло минимум на треть — так что и SQL-разработчиков должно быть уже порядка 9–10 миллионов. Амбициозная цель для нового языка.
Вот кому авторы Logica рекомендуют попробовать свой язык как можно быстрее:
- Тем, кто уже использует логическое программирование, но сталкивается с ограничениями вычислительной мощности.
- Тем, кто работает с SQL, но недоволен лаконичностью и читабельностью кода.
- Тем, кто хочет изучить логическое программирование и задействовать его в анализе больших данных.
Перспективы Logica
Перспективы любого нового языка программирования сложно прогнозировать. То же и с Logica, но мы попробуем мыслить логически. С одной стороны, у Logica есть поддержка гиганта индустрии — и это явно большой плюс (хотя на GitHub проекта сказано, что официально Google не поддерживает продукт). С другой стороны, у Google немало проектов, которые не выстрелили — вспомним хотя бы громкий фейл с суперинновационным Google Wave, который должен был похоронить кучу разных средств коммуникации, но в итоге сам тихо преставился.

Сейчас Logica уже умеет работать с Google BigQuery, PostgreSQL и SQLite, а разработчики обещают расширить этот список. Но базы данных — довольно консервативная область. Корпораты очень ценят надёжность в работе с информацией, а любые изменения и нововведения ставят её под сомнение. К тому же среди пользователей SQL много непрограммистов — а им не с руки переучиваться и вкатываться в настоящий язык программирования. Ведь зарплата и так капает.
И да — у Logica пока очень маленькое комьюнити: вопросы можно задавать в обсуждениях на GitHub, но что это по сравнению с океаном информации и готовых рецептов по SQL?
Попробовать Logica можно на официальных ресурсах:
А пока перспективы Logica туманны, можно вложиться в проверенную технологию — на курсе «SQL-разработчик» в Skillbox вы научитесь собирать, обрабатывать и предоставлять данные для анализа, сможете визуализировать информацию и поймёте, как использовать и настраивать свои базы данных для различных задач.