Відкрито вихідні тексти мови програмування 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 для уникнення перетинів зі статистичним аналізатором Потік від компанії Facebook.

Flow9 поєднує звичний синтаксис, схожий на мову Сі (див. порівняння коду на Flow9 та JavaScript), із засобами функціонального програмування в стилі 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 рядки. При цьому цей додаток можна не тільки запускати в браузері, але й скомпілювати у форму мобільних додатків для iOS та Android.

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

Джерело: opennet.ru

Додати коментар або відгук