「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
(全文完)
「Pygors跨平台GUI」1:Pygors跨平台GUI应用研究的更多相关文章
- 灵感宝盒新增「线上云展会」产品,「直播观赏联动」等你共建丨RTE NG-Lab 双周报
前言 哈喽各位开发者,「RTE NG-Lab 双周报」如期而至! 近两周,我们更新了一些新的实时互动场景和产品,也举办了代码实验室的第一次线下活动,与大家一起体验了声网最新的 4.0 SDK. 灵感宝 ...
- 对于前端,「微信小程序」其实不美好
微信小程序开放公测了,9月底我曾经写过一篇 「微信小程序」来了,其中最后一句:"谢天谢地,我居然还是个前端". 这种火爆的新事物总是令人激动,感谢这个时代. 但是,当我真作为开发者 ...
- macOS安装「oh my zsh」
目前常用的 Linux 系统和 OS X 系统的默认 Shell 都是 bash,但是真正强大的 Shell 是深藏不露的 zsh, 这货绝对是马车中的跑车,跑车中的飞行车,史称『终极 Shell』, ...
- 报名|「OneAPM x DaoCloud」技术公开课:Docker性能监控!
如今,越来越多的公司开始 Docker 了,「三分之二的公司在尝试了 Docker 后最终使用了它」,也就是说 Docker 的转化率达到了 67%,同时转化时长也控制在 60 天内. 既然 Dock ...
- 企业运营对 DevOps 的「傲慢与偏见」
摘要:出于各种原因,并非所有人都信任 DevOps .有些人觉得 DevOps 只不过给开发者改善产品提供了一个途径而已,还有的人觉得 DevOps 是一堆悦耳的空头支票,甚至有人认为 DevOps ...
- 「前端开发者」如何把握住「微信小程序」这波红利?
由于前两周一直在老家处理重要事情,虽然朋友圈被「微信小程序」刷爆了,但并没有时间深入了解. 昨天回广州之后,第一件事情就是把「微信小程序」相关的文章.开发文档.设计规范全部看了一遍,基本上明白了「微信 ...
- 「花田对」CSDN程序员专场——谁来拯救技术宅!_豆瓣
「花田对」CSDN程序员专场--谁来拯救技术宅!_豆瓣 「花田对」CSDN程序员专场--谁来拯救技术宅!
- Objective-C 实用关键字详解1「面试、工作」看我就 🐒 了 ^_^.
在写项目 或 阅读别人的代码(一些优秀的源码)中,总能发现一些常见的关键字,随着编程经验的积累大部分还是知道是什么意思 的. 相信很多开发者跟我当初一样,只是基本的常用关键字定义属性会使用,但在关键字 ...
- LOJ6003 - 「网络流 24 题」魔术球
原题链接 Description 假设有根柱子,现要按下述规则在这根柱子中依次放入编号为的球. 每次只能在某根柱子的最上面放球. 在同一根柱子中,任何2个相邻球的编号之和为完全平方数. 试设计一个算法 ...
- LOJ6002 - 「网络流 24 题」最小路径覆盖
原题链接 Description 求一个DAG的最小路径覆盖,并输出一种方案. Solution 模板题啦~ Code //「网络流 24 题」最小路径覆盖 #include <cstdio&g ...
随机推荐
- 80x86汇编—分支循环程序设计
文章目录 查表法: 实现16进制数转ASCII码显示 计算AX的绝对值 判断有无实根 地址表形成多分支 从100,99,...,2,1倒序累加 输入一个字符,然后输出它的二进制数 大小写转换 大写转小 ...
- 在 ThinkPad E470 上安装 Ubuntu 16.04 无线网卡驱动
目录 文章目录 目录 安装 安装 # 查看无线网卡驱动类型,E470 一般为 RTL8821CE lspci # 安装必要工具 sudo apt-get install build-essential ...
- 大数据Hadoop集群的扩容及缩容(动态添加删除节点)
添加白名单和黑名单 白名单,表示在白名单的主机IP地址可以用来存储数据 企业中:配置白名单,可以尽量防止黑客恶意访问攻击. 配置白名单步骤如下:原文:sw-code 1)在NameNode节点的/op ...
- 一文搞懂 Spring Bean 的生命周期
一. 前言 在学习Spring框架的IOC.AOP两大功能之前,首先需要了解这两个技术的基础--Bean.在Spring框架中,Bean无处不在,IOC容器管理的对象就是各种各样的Bean.理解Bea ...
- RTMP推流FLV插入自定义SEI数据总结
一.需求 在RTMP推送的流中添加一个接口,可以添加自定义的数据(一段字节数组). 经过分析,在H264的流中可以通过SEI添加自定义数据,下面是实施的总结 二.实施 1)准备工具 RTMP推流客户端 ...
- JDBC的简单使用以及介绍
JDBC(Java DataBase Connectivity) Java 语言连接数据库 再本模块中,java提供里一组用于连接数据库的类和接口 Java 语言开发者,本身没有提供如何具体连接数据库 ...
- LTSC系统,唯一未被微软宣传过,却备受用户赞誉,CPU占用暴降
微软拥有多款操作系统,如Windows XP.Windows 7.Windows 10以及最新的Windows 11等. 其中,Windows XP和Windows 7因其稳定性和用户友好性而广受好评 ...
- 国产大模型参加高考,同写2024年高考作文,及格分(通义千问、Kimi、智谱清言、Gemini Advanced、Claude-3-Sonnet、GPT-4o)
大家好,我是章北海 今天高考,上午的语文结束,市面上又要来一场大模型参考的文章了. 我也凑凑热闹,让通义千问.Kimi.智谱清言一起来写一下高考作文. 公平起见,不加任何其他prompt,直接把题目甩 ...
- 算法金 | LSTM 原作者带队,一个强大的算法模型杀回来了
大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 时间拉回 2019 年,有「计算机界诺贝尔奖」之称图灵奖获得者公布,深度学习三巨头:Y ...
- Django路由层、视图层及模板层
Django路由层 URL配置(URLconf)就像Django所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表; 你就是以这种方式告诉Django,对于客户端发来的某个UR ...