Код
#статьи

В чём 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 из Эстонии.

Евгений Скворцов. Фото: National Fund for Scientific Research

Зачем отказываться от 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, который должен был похоронить кучу разных средств коммуникации, но в итоге сам тихо преставился.

Скриншот: интерфейс Google Wave

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

И да — у Logica пока очень маленькое комьюнити: вопросы можно задавать в обсуждениях на GitHub, но что это по сравнению с океаном информации и готовых рецептов по SQL?

Попробовать Logica можно на официальных ресурсах:

А пока перспективы Logica туманны, можно вложиться в проверенную технологию — на курсе «SQL-разработчик» в Skillbox вы научитесь собирать, обрабатывать и предоставлять данные для анализа, сможете визуализировать информацию и поймёте, как использовать и настраивать свои базы данных для различных задач.


Проверьте свой английский. Бесплатно ➞
Нескучные задания: small talk, поиск выдуманных слов — и не только. Подробный фидбэк от преподавателя + персональный план по повышению уровня.
Пройти тест
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована