Адкрыты зыходныя тэксты мовы праграмавання Flow9

Кампанія Area9 адкрыла зыходныя тэксты функцыянальнай мовы праграмавання Плынь9, арыентаванага на стварэнне карыстацкіх інтэрфейсаў. Код на мове 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 (напісаны на haxe); адладчык з падтрымкай пратаколу gdb; сістэме прафілявання з аналізатарам памяці і адладчыкам зборшчыка смецця; JIT-кампілятар для сістэм x86_64; інтэрпрэтатар для ARM і іншых платформаў; інструментар для выбарачнай кампіляцыі ў C++ і Java найболей крытычных да прадукцыйнасці частак кода; убудовы для інтэграцыі з рэдактарамі кода Visual Code, Sublime Text, Kate і Emacs; генератар парсераў (PEG).

Крыніца: opennet.ru

Дадаць каментар