Airscript — это язык, используемый для создания приложений в Airkit Studio. Он начался со скромных начинаний и дошел до того, что это очень функциональный язык программирования. В этом посте мы поговорим о том, почему у нас есть Airscript, что это такое и о некоторых его основах.

Для получения подробной информации и справочной информации по Airscript ознакомьтесь со справочной документацией: https://support.airkit.com/reference/reference

Эти примечания основаны на моем мнении и официально не одобрены руководством Airkit. Я оставляю за собой право ошибаться во ВСЕМ.

Как это началось

Если не считать меня здесь, меня не было рядом, когда впервые изобрели Airscript, так что кое-что из этого пришло из третьих рук. Когда запустился Airkit (тогда он еще не назывался Airkit), команда хотела, чтобы платформа была дружелюбна к людям, работающим с данными. Нашей целью было создать язык для манипулирования данными, который имел бы несколько ключевых особенностей:

  • Безопасность: мы имеем дело с конфиденциальными данными, поэтому никаких вычислений или чего-либо еще, что может вызвать проблемы.
  • Знакомый: мы хотели язык, который показался бы знакомым большому количеству наших целевых разработчиков.
  • Мощный: несмотря на потребность в безопасности, приложения Airkit работают с данными, иногда с большими объемами данных, и этот язык должен был предоставлять инструменты для просеивания данных, сортировки данных и изменения данных.

Из-за этих ключевых особенностей мы получили язык, в создании которого заложено несколько действительно отличных идей.

Безопасность

Были некоторые вопросы о том, зачем создавать новый язык вместо того, чтобы использовать Javascript в качестве нашего языка. Несмотря на то, что использование Javascript вызывает опасения по поводу привычности и простоты использования, одна из основных причин отказа от использования Javascript связана с безопасностью. Javascript имеет такие функции, как Eval(), и функции, которые изменяют существующие данные. Поскольку Airscript использует чистые функции, происходит меньше изменений существующих данных.

Кроме того, поскольку мы контролируем язык, можно разрешить определенные действия, а не другие. Airscript предназначен для изменения и поиска данных. Для получения данных мы используем потоки данных и операции с данными.

Знакомство

Одной из основных возможностей Airscript является его библиотека функций. Набор функций был разработан таким образом, чтобы он был знаком всем, кто работает с электронными таблицами. Функции охватывают все, от математических функций, функций даты и функций изменения списка. Функции чисты в том смысле, что они не изменяют переданные данные, а возвращают новую копию данных после выполнения своего действия.

В дополнение к мощности функций, структура объекта также должна быть одинаковой для многих людей. Структура объекта очень похожа на JSON. Это означает, что если вы знакомы с Javascript и веб-технологиями, объекты должны быть очень удобными.

Мощный

Помимо сверхвыразительной библиотеки функций, у Airscript также есть пара мощных секретов в рукаве. Синтаксис запроса позволяет выполнять поиск наборов данных. Поскольку можно встроить выражение запроса внутрь выражения запроса, объем поиска, который пользователь может выполнять в данных, фактически не ограничен. Вот небольшой пример

FROM 
  item 
IN 
  collection 
WHERE 
  item.score > 80 
SELECT 
  item

Хотя это похоже на SQL (который может показаться знакомым для некоторых), здесь есть некоторые тонкие отличия (например, выбор в конце).

Помимо синтаксиса запроса есть еще некоторые особенности JSONPath. Это еще один способ обработки коллекций данных и поиска нужных данных в списках и сложных объектах.

Заключение

Airscript все еще развивается. Мы все еще пишем новые функции (недавно я написал ADD_TO_DATE(), и у нас есть несколько забавных новых операций сравнения для дат в следующей версии), но Airscript очень мощный и с самого начала поддерживает реализацию наших клиентов.

Для получения дополнительной информации о спецификации посетите справочную документацию:

https://support.airkit.com/reference/reference