Sumber terbuka bahasa pemrograman Flow9

Perusahaan Area9 dibuka kode sumber bahasa pemrograman fungsional Arus9, berfokus pada pembuatan antarmuka pengguna. Kode dalam bahasa Flow9 dapat dikompilasi menjadi file yang dapat dieksekusi untuk Linux, iOS, Android, Windows dan macOS, dan diterjemahkan ke dalam aplikasi web dalam HTML5/JavaScript (WebAssembly) atau teks sumber dalam Java, D, Lisp, ML dan C++. Kode kompiler terbuka dilisensikan di bawah GPLv2 dan perpustakaan standar dilisensikan di bawah lisensi MIT.

Bahasa ini telah berkembang sejak 2010 sebagai alternatif universal dan multiplatform untuk Adobe Flash. Flow9 diposisikan sebagai platform untuk membuat antarmuka grafis modern yang dapat digunakan baik untuk Web maupun aplikasi desktop dan seluler. Proyek ini digunakan di banyak proyek internal Area9 dan awalnya disebut Flow, tetapi sebelum membuka kode, diputuskan untuk mengganti namanya menjadi Flow9 untuk menghindari gangguan pada penganalisis statistik Aliran dari Facebook.

Flow9 menggabungkan sintaks familiar yang mirip dengan bahasa C (lihat perbandingan kode dalam Flow9 dan JavaScript), dengan alat pemrograman fungsional dalam gayanya ML ΠΈ peluang bahasa khusus domain yang berfokus pada penyelesaian masalah tertentu seefisien mungkin (untuk Flow9 ini adalah pengembangan antarmuka). Flow9 dirancang untuk menggunakan pengetikan yang ketat, tetapi jika perlu, dimungkinkan untuk menggunakan pengetikan dinamis dengan deteksi tipe otomatis, serta tautan. Polimorfisme didukung (satu fungsi dapat memproses data dari tipe berbeda), kemampuan untuk membuat subtipe, modul, array, hash, ekspresi lambda.

Kode yang sama dapat dikompilasi untuk platform yang berbeda, tanpa memerlukan porting terpisah dan perubahan kode. Aplikasi yang sama dapat dijalankan di browser, di perangkat seluler dengan layar sentuh, dan di sistem desktop dengan keyboard dan mouse. Kami menawarkan koleksi komponen siap pakai dengan elemen antarmuka bergaya React, dirancang sesuai dengan konsep Google Material Design. Desain dapat dikontrol hingga tingkat piksel. Untuk mengatur gaya satu bisa gunakan sintaks CSS standar. Untuk rendering di Linux, macOS dan Windows saat dikompilasi dalam C++ bekas backend berdasarkan Qt dengan OpenGL, dan ketika dikompilasi di Java - JavaFX.

Berkat penggunaan teknik pemrograman fungsional, kode tertulis dan komponen antarmuka dapat dengan mudah dipinjam dari proyek lain. Bahasanya sangat ringkas dan hanya mencakup 25 kata kunci, dan deskripsi tata bahasanya muat dalam 255 baris beserta komentar. Untuk mengimplementasikan fungsionalitas yang identik di Flow9, diperlukan kode 2-4 kali lebih sedikit dibandingkan pada HTML+CSS+JavaScript, C#, Swift atau Java. Misalnya jika untuk aplikasi tes Tic-Tac-Toe dari panduan untuk React dibutuhkan penulisan 200 baris kode di React/JavaScript/HTML/CSS, untuk Flow9 kami berhasil melakukannya dalam 83 baris. Apalagi aplikasi ini tidak hanya bisa diluncurkan di browser saja, tapi juga dikompilasi ke dalam bentuk aplikasi mobile untuk iOS dan Android.

Platform ini mencakup kompiler flowc utama, ditulis dalam Flow9 dan mampu bekerja sebagai server kompilasi; kompiler referensi aliran (ditulis dalam kaki); debugger dengan dukungan protokol gdb; sistem pembuatan profil dengan penganalisis memori dan debugger pengumpul sampah; Kompiler JIT untuk sistem x86_64; juru bahasa untuk ARM dan platform lainnya; alat untuk kompilasi selektif dalam C++ dan Java dari bagian kode yang paling penting bagi kinerja; plugin untuk integrasi dengan editor kode Visual Code, Sublime Text, Kate dan Emacs; generator pengurai (PEG).

Sumber: opennet.ru

Tambah komentar