「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应用研究的更多相关文章

  1. 灵感宝盒新增「线上云展会」产品,「直播观赏联动」等你共建丨RTE NG-Lab 双周报

    前言 哈喽各位开发者,「RTE NG-Lab 双周报」如期而至! 近两周,我们更新了一些新的实时互动场景和产品,也举办了代码实验室的第一次线下活动,与大家一起体验了声网最新的 4.0 SDK. 灵感宝 ...

  2. 对于前端,「微信小程序」其实不美好

    微信小程序开放公测了,9月底我曾经写过一篇 「微信小程序」来了,其中最后一句:"谢天谢地,我居然还是个前端". 这种火爆的新事物总是令人激动,感谢这个时代. 但是,当我真作为开发者 ...

  3. macOS安装「oh my zsh」

    目前常用的 Linux 系统和 OS X 系统的默认 Shell 都是 bash,但是真正强大的 Shell 是深藏不露的 zsh, 这货绝对是马车中的跑车,跑车中的飞行车,史称『终极 Shell』, ...

  4. 报名|「OneAPM x DaoCloud」技术公开课:Docker性能监控!

    如今,越来越多的公司开始 Docker 了,「三分之二的公司在尝试了 Docker 后最终使用了它」,也就是说 Docker 的转化率达到了 67%,同时转化时长也控制在 60 天内. 既然 Dock ...

  5. 企业运营对 DevOps 的「傲慢与偏见」

    摘要:出于各种原因,并非所有人都信任 DevOps .有些人觉得 DevOps 只不过给开发者改善产品提供了一个途径而已,还有的人觉得 DevOps 是一堆悦耳的空头支票,甚至有人认为 DevOps ...

  6. 「前端开发者」如何把握住「微信小程序」这波红利?

    由于前两周一直在老家处理重要事情,虽然朋友圈被「微信小程序」刷爆了,但并没有时间深入了解. 昨天回广州之后,第一件事情就是把「微信小程序」相关的文章.开发文档.设计规范全部看了一遍,基本上明白了「微信 ...

  7. 「花田对」CSDN程序员专场——谁来拯救技术宅!_豆瓣

    「花田对」CSDN程序员专场--谁来拯救技术宅!_豆瓣 「花田对」CSDN程序员专场--谁来拯救技术宅!

  8. Objective-C 实用关键字详解1「面试、工作」看我就 🐒 了 ^_^.

    在写项目 或 阅读别人的代码(一些优秀的源码)中,总能发现一些常见的关键字,随着编程经验的积累大部分还是知道是什么意思 的. 相信很多开发者跟我当初一样,只是基本的常用关键字定义属性会使用,但在关键字 ...

  9. LOJ6003 - 「网络流 24 题」魔术球

    原题链接 Description 假设有根柱子,现要按下述规则在这根柱子中依次放入编号为的球. 每次只能在某根柱子的最上面放球. 在同一根柱子中,任何2个相邻球的编号之和为完全平方数. 试设计一个算法 ...

  10. LOJ6002 - 「网络流 24 题」最小路径覆盖

    原题链接 Description 求一个DAG的最小路径覆盖,并输出一种方案. Solution 模板题啦~ Code //「网络流 24 题」最小路径覆盖 #include <cstdio&g ...

随机推荐

  1. Android 13 - Media框架(13)- OpenMax(一)

    关注公众号免费阅读全文,进入音视频开发技术分享群! 这一节我们将了解Android OpenMax框架,该框架了解完成之后,我们会再回过头去了解 ACodec,将 MediaCodec - ACode ...

  2. 图像处理技术OpencvSharp入门

    目录 第一部分 初识Opencv 1.C# 下Opencv库 2.安装OpenCvSharp 第二部分 OpencvSharp入门 1.加载图像文件 2.显示图像 第三部分 基础应用 1.颜色转换 2 ...

  3. 机器学习策略篇:详解可避免偏差(Avoidable bias)

    可避免偏差 如果希望学习算法能在训练集上表现良好,但有时实际上并不想做得太好.得知道人类水平的表现是怎样的,可以确切告诉算法在训练集上的表现到底应该有多好,或者有多不好,让我说明是什么意思吧. 经常使 ...

  4. zabbix笔记_005 zabbix自动发现

    自动发现 [消耗资源较大] 1.1 自动发现监控主机 自动发现的好处: 快速发现,并自动添加主机,省去管理员配置的麻烦. 管理简单高效 zabbix监控构建速度更高效 1.2 自动发现的原理 自动发现 ...

  5. Opencv笔记(12)傅里叶变换

    在之前了解的OpenCV为我们实现的图像变换,这些本质上是从图像到输出图像的映射,即输入仍是一幅图像.本章的傅里叶变换,输出数组的值在含义上和原图像的强度值大不相同,是输入图像的频域表示. cv::d ...

  6. BOM弹窗 滚动条

     //   window.alert('弹出内容')  警告框         //   window.prompt('弹出内容') 输入框         //      以 字符串 形式 存储输入 ...

  7. php分组查询和聚合函数 数据显示的顺序

      // 分组查询和聚合函数         // 分组查询 : 将指定字段中的数据,按照不同的具体数值,进行分组         //           数据相同的分在一个分组中          ...

  8. java小记-scanner

    不想打字也是我的罪过吗? 作业2: 老师的代码: 结果 我的代码看起来冗余: 想说的: 我的本意是以为scanner只能记录一个数,然后就想着输入两次就能算两个数了,但没想到人家只是让你输就完了.不要 ...

  9. JavaScript实现防抖节流函数

    review 防抖函数 防抖函数一般是短时间内多次触发,但是只有最后一次触发结束后的delay秒内会去执行相对应的处理函数. 相当于一个赛道里面一次只能跑一辆赛车,如果此时已经有一辆赛车在跑道里面跑, ...

  10. 学习ThreeJS

    创建第一个应用 使用Three JS进行编程的时候,都是在调用new Three().XXX 来实现方法,让我们先根据官方文档创建一个demo https://threejs.org/docs/ind ...