「Pygors跨平臺GUI」1:Pygors跨平臺GUI應用研究

「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

 

(全文完)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章