「Pygors系列」一句話導讀:
Python、Go、Rust、C程序跨平臺GUI框架研究。
一、問題
Pygors是什麼?
Pygors是我自己創造的一個詞,就是Python、Go、Rust、C四種語言的合體。目的是爲了跨平臺GUI應用。
至於說怎麼多了個C語言,那是因爲前三種語言都與C語言有密切的關係,C語言無所不在。
爲什麼是跨平臺是Python、Go、Rust、C四種語言?
Python是熱度最高的語言,當前TIOBE排名第一;
Go是易學易用跨平臺的語言,當前TIOBE排名第七;
Rust是高質量高效率的語言,當前TIOBE排名第十九;
C是歷史與積累最深厚的語言,當前TIOBE排名第二。
Java,這麼多年來,GUI還是一個不及格的狀態,其它JVM語言如Kotlin、 Groovy、Scala等都一樣。
C#,跨平臺存在感還不如Java,這種從根子上就排斥跨平臺的語言,就不要期待了。
C++,早就迷失在泛型中不能自拔了。
Swift,如果說C#屁股總是不正,那Swift就更歪了。
Dart,分不清是語言,還是Flutter專屬語法糖。
至於JavaScript、PHP、R等等偏科的語言,就更別提了。
其它新興語言中,研究了Zig、Hare、ring-lang、nim-lang、crystal、Ponylang、vlang等語言,發現對標C語言的非常多,
特別是V語言,它把一推C語言的庫都轉成了V語言,然後打造了一個全V語言的完整工具鏈。基本可以視爲C語言的方言。
二、標準
爲什麼要選擇四種語言?
因爲每種語言的目標和應用範圍不同。
Python語言它最大的特點就是簡單易學,適應性最佳。
Go語言它最大的特點就是沒有短板,什麼都可以什麼都不拔尖。
Rust語言它最大的特點就是走專業路線,難學難用但安全高效。
C語言它最大的特點就是兼容性好,積累多。
幾種語言的側重點有什麼不同?
因爲它們的目標不同,所以發展的側重點也不同。
Python語言主打工具,它的要求是簡單易用,適應性好,比如Tkinter就比QT要好。
Go語言主打高性價比,它的要求是均衡,不求最好,但求最多。
Rust語言主打高質量,它的要求是專業,事事都要做到最優。
C語言主打基礎與積累。它的要求是可移植性好,比如Libui就被廣泛移植。
三、項目
具體有哪些項目值得關注?
Python語言
主要的關注點是適應性,依賴越少越好,特別是需要編譯的依賴。
編寫類似於項目原型或開源工具之類的應用,易安裝易使用,不挑環境。
比如Tkinter相關項目,Tkinter幾乎是所有Python環境都包含的特性,唯一的缺點就是太冷門了。
Toga
最值得關注的GUI項目是Toga,它基於原生界面,使用底層的FFI(Foreign Function Interface)調用。
https://github.com/beeware/toga
Go語言
主要的關注點是均衡,要求易學易用,沒有大的缺點或難點。
編寫短平快的互聯網應用或開源工具。
Go的GUI項目是Pygors中最少的語言,沒有像winit這種跨平臺Windowing窗口管理庫和Graphics圖形庫。
fyne
目前最值得關注的GUI項目是fyne,但它的問題也不少。
https://github.com/fyne-io/fyne
Rust語言
主要的關注點是專業,要求穩定安全,功能強大。
編寫商業化的管理應用程序或者高性能高可靠的專業應用。
利益於Winit、baseview、glazier等窗口庫和piet、wgpu等圖形庫,Rust的界面框架很繁榮。
Iced
目前最值得關注的GUI是Iced
https://github.com/iced-rs/iced
floem
背靠着新興編輯器Lapce的floem是非常有前途的框架,畢竟Lapce是最大的用戶和示例代碼
https://github.com/lapce/floem
Xilem
xilem也是不錯的選擇(Druid的繼任框架),
https://github.com/linebender/xilem
(全文完)