Das Unternehmen Area9 Quelltexte einer funktionalen Programmiersprache , das sich auf die Erstellung von Benutzeroberflächen konzentriert. Code in Flow9 kann sowohl in ausführbare Dateien für Linux, iOS, Android, Windows und macOS kompiliert als auch in Form von Webanwendungen auf HTML5/JavaScript (WebAssembly) oder in Quelltexte in den Sprachen Java, D, Lisp, ML und C++ transpiliert werden. Der Compiler-Code steht unter der GPLv2-Lizenz, während die Standardbibliothek unter der MIT-Lizenz lizenziert ist.
Die Sprache entwickelt sich seit 2010 als universelle, plattformübergreifende Alternative zu Adobe Flash. Flow9 positioniert sich als Plattform zur Erstellung moderner grafischer Benutzeroberflächen, die sowohl für das Web als auch für Desktop- und mobile Anwendungen genutzt werden kann. Das Projekt wird in vielen internen Projekten von Area9 eingesetzt und wurde ursprünglich Flow genannt, bevor vor der Veröffentlichung des Codes entschieden wurde, es in Flow9 umzubenennen, um Überschneidungen mit dem statistischen Analyzer zu vermeiden. von Facebook.
Flow9 kombiniert eine vertraute Syntax, die an die Programmiersprache C erinnert (siehe Code in Flow9 und JavaScript), mit funktionalen Programmieransätzen im Stil und objektorientierte Sprachen, die sich auf die effizienteste Lösung spezifischer Aufgaben konzentrieren (für Flow9 ist dies die Entwicklung von Schnittstellen). Flow9 ist auf strenge Typisierung ausgelegt, bietet jedoch bei Bedarf die Möglichkeit, dynamische Typisierung mit automatischer Typbestimmung zu verwenden, und . Polymorphismus wird unterstützt (eine Funktion kann Daten unterschiedlicher Typen verarbeiten), mit der Möglichkeit, Subtypen, Module, Arrays, Hashes und Lambda-Ausdrücke zu erstellen.
Der gleiche Code kann für verschiedene Plattformen kompiliert werden, ohne dass eine separate Portierung oder Änderungen am Code erforderlich sind. Die gleiche Anwendung kann im Browser, auf mobilen Geräten mit Touchscreen und auf Desktop-Systemen mit Tastatur und Maus ausgeführt werden. Es wird eine umfassende Sammlung von Komponenten mit Benutzeroberflächen im React-Stil angeboten, die gemäß den Konzepten von Google Material Design gestaltet sind. Das Design kann bis auf Pixelebene kontrolliert werden. Für die Festlegung von Stilen der standardisierte CSS-Syntax verwendet werden. Für das Rendering unter Linux, macOS und Windows wird beim Kompilieren in C++ Backend auf Basis von Qt mit OpenGL, und bei der Kompilierung in Java — JavaFX.
Dank der Anwendung funktionaler Programmiermethoden können der geschriebene Code und die Komponenten der Benutzeroberfläche leicht in anderen Projekten verwendet werden. Die Sprache ist sehr kompakt und umfasst lediglich 25 Schlüsselwörter, während die Grammatikbeschreibung in 255 Zeilen inklusive Kommentare passt. Um identische Funktionalität in Flow9 zu erreichen, benötigt man 2-4 Mal weniger Code als in HTML+CSS+JavaScript, C#, Swift oder Java. Zum Beispiel benötigte die Testanwendung Tic-Tac-Toe in React 200 Zeilen Code in React/JavaScript/HTML/CSS, während Flow9 in nur 83 Zeilen auskam. Dabei kann diese Anwendung nicht nur im Browser ausgeführt werden, sondern auch in mobile Anwendungen für iOS und Android kompiliert werden. Die Plattform umfasst den Hauptcompiler flowc, der in Flow9 geschrieben ist und als Kompilierungsserver fungieren kann; der Referenzcompiler flow (geschrieben in
haxe ); Debugger mit GDB-Protokollunterstützung; Profiler-System mit Speicheranalysator und Garbage Collector-Debugger; JIT-Compiler für x86_64-Systeme; Interpreter für ARM und andere Plattformen; Werkzeugkasten zur selektiven Kompilation der leistungskritischen Codeabschnitte in C++ und Java; Plugins für die Integration mit den Code-Editoren Visual Code, Sublime Text, Kate und Emacs; Parser-Generator ().
Quelle: opennet.ru
