Język programowania Flow9 o otwartym kodzie źródłowym

Firma Area9 otwierany kody źródłowe funkcjonalnego języka programowania Flow9, skupiający się na tworzeniu interfejsów użytkownika. Kod w języku Flow9 można skompilować do plików wykonywalnych dla systemów Linux, iOS, Android, Windows i macOS oraz przetłumaczyć na aplikacje internetowe w HTML5/JavaScript (WebAssembly) lub teksty źródłowe w Java, D, Lisp, ML i C++. Kod kompilatora otwarty jest objęta licencją GPLv2, a biblioteka standardowa jest objęta licencją MIT.

Język rozwija się od 2010 roku jako uniwersalna i wieloplatformowa alternatywa dla Adobe Flash. Flow9 pozycjonowany jest jako platforma do tworzenia nowoczesnych interfejsów graficznych, które można wykorzystać zarówno w aplikacjach webowych, jak i desktopowych oraz mobilnych. Projekt jest używany w wielu wewnętrznych projektach Area9 i pierwotnie nosił nazwę Flow, jednak przed otwarciem kodu zdecydowano się zmienić jego nazwę na Flow9, aby uniknąć zakłóceń w analizatorze statystycznym Przepływ z Facebooka.

Flow9 łączy w sobie znaną składnię podobną do języka C (patrz porównanie kod w Flow9 i JavaScript), z funkcjonalnymi narzędziami programistycznymi w stylu ML и możliwości języki specyficzne dla domeny, skupiające się na jak najskuteczniejszym rozwiązywaniu konkretnych problemów (w przypadku Flow9 jest to tworzenie interfejsu). Flow9 został zaprojektowany do stosowania ścisłego typowania, ale w razie potrzeby możliwe jest użycie dynamicznego pisania z automatycznym wykrywaniem typu, a także linki. Obsługiwany jest polimorfizm (jedna funkcja może przetwarzać dane różnych typów), możliwość tworzenia podtypów, modułów, tablic, skrótów, wyrażeń lambda.

Ten sam kod można skompilować na różne platformy, bez konieczności osobnego przenoszenia i zmian w kodzie. Ta sama aplikacja może działać w przeglądarce, na urządzeniach mobilnych z ekranami dotykowymi oraz na komputerach stacjonarnych z klawiaturą i myszą. Oferujemy gotową kolekcję komponentów z elementami interfejsu w stylu React, zaprojektowanych zgodnie z koncepcją Google Material Design. Projektem można sterować aż do poziomu pikseli. Aby ustawić style można użyj standardowej składni CSS. Do renderowania w systemach Linux, macOS i Windows po skompilowaniu w języku C++ używany backend oparty na Qt z OpenGL, a przy kompilacji w Javie - JavaFX.

Dzięki zastosowaniu technik programowania funkcjonalnego napisany kod i komponenty interfejsu można łatwo zapożyczać z innych projektów. Język jest bardzo zwarty i zawiera tylko 25 słów kluczowych, a opis gramatyczny mieści się w 255 linijkach wraz z komentarzami. Aby zaimplementować identyczną funkcjonalność w Flow9, potrzeba 2-4 razy mniej kodu niż w przypadku HTML+CSS+JavaScript, C#, Swift czy Java. Na przykład, jeśli dla aplikacji testowej Kółko i krzyżyk z przewodnicy w przypadku Reacta napisanie 200 linii kodu w React/JavaScript/HTML/CSS wymagało napisania 9 linii, w przypadku Flow83 udało nam się to zrobić w XNUMX liniach. Co więcej, aplikację tę można nie tylko uruchomić w przeglądarce, ale także skompilować do postaci aplikacji mobilnych na iOS i Androida.

Platforma zawiera główny kompilator flowc, napisany w Flow9 i mogący pracować jako serwer kompilacji; kompilator referencyjny przepływu (napisany w golonka); debugger z obsługą protokołu gdb; system profilowania z analizatorem pamięci i debugerem zbierającym śmieci; Kompilator JIT dla systemów x86_64; interpreter dla ARM i innych platform; narzędzia do selektywnej kompilacji w C++ i Javie najbardziej krytycznych pod względem wydajności części kodu; wtyczki do integracji z edytorami kodu Visual Code, Sublime Text, Kate i Emacs; generator parsera (PEG).

Źródło: opennet.ru

Dodaj komentarz