《PyQt5桌面应用开发》结语
这个系列从五月初期写到现在,一共写了21篇,基本上把我个人感觉里面PyQt5中比较有意思的内容都涉及到了。总的来说,一大部分是我很满意的,也是我在使用PyQt5中感觉到的痛点与花费了很常见去看文档的部分。也有不满意的地方,那就是所有的都写得很浅很浅。只能是做到了每一篇都是言之有物,有一些个人的看法才是我最满意的地方,毕竟PyQt5是一个比较热门的小方向,也是学习编程的人最容易掉进去的坑(GUI开发)。
总结一下,我比较满意的内容:
- 需求分析:需求分析实际上贯穿了这个系列的21篇文章,因为写文章些什么内容,基本上是需求分析的结果;
- 需求分析:开发程序的需求分析是程序是否取得成功的最最核心的内容,其次是调库,最后才是学习语言;
- 需求分析:有用性和可靠性是GUI或者任何类型的开发中最重要的部分。
除了需求分析,这个系列并没有提供更多有价值的内容。只要掌握了需求分析的重要性并且在实际开发中持续的进行需求分析的工作,每一个初级程序员都会慢慢编程高级程序员。而那些路越来越窄,开始比较编程语言,开始挑剔编程语言的实际实现的人,实际上都输在需求分析上。实际软件开发项目,并不一定需要绝顶聪明的人,也不一定需要组织度、自控能力非常强的人,仅仅需要把需求始终放在第一位的、能够持之以恒投入的农民工。
实际的语言、库,我感觉能够看英语的资料查阅API是最好的,即使英语不行,中文的书籍和网站也能够提供很多有借鉴意义的内容。
下面是这个系列的目录:
- PyQt5桌面应用开发(1):需求分析
- PyQt5桌面应用开发(2):事件循环
- PyQt5桌面应用开发(3):并行设计
- PyQt5桌面应用开发(4):界面设计
- PyQt5桌面应用开发(5):对话框
- PyQt5桌面应用开发(6):文件对话框
- PyQt5桌面应用开发(7):文本编辑+语法高亮与行号
- PyQt5桌面应用开发(8):从QInputDialog转进到函数参数传递
- PyQt5桌面应用开发(9):经典布局QMainWindow
- PyQt5桌面应用开发(10):界面布局基本支持
- PyQt5桌面应用开发(11):摸鱼也要讲基本法,两个字,16
- PyQt5桌面应用开发(12):QFile与线程安全
- PyQt5桌面应用开发(13):QGraphicsView框架
- PyQt5桌面应用开发(14):数据库+ModelView+QCharts
- PyQt5桌面应用开发(15):界面动画
- PyQt5桌面应用开发(16):定制化控件-QPainter绘图
- PyQt5桌面应用开发(17):类结构+QWebEngineView
- PyQt5桌面应用开发(18):自定义控件界面设计与实现
- PyQt5桌面应用开发(19):事件过滤器
- PyQt5桌面应用开发(20):界面设计结果自动测试(一)
- PyQt5桌面应用开发(21):界面设计结果自动测试(二)
最后一点碎碎念
界面设计(UI)或者更加新潮的概念体验设计(UX),实际上对于人类来说是一个很古老的概念。人类开始使用工具就开始不由自主地塑造工具的个人体验,改进工具的有用性、易用性。在这个过程中有一对很有张力的概念始终扮演着核心的元素。
- 个性化
- 标准化
标准化是一个很奢侈的概念,个性化是一个更奢侈的概念。或者反过来说,同样成立。
对于软件来说,标准化的实施是最为简单的,每一份拷贝都可以是一样的,带来同等的体验;对于基于网络服务的软件体系而言,体验更加标准,所有人都通过html+css的窗口体验同一组软件组件提供的计算和信息服务。但是软件设计过程的标准化,又是高度艰难的。软件的需求实际上是一个非常不确定的概念,人类的语言有多么不确定,软件需求就有多么不确定,在ChatGPT之前,计算机在人类自然语言的理解上,简直是不值一提。哪怕是ChatGPT,在实际的软件需求分析上,也只能提供很少的帮助(极度模板化的部分)。在自然语言的难度至上,软件需求还有一个更加难以标准化处理的玩意,那就是人本身,软件的用户有些时候是软件系统本身,有些时候必须面对人。只需要看看软件培训行业每年有多少的投入就知道这个问题了,更别提还有大量自学,大量开源的内容贡献者进行软件培训。
对于软件而言,体验个人化始终是一个很好的卖点,是字面意义上的卖点。Google、百度,各个电商平台的推荐算法,那都是试图提供更加个性化的软件使用体验。更不用提针对特定行业的那些软件,比如对该行业的软件使用人员提供更加个性化的界面,这个个性化不是针对一个人,而是针对一群人、一类人。那么,在通用的框架,例如Qt,基础上要进行什么样的定制呢?比如测量和控制的上位机软件,通常会定制一些模拟实际物理仪器的界面元素。
软件开发是在标准化和个性化中寻求一个平衡点。反复开展需求分析是一个必然的过程;反复折腾软件框架和库是另一个必然的过程。因此软件开发要想走得远,必须着力于三个领域:
- 需求分析:应用领域分析和软件需求
- 库的选择:了解各类库提供的标准化功能
- 库的定制:库提供的定制与二次开发能力
其中,需求分析的人才是最为稀缺的,但是能够在一定程度上对后面两点有意识的涉猎并跟第一点很好结合的人才,同样稀缺。至于那些开发库的高端人才,实际上我们国家的软件开发也逐步深度卷到这里面,我觉得迟早这帮人也能更好挣到钱。