Открыты исходные тексты языка программирования Flow9

Компания Area9 открыла исходные тексты функционального языка программирования Flow9, ориентированного на создание пользовательских интерфейсов. Код на языке Flow9 может как компилироваться в исполняемые файлы для Linux, iOS, Android, Windows и macOS, так и транслироваться в форму web-приложений на HTML5/JavaScript (WebAssembly) или в исходные тексты на языках Java, D, Lisp, ML и C++. Код компилятора открыт под лицензией GPLv2, а стандартной библиотеки под лицензией MIT.

Язык развивается с 2010 года в качестве универсальной и многоплатформенной альтернативы Adobe Flash. Flow9 позиционируется как платформа для создания современных графических интерфейсов, которая может применяться как для Web, так и для настольных и мобильных приложений. Проект используется во многих внутренних проектах Area9 и изначально именовался Flow, но перед открытием кода было решено переименовать его во Flow9 для избежания пересечений со статистическим анализатором Flow от компании Facebook.

Flow9 сочетает привычный синтаксис, похожий на язык Си, со средствами функционального программирования в стиле ML и возможностями предметно-ориентированных языков, сосредоточенных на максимально эффективном решении конкретных задач (для Flow9 это разработка интерфейсов). Flow9 рассчитан на применение строгой типизации, но при необходимости предусмотрена возможность использования динамической типизации с автоматическим определением типов, а также ссылок. Поддерживается полиморфизм (одна функция может обрабатывать данные разных типов), возможность создания подтипов, модули, массивы, хэши, лямбда-выражения.

Один и тот же код может быть собран для разных платформ, без необходимости отдельного портирования и внесения изменений в код. Одно и то же приложение может запускаться в браузере, на мобильных устройствах с сенсорными экранами и на настольных системах с клавиатурой и мышью. Предлагается готовая коллекция компонентов с элементами интерфейсов в стиле React, оформленная в соответствии с концепцией Google Material Design. Оформление можно контролировать вплоть до пиксельного уровня. Для оформления стилей можно использовать стандартный синтаксис CSS. Для отрисовки в Linux, macOS и Windows при компиляции в C++ используется бэкенд на базе Qt с OpenGL, а при компиляции в Java — JavaFX.

Благодаря применению методов функционального программирования написанный код и компоненты интерфейса легко могут заимствоваться в других проектах. Язык очень компактный и включает всего 25 ключевых слов, а описание грамматики укладывается в 255 строк вместе с комментариями. Для реализации идентичной функциональности на Flow9 требуется в 2–4 раза меньше кода, чем на HTML+CSS+JavaScript, C#, Swift или Java. Например, если для тестового приложения Tic-Tac-Toe из руководства по React потребовалось написание 200 строк кода на React/JavaScript/HTML/CSS, на Flow9 удалось уложиться в 83 строки (см. сравнение кода на Flow9 и JavaScript). При этом данное приложение можно не только запускаться в браузере, но и скомпилировать в форме мобильных приложений для iOS и Android.

Платформа включает в себя основной компилятор flowc, написанный на Flow9 и способный работать в роли сервера компиляции; эталонный компилятор flow (написан на haxe); отладчик с поддержкой протокола gdb; cистему профилирования с анализатором памяти и сборщика мусора, JIT-компилятор для систем x86_64; интерпретатор для ARM и других платформ; инструментарий для выборочной компиляции в C++ и Java наиболее критичный к производительности частей кода; плагины для интеграции с редакторами кода Visual Code, Sublime Text, Kate и Emacs; генератор парсеров (PEG).

©  OpenNet