本篇要回答的问题:从 PC 到移动再到 IoT,桌面平台一路怎么演进?跨平台工具的下一个机会在哪?以及一个容易被忽视的趋势——儿童编程教育,和桌面开发的终局有什么关系?
上一讲我们给了跨平台与 Web 开发的具体架构建议。本讲原计划用实战例子收尾"桌面软件开发"一章,但因准备内容较多而延后,先谈作者个人对桌面开发未来趋势的判断。
桌面平台的演进与未来
谈未来先看过去。一条主线:跨平台方案不断被意料之外的对手颠覆。
| 时期 | 主流平台 | 跨平台方案 | 结局 |
|---|---|---|---|
| PC | Windows/macOS/Linux | QT、wxWidgets | 败给意外对手——PC 浏览器(顺带干成了跨平台 + 软件服务化) |
| 移动初期 | 各方押注 WinCE / Symbian | —— | 赢家是谁都没预料的 Android 和 iOS |
| 当下 | Android/iOS + 手表/电视/汽车/IoT | React-Native、Flutter、SwiftUI… | 未定 |
关键洞见:浏览器并不是为跨平台而来,却顺手干成了跨平台——因为浏览器厂商虽多却遵循相同规范,“支持浏览器就支持了所有 PC 用户”,这太诱人。
作者倾向按交互方式给操作系统分类来预判未来:
| 市场 | 主流交互 | 补充交互 |
|---|---|---|
| 服务端 | 经典命令行(长期维持简约) | —— |
| 桌面/笔记本 | 鼠标指针(精确位置)+ 键盘 | 部分机型多点触摸 |
| 移动 | 多点触摸 + 键盘 | 语音助手渗透 |
| IoT | 语音助手为主(Amazon/Google 领先,Siri 落后) | 部分设备引入多点触摸 |
IoT 设备会两极分化:一类专用设备最大诉求是裁剪能力、AppStore 非重点;一类通用设备受语音技术限制开放性差,有机会就带触摸屏退化成移动系统设备。
跨平台工具的机会评估:
| 方案 | 思路 | 作者评价 |
|---|---|---|
| React-Native | 基于 Web 技术,横跨 PC/iOS/Android,“Learn once, write anywhere” | 声明式探索方向不错 |
| QT | 已支持几乎所有桌面 OS | 但没意识到兼容 Web 的重要性,错失机会 |
| Flutter | 把 OS 要求最小化,界面系统完全在用户态自建(类比 Go 重写进程/IO 子系统) | 谨慎态度:交互范式差异 + 软件体积是软肋 |
| SwiftUI | 苹果出品,极简体验 | 或代表跨平台开发的可能方向,值得关注 |
关键判断:今天的跨平台重点是跨 Android/iOS/Web/小程序/PWA;PC 桌面优先级反而可缓(Web 能顶)。Flutter 的体积问题尤其要命——客户端尺寸对新用户转化率至关重要(微信小程序最早限 4M,后放宽到 8M),这和不在意尺寸的 Go(服务端)环境完全不同。作者更倾向尺寸轻盈的跨平台工具。
关键洞见:跨平台又一次印证了"每一次统一的努力都变成新的分裂"——手机系统之争刚有眉目,移动浏览器(小程序 vs PWA)之争又起,统一的 Web 分裂成多个技术阵营。
儿童编程教育
一个容易被忽视但与桌面开发密切相关的趋势:
| 语言/工具 | 出品方 | 备注 |
|---|---|---|
| Logo(海龟作图) | —— | 儿童编程鼻祖 |
| Scratch | MIT,2007 | 已到 3.0,越来越活跃;3.0 基于 Blockly 源码改造,Google 协同开发 |
| Blockly | 缺社区基础,不温不火 | |
| App Inventor | Google(基于 Blockly) | 教儿童学 Android 开发 |
| Swift Playgrounds | 苹果 | Swift 启蒙教程,面向儿童 |
关键判断:桌面开发的终极目标,是让儿童可以轻松编写出生产级的应用。这不是痴人说梦——iOS 出来前没人信能造出三岁小孩都会用的电脑,但苹果做到了。桌面开发技术的演进与儿童编程教育相向而行,终将汇聚于一点。
总结
桌面平台史是一部"跨平台方案不断被意外对手颠覆"的历史:PC 浏览器灭了 QT/wxWidgets,Android/iOS 击败 WinCE/Symbian,如今终端多元化(PC/移动/IoT)让跨平台需求达到历史最高点。作者押注轻量 + 声明式的跨平台工具,并指出桌面开发的终局是与儿童编程教育合流。
先把"是什么"回答清楚
| 概念 | 一句话说明 |
|---|---|
| 平台演进主线 | 跨平台方案总被意料外的对手颠覆(浏览器灭 QT,Android/iOS 灭 WinCE/Symbian) |
| 按交互方式分类 | 服务端命令行 / 桌面鼠标+键盘 / 移动触摸+键盘 / IoT 语音 |
| QT 的错失 | 支持了所有桌面 OS,却没兼容 Web/小程序/PWA |
| Flutter 软肋 | 交互范式差异 + 软件体积(影响新用户转化) |
| 儿童编程合流 | Scratch/Blockly/Swift Playgrounds,终局是让儿童写生产级应用 |
一句话速记
跨平台方案总被意外对手颠覆;今天重点是跨 Android/iOS/Web/小程序/PWA,押注轻量+声明式工具;桌面开发的终局,是与儿童编程教育合流——让八岁孩子做出生产级应用。
几条值得记住的判断
- 浏览器不是为跨平台而来,却顺手干成了跨平台——遵循统一规范的力量。
- 软件体积是 Flutter 类用户态自建方案的致命软肋,直接影响转化率。
- QT 错在没意识到兼容 Web 对跨平台工具的重要性。
思考题
作者断言"桌面开发的终极目标是让儿童轻松写出生产级应用"。如果这个终局成立,今天我们做架构时强调的"厚 Model 层、正交解耦",哪些会被声明式/可视化编程进一步抽象掉,哪些反而会变得更重要?
