Компания Area9 открыла (https://flow9.org/2019/04/26/why.html) исходные тексты функционального языка программирования Flow9 (https://flow9.org), ориентированного на создание пользовательских интерфейсов. Код на языке Flow9 может как компилироваться в исполняемые файлы для Linux, iOS, Android, Windows и macOS, так и транслироваться в форму web-приложений на HTML5/JavaScript (WebAssembly) или в исходные тексты на языках Java, D, Lisp, ML и C++. Код компилятора открыт (https://github.com/area9innovation/flow9/) под лицензией GPLv2, а стандартной библиотеки под лицензией MIT.
Язык развивается с 2010 года в качестве универсальной и многоплатформенной альтернативы Adobe Flash для создания современных графических интерфейсов, которая может применяться как для Web, так и для настольных и мобильных приложений. Проект используется во многих внутренних проектах Area9 и изначально именовался Flow, но перед открытием кода было решено переименовать его во Flow9 для избежания пересечений со статистическим анализатором Flow (https://www.opennet.me/opennews/art.shtml?num=41105) от компании Facebook.
Flow9 сочетает привычный синтаксис, похожий на язык Си, со средствами функционального программирования в стиле ML (https://ru.wikipedia.org/wiki/ML) и возможностями предметно-ориентированных языков, сосредоточенных на максимально эффективном решении конкретных задач (для Flow9 это разработка интерфейсов). Flow9 рассчитан на применение строгой типизации, но при необходимости предусмотрена возможность использования динамической типизации с автоматическим определением типов, а также ссылок. Поддерживается полиморфизм (одна функция может обрабатывать данные разных типов) и возможность создания подтипов.
Один и тот же код может быть собран для разных платформ, без необходимости отдельного портирования и внесения изменений в код. Одно и то же приложение может запускаться в браузере, на мобильных устройствах с сенсорными экранами и на настольных системах с клавиатурой и мышью. Предлагается готовая коллекция компонентов с элементами интерфейсов в стиле React, оформленная в соответствии с концепцией Google Material Design. Оформление можно контролировать вплоть до пиксельного уровня.
Благодаря применению методов функционального программирования написанный код и компоненты интерфейса легко могут заимствоваться в других проектах. Язык очень компактный и включает всего 25 ключевых слов, а описание грамматики укладывается в 255 строк вместе с комментариями. Для реализации идентичной функциональности на Flow9 требуется в 2-4 раза меньше кода, чем на HTML+CSS+JavaScript,C#, Swift или Java. Например, если для тестового приложения Tic-Tac-Toe из руководства (https://reactjs.org/tutorial/tutorial.html) по React потребовалось написание 200 строк кода на React/JavaScript/HTML/CSS, на Flow9 удалось уложиться в 83 строки. При этом данное приложение можно не только запускаться в браузере, но и скомпилировать в форме мобильных приложений для iOS и Android.Платформа включает в себя основной компилятор flowc, написанный на Flow9 и способный работать в роли сервера компиляции; эталонный компилятор flow (написан на haxe (https://haxe.org/)); отладчик с поддержкой протокола gdb; cистему профилирования с анализатором памяти и сборщика мусора, JIT-компилятор для систем x86_64; интерпретатор для ARM и других платформ; инструментарий для выборочной компиляции в C++ и Java наиболее критичный к производительности частей кода; плагины для интеграции с редакторами кода Visual Code, Sublime Text, Kate и Emacs; генератор парсеров (PEG (https://en.wikipedia.org/wiki/Parsing_expression_grammar)).
URL: https://flow9.org/2019/04/26/why.html
Новость: https://www.opennet.me/opennews/art.shtml?num=50602
Еще один нескучный язык программирования?
>нескучныйС нормальной типизацией и вменяемым Си-подобным синтаксисом? Вполне может взлететь.
С десятого года разработка?
И что? Все эти 10 лет язык варился внутри компании для внутренних нужд. Только сейчас показан общественности.Или что ты хотел сказать?
>нескучный
>c Си-подобным синтаксисомВзаимоисключающие параграфы.
Электрон всё?
Да. Сообщество осознало, что электрон это дикий оверхед по памяти и CPU и ищет что-то такое же по функционалу, но более оптимальное по производительности, а то пользователи жалуються и разработка вопреки идеи, что HTML будет прям прост и удобен идет крайне меделнно, а все из-за вот этого всего Grunt, WebPack, TypeScript и т.д. короче нужно, что-то простое и выразительное... Так что ждем и смотрим на всякие поделия вроде Flow3.
Продавцы железок заметили что ты давно не обновлял свой компьютер.
Когда впервые узнал об этом языке из этой новости
4 дня как явили миру.
4 дня и сразу опенсорс?
>Язык развивается с 2010 годаСтатью не читай, комментарии пиши
Разве сюда приходят не ради комментов?
> Разве сюда приходят не ради комментов?Ну, статью следует хотя бы просмотреть, чтобы знать, что лучше подбрасывать на вентилятор.
Например:
"а юникод в консоль вам уже завезли? Или в пуссиэкзе не нужно?" - скорее для соседней новости о БСД.
"ветеранодминынадутыегуси не хочут учить новое и пойдут подметать улицы, потому что Леннарт лутьший а башпортянки ненужны" - тут тоже не очень хорошо воспримут.«... функционального языка программирования» и «web-приложений на HTML5/JavaScript (WebAssembly)» скорее предполагают такой комментарий:
> Поперхнулся смузи и чуть не вейпнул жижку с гироскутера! Вот это да!или
«похожий на язык Си, ... Язык очень компактный и включает всего 25 ключевых слов, а описание грамматики укладывается в 255 строк вместе с комментариями.»
> О, вебмакаки должны оценить! А так у нас есть няшная сишечка и поэтому оно нинужно, вот!А о том, что сабж на самом деле такое, кто это уже тыкал для каких проектов и "как оно в деле" - писать не нужно, все равно это мало кому интересно.
Благодарю за наставление, о Аноним!
>А о том, что сабж на самом деле такое, кто это уже тыкал для каких проектов и "как оно в деле" - писать не нужно, все равно это мало кому интересно.О, дело обстоит даже хуже: при попытке написать такую ересь, вполне можно нарваться на стандартное "держите нас в курсе" и большую кучу минусов.
> Статью не читай, комментарии пишиТы испортил стихи:
4 дня явили миру
4 дня и сразу опенсорс
4 дня бессонных без кефиру
4 дня, 4 дня, 4 дня, 4 дня
> 4 дня явили миру4 всадника явили миру
> Flow9:
> GPLv2
> может как компилироваться в исполняемые файлы для Linux, iOS, Android, Windows и macOS, так и транслироваться в форму web-приложений на HTML5/JavaScript (WebAssembly) или в исходные тексты на языках Java, D, Lisp, ML и C++
> рассчитан на применение строгой типизации, но при необходимости предусмотрена возможность использования динамической типизации с автоматическим определением типов
> одно и то же приложение может запускаться в браузере, на мобильных устройствах с сенсорными экранами и на настольных системах с клавиатурой и мышью
> включает всего 25 ключевых слов, а описание грамматики укладывается в 255 строк вместе с комментариями
> для реализации идентичной функциональности на Flow9 требуется в 2-4 раза меньше кода, чем на HTML+CSS+JavaScript, C#, Swift или JavaВпечатляет, однако. Кто-нибудь ещё имеет такой функционал и возможности?
Что именно?
Компилироваться во что попало много что умеет, например питон и си. Вот только пользы от этого не много, ибо получается довольно кастрированно, тк оно не для интерфейсиков создавалось.
Да и по синтаксису flow9 не похоже, что на нем это будет удобно делать.
Интерфейсики удобно на QML писать, который для этого и разрабатывался, но в веб он пока что не особо умеет. И еще вопрос должен ли уметь.
QML используют профнепригодные.
Профпригодные pfпрягают Bootstrap и ReactJS, ога.
Язык должен развиваться открыто с сообществом. Недоязычки, рожденные в недрах шараг - должны умирать.
> рожденные в недрах шараг -Си родился в недрах Bell Labs
И ему давно пора.
Скорее мы уйдём, чем Си
Смотрел недавно исходничек на С, долго чесал репу, пока не дошло, что это K&R C ;))
> долго чесал репу, пока не дошло, что это K&R CK&R досих пор встречается в коде проектов с историей и вполне понимается современными компиляторами.
А вот Пре-K&R версии вообще отпад, особенно объявления типов: https://github.com/mrquincle/ancient-c-compilers/blob/master...
> А вот Пре-K&R версии вообще отпадЛучше на main() ссылку дам. Там понятнее что это такое:
https://github.com/mrquincle/ancient-c-compilers/blob/master...
> А вот Пре-K&R версииЧто значит "Пре", если K&R создали язык?
> Что значит "Пре", если K&R создали язык?"K&R C" называется конкретная версия диалекта C описанная в их книжке от 78-го года.
Более ранние их-же версии языка, в частности от 72-го года как в ссылках, называются pre-K&R C.
Яркий пример того, как пропаганда человека-стола влияет на людей с некритическим мышлением.
Верните язык и требуйте деньги назад.
> Для реализации идентичной функциональности на Flow9 требуется в 2-4 раза меньше кода, чем на HTML+CSS+JavaScript, C#, Swift или Javaды вы што?
может просто устроим чемпионат по наименьшему количеству кода -- а потом просто весело посмеёмся над тем какое-несуразное-говнецо вышло в итоге у победителя? :-)
Победят J и APL.
Победит однострочник на перле
> Победит однострочник на перлеВряд ли ;)
http://rosettacode.org/wiki/Conway's_Game_of_Life#J
life=: (3 3 (+/ e. 3+0,4&{)@,;._3 ])@(0,0,~0,.0,.~])
APL
life←{↑1 ⍵∨.∧3 4=+/,¯1 0 1∘.⊖¯1 0 1∘.⌽⊂⍵}
Круто. Писать, очевидно, на них можно. Осталось научиться читать.
перл в этом хорош, но сомневаюсь, что он переплюнет апл.
Чето не понял где там зарыто создание интерфейсов
Да. Тупые создатели языков и приложений. Вот читаю маны по различным инструментам (проприетарным) по работе и вот поражаюсь для кого такую документацию пишут. Нужно сначала дать понять и показать что может на примерах вот тебе кнопка вот тебе раскладка, а потом уже детали расписывать. От простого к сложному и в глубину.
многабукав пишы исчо
>Flow9 сочетает привычный синтаксис, похожий на язык Сиs2 = "#" + i2s(1); // кто то видел в С нативную функцию i2s ???
a = ref 1; // кто то видел в С такой assignment ?
b = ^a; // кто то видел в С такой assignment of variable ?
a := 2; // classic C??? может все таки паскаль, a?
a := 1 + ^a; // ага практически тоже самое что a++;да этот язык даже на JavaScript не похож....
Ну так похожий, а не идентичный. Степень схожести - понятие относительное :-)
Не позорься, посмотри в словаре смысл слова «синтаксис», чудик.
поумничал... "академик"... возьми пирожок с полки, как прожуешь перечитай:"Синтаксис языка программирования — набор правил, описывающий комбинации символов алфавита, считающиеся правильно структурированной программой"
теперь будь столь любезен показать ссылочку где назначение переменной в _синтаксисе_ языка С используются "комбинации символов алфавита" - ":=" ну и в догонку что нибудь про синтаксис "^a"
> похожий на язык СиПросто вы не видели сильно непохожий на СИ синтаксис.
Тоже возьми словарь на досуге и найди слова "похожий" и "подобный", а затем вспомни или изучи что называют " Си-подобным синтаксисом"
Синтаксис похож, но семантика сильно разная.
В производных от ML языках нет переменных (в привычном для С понимании).s2 = "#" + i2s(1); // s2 по сути константа. i2s() -- integer to string -- явное приведение типов
Для переменных используются "ссылки":
a = ref 1; // Константе a присваивается адрес ячейки, где хранится значение 1.
a := 2; // в C выглядело бы как *a = 2;
Не знаю, как всё это корректно называется в Flow9, но смысл, надеюсь ясен.
Лично меня больше удивил if - else if - else вместо традиционного match. Возможно, про него "забыли" написать в примере, как раз что бы не смущать привыкших к JS.
Интересно. Надеюсь взлетит.
>од компилятора открыт под лицензией GPLv2
>при компиляции в C++ используется бэкенд на базе QtУважуха разработчикам.
А как же тогда libui?
Попробовал я сабж. Нативно собираться не захотел, Qt ему мой 5.9 не понравился, хочет 5.12. java ему тоже не java - хочет javafx, openjfx не подцепил. Казалось бы - ну тащи ты всё с собой, хоть через тот же maven/gradle, ан нет, буду просто неработать. И на закуску:
"flow --js demos/tictactoe.flow" пишет "No file given!".