我与 IT 这三十年:2007,桌面开始失去中心
上一篇写 2006 年,我说服务器开始变得不一样。S3、EC2、Hadoop、jQuery、Twitter、Java 开源,这些东西都在把软件从“装在某台机器上”推向“运行在一整套基础设施里”。到了 2007 年,另一个方向也开始松动:桌面不再是计算世界的唯一中心。1 月 9 日,乔布斯在 Macworld 上发布 iPhone。6 月 29 日,第一代 iPhone 正式开卖。今天再看那场发布会,很多细节已经被反复讲过:多点触控、全屏浏览器、iPod + 电话 + 互联网通信设备,乔布斯说今天要发布三个产品,最后告诉大家其实是一个。可是如果把它放回 2007 年的程序员现场,它真正刺痛人的地方不只是“手机更好看了”,而是它改变了软件运行的重心。在很长时间里,软件的主战场是桌面。Windows 桌面、Linux 桌面、浏览器、Delphi、MFC、GTK、Qt、企业客户端,都是围绕“用户坐在电脑前”展开的。服务器当然重要,但很多业务软件的用户界面仍然假定用户面对的是一台电脑、一块屏幕、一只鼠标、一个键盘。iPhone 出现后,这个假定开始被动摇。那一年我并没有立刻转去做移动开发。我仍在 Linux 公司体系里,做的是偏底层、偏服务器、偏管理软件的活。可也正是因为这样,2007 年在我的记忆里有两条线并行:一条是手机把计算入口往口袋里拉;另一条是我继续在 Linux 服务器和桌面管理工具之间打转。手机不是小电脑,是新的入口早期智能手机当然不是从 iPhone 才开始。Palm、BlackBerry、Symbian、Windows Mobile 都已经存在。很多技术人甚至会觉得,iPhone 一开始不开放原生应用,功能也不够“专业”。但它真正改变的不是参数表,而是人和软件的关系。手机不再只是电话加一些功能。它开始成为随身的计算入口。桌面时代的软件,用户通常是“坐下来使用”。移动时代的软件,用户是“随时拿出来用”。这两个动作差别很大。坐下来意味着时间较长、上下文较稳定、输入设备完整;拿出来意味着碎片化、位置相关、网络不稳定、注意力随时被打断。软件如果要适应这种入口,就不能只把桌面界面缩小。它需要新的交互、新的状态管理、新的同步方式、新的网络容错、新的通知机制,也需要重新理解用户行为。2007 年当然还没有今天这样成熟的 App 生态。App Store 是 2008 年才出现的。可第一代 iPhone 已经把问题摆在那里:如果用户未来更多时间不在桌面前,桌面软件的中心地位还能维持多久?对我这样还在 Linux 桌面和服务器世界里工作的人来说,这个变化有点远,又有点近。远的是,我们日常仍然在写 C++、GTK、系统服务和管理工具;近的是,所有人都能感到,计算设备的重心开始移动。And

相关新闻

go-plugin实战:手把手教你开发第一个WebAssembly插件

go-plugin实战:手把手教你开发第一个WebAssembly插件

go-plugin实战:手把手教你开发第一个WebAssembly插件 【免费下载链接】go-plugin Go Plugin System over WebAssembly 项目地址: https://gitcode.com/gh_mirrors/gop/go-plugin 在Go语言生态中,WebAssembly(Wasm)正成为插…

2026/10/14 20:29:20 阅读更多 →
DOS命令全解析:从基础操作到高级应用

DOS命令全解析:从基础操作到高级应用

1. DOS命令概述:从历史到现代应用DOS(Disk Operating System)作为早期个人计算机的主流操作系统,其命令行工具至今仍在Windows系统中保留着重要地位。我最初接触计算机时就是从DOS 6.22开始入门的,那些黑白界面的命令提…

2026/10/13 10:51:34 阅读更多 →
嵌入式深度睡眠模式实战:从原理到代码实现与调试避坑

嵌入式深度睡眠模式实战:从原理到代码实现与调试避坑

1. 项目概述与低功耗设计核心思路在电池供电的嵌入式设备里,功耗管理从来都不是一个“锦上添花”的选项,而是决定产品能否成功落地的生死线。我经历过太多项目,前期功能跑得飞起,一到功耗测试就傻眼,待机电流几十个毫安…

2026/10/13 6:33:11 阅读更多 →

最新新闻

JavaWeb学生信息管理系统课程设计全解析:从表结构到答辩技巧

JavaWeb学生信息管理系统课程设计全解析:从表结构到答辩技巧

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:38:05 阅读更多 →
权值线段树与离散化:动态中位数的工程实现

权值线段树与离散化:动态中位数的工程实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:38:05 阅读更多 →
初识Bootstrap:栅格系统、组件与工具类实战笔记

初识Bootstrap:栅格系统、组件与工具类实战笔记

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:38:05 阅读更多 →
嵌入式系统中代号字符串的逆向分析与工程治理

嵌入式系统中代号字符串的逆向分析与工程治理

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:38:05 阅读更多 →
HEVC FPGA解码器RTL工程:CABAC与IDCT模块验证指南

HEVC FPGA解码器RTL工程:CABAC与IDCT模块验证指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:38:05 阅读更多 →
KNN图像识别入门:从PCA降维到手写数字分类实战

KNN图像识别入门:从PCA降维到手写数字分类实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:37:04 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →