关于Flutter与Qt for python 的一些技术、开源、商用等问题
关于Flutter、Qt for python 以及一些技术、开源、商用问题
为什么写这篇文章?
首先我自认为我是一个非常喜欢极简主义、一次编译处处运行这些概念的人。当然,这也是我选择学习跨平台技术(Qt for pyhon与Flutter)的原因。
首先我先叠一层甲,下边的都是我的一些个人观点,不喜勿喷。
关于Flutter全栈
我是在x86-64 的Linux环境上开发,只是看过基础部分语法,运行过一些demo。demo链接
关于Flutter的语法:
首先,我认为语法角度 Python要比Dart简洁的多(当然部分小语法还是比较简洁的比如判空等)。Dart的语法门槛对于学习Java以及JS的人来说应该要比较简单。
关于技术问题
Flutter的野心特别大,要把桌面应用(Windows、Linux、MacOS)、移动应用(android、iso)、网页(Chrome、Edge引擎等)。首先,不得不佩服google不愧是大公司,财大气粗才会想着实现大一统(要是一些小企业想着就是先上桌喝口汤);其次,要兼容这么多平台,光想想就觉得工程量非常大。这就注定是一个漫长的维护周期,且必定有一些技术问题长期无法得到解决(这部分我是去知乎了解的,看的太多不一一列举了);最后,毕竟是google维护的大项目,要是持续更新维护就存在更好或完全兼容的可能性(可能国外会有一些大佬先有解决方案)。
结论: 跨平台开发可以,我在
Linux上测试web、android、Linux均可。
关于Qt for python桌面GUI程序开发
这部分我觉得还是有一定话语权,毕竟写了这么多博客!
技术问题
我觉得学习一个技术要知道这个技术:能做什么,不能做人么(什么是强项,什么是弱项),这也是比较耽误时间的(有些技术噱头太大,又没有人分享踩坑经验,只能"先干为敬"),Qt for python背靠的是Qt这颗大树,得益于Qt给Python提供的各种接口,使得Python开发桌面应用程序(Windows、Linux、MacOS)成为可能。但是Qt的学习曲线就陡、Python只是开发效率高了,该了解的还是得了解(像什么QSS、QML各种控件)。
结论:桌面程序开发(Windows、Linux、MacOS)可以试试,移动应用就是噱头。
语法
Qt的框架足够大,达到什么程度?你几乎可以将Qt抽象为一门语言。主要就是类多、轮子多但是主要还是Python语法。
文档相关
我在一个Qt for Python的技术群里看到有人这样评价flutter的文档是一堆shit(大致意思,原话记不清了),我作为一个初学者也是这样的感受。与之相比Qt for Python或者Qt(文档更全)的文档就比较人性化了,但是就我使用下来也没有特别人性化。比如: 一些冷门的部件、一些特殊的属性等,而且免费分享踩坑经验的人 少之又少,遂只能看看相关类与父类的属性、方法、信号、槽等。
结论: Qt for Python的官方文档相比Flutter的要好太多,但是一些冷门的还是需要自己踩坑。
其他
首选,Qt for Python可以学习的项目,我觉得比较少(主要是一些辅助开发项目以及一些入门教程),这部分书籍也是基础篇多(可视化爬虫和游戏以及数据分析相关,就算不错的项目了;PyQt5的项目可能更多 像什么串口连接工具)。也有可能是搞Qt的大部分不是嵌入式、就是什么音视频处理。
注意: 有些真的是噱头,就是无脑显示一个好看的界面骗点赞、关注以及马内 (有不少但我不敢说)。
学习建议
PyQt5-6``PySide5-6的书和项目都看看(最好有精力再学学C++,读者精力有限遂放弃)。买书其实也是避免重复造轮子,很少有人纯为爱发电(纯开源)。当然你也可以理解为主题阅读,更容易构建完善的知识体系。
商用
Qt for Python
社区版本是支持GPL和LGPL俩种模式的,前者享受自由就必须分享自由,后者商用可不开源
Flutter免费商用
是否要坚持当前的技术栈或学习新技术
这个问题的本质就是看兴趣和工作内容,如果需要和感兴趣那当然要学。
干一行爱一行还是干一行恨一行?
越新的技术代表有更多可能性(不过还是依赖于社区和开发者等的长期维护),旧的技术由于功能相对健全、bug维护更及时。这样看就不难理解为什么会爱和恨:
a. 爱是因为刚入门或者享受到了技术带来的乐趣。
b. 很就是到了技术栈的顶端(当然你要是一直没有补全技术债,那当我没说)
打个比方:学一门科目,刚开始考60其实是比较简单那80呢?90呢?100呢?
当能打一个80左右我觉得大部分 需求都能解决了!剩下时间可以留着了解其他技术栈。
想入行或者兴趣爱好 怎么坚持?
这里笔者不得不吐槽了,对于我们00后 什么IT技术红利也没赶上(倒是非典、新冠赶上了),与90后比工作经验我们没有,70/80后比人脉资源我们没有。我们有什么?那就是年轻,接受新鲜事物或信息能力强。其实我觉得IT也是比较吃经验的,有很多Java的大佬,什么安卓开发、后端、前端等 都是手拿把恰。也许是机构的后期服务,不过我觉得更多是直接或间接内化或形成了处理Bug与学习新技术的逻辑。
怎么坚持?我觉得还是培养成一种兴趣、爱好,做好短时间内看不到成果如马内的心理建设。
在短视频的熏陶下,我们渐渐丧失了,做成一件事情的耐心,开始变得基于求成。慢下来,坚持下来,技术会慢慢精进。
开源是一场骗局?
开源也是有好的,看是不是纯开源,不过国内外环境不一样。以下为个人观点:
国外大公司不缺钱: 先把蛋糕做大。
国内小公司缺钱: 先能吃个小蛋糕就吃个小蛋糕。
关于一些项目开源后又增加商用模式?这是一种常见的开源收益模式(比如Qt和Anconda),还有Donate捐赠或者由开源基金会支持。还有的会半开源,一部分可以免费,但是高级的需要付费(不难理解,确实是需要长期维护,是需要耗费脑力和人力的)。
这里我吐槽几句,好产品不如好营销。奔着技术去就好好擦亮眼睛,看看是不是噱头!(给你装个B,让你觉得牛13 ,但一点实用性都没有这种就f**k off)
