从 1946 到 2022

IT 发展历史实验室

沿时间线拆解计算机、网络、Web、云和 AI。每个历史产品都可以操作,也可以修改教学源码观察结果。

ENIAC:电子计算走进现实

一台占满房间的机器,用电子脉冲代替机械齿轮,证明通用电子计算可以真正工作。

当时要解决什么

火炮射表需要反复求解复杂轨迹。人工计算速度太慢,机械计算器也无法及时完成大量任务。

为什么重要

ENIAC 让电子数字计算从实验设想变成大型工程,也推动了程序、存储和计算机产业的后续发展。

当时的前沿技术

真空管

使用电子开关快速表示和处理数字,但体积大、耗电高、发热明显。

十进制累加器

机器内部以十进制单元保存数字,通过电子脉冲完成加法。

插线编程

操作员重新连接电缆和开关,改变数据在各功能单元间的流向。

代表性架构

  1. 输入参数开关和读卡设备向机器提供初始数字。
  2. 功能表控制运算步骤和常量,类似早期程序指令。
  3. 累加器多个电子单元并行保存数字并执行加减。
  4. 输出结果通过打孔卡或指示设备交给操作员。

继续阅读

Tennis for Two:计算机第一次变得好玩

实验室把模拟计算机和示波器组合成双人网球,让参观者第一次直观感到计算机器也能娱乐。

当时要解决什么

早期计算设备主要服务科研和军事,普通人很难理解它们与自己的关系,更谈不上直接参与。

为什么重要

它展示了实时输入、物理模拟和图形反馈可以组成互动体验,是电子游戏史的重要早期节点。

当时的前沿技术

模拟计算

用连续电压表示球的位置、速度和重力,不使用今天常见的数字帧缓冲。

示波器

电子束在屏幕上绘制球场和亮点,形成即时图像。

控制器

玩家通过旋钮和按钮改变击球角度与时机。

代表性架构

  1. 玩家输入两个控制器提供击球方向和触发信号。
  2. 模拟电路积分器持续计算球的水平与垂直运动。
  3. 碰撞判断继电器和电路处理球网、地面与边界。
  4. 示波器显示电压信号驱动电子束画出球场和球。

继续阅读

Spacewar!:实时图形程序登场

MIT 的程序员在 PDP-1 上创造双人太空对战,用实时运算、矢量显示和自制控制器展示机器能力。

当时要解决什么

早期计算机演示往往只有数字和文字,难以展现实时图形、复杂物理和多人输入的综合能力。

为什么重要

Spacewar! 传播到许多研究机构,影响了游戏文化、实时程序设计和后来的商业电子游戏。

当时的前沿技术

PDP-1 汇编

程序直接控制有限的处理器、内存和输入输出设备。

矢量显示

电子束按坐标直接绘制亮点和线条,不依赖像素网格。

实时循环

程序持续读取输入、更新物理状态并重绘画面。

代表性架构

  1. 控制器两名玩家分别发送旋转、推进和发射命令。
  2. 游戏状态内存保存飞船位置、速度、方向和炮弹。
  3. 物理更新处理惯性、引力、碰撞和弹道。
  4. 矢量输出PDP-1 把计算后的点和线发送给显示器。

继续阅读

ARPANET:让远方的计算机交换消息

ARPANET 把不同地点的主机连接起来,使用分组交换和 IMP 节点,为现代互联网奠定重要基础。

当时要解决什么

昂贵的计算资源分散在各研究机构,不同机器难以远程共享数据和能力,专线连接也缺少弹性。

为什么重要

分组交换、网络节点和开放协议逐步把孤立计算机变成网络,第一次主机消息也由此传出。

当时的前沿技术

分组交换

长消息被拆成较小分组,各自传输并在终点重新组合。

IMP

接口消息处理机位于主机和网络之间,承担类似早期路由器的工作。

主机协议

不同计算机需要约定消息格式和通信步骤才能互相理解。

代表性架构

  1. UCLA 主机用户在本地主机输入远程登录消息。
  2. UCLA IMP把主机消息整理为适合网络传输的分组。
  3. 通信线路分组沿网络链路逐段传递。
  4. SRI IMP 与主机终点 IMP 重组消息并交给远端主机。

继续阅读

UNIX:用小工具组合复杂任务

UNIX 把进程、文件和命令组合成简洁系统,随后借助 C 语言获得跨硬件移植能力。

当时要解决什么

大型操作系统复杂昂贵,开发者需要一个能在较小计算机上运行、容易理解和扩展的工作环境。

为什么重要

文件、进程、Shell、管道和可移植 C 代码影响了 Linux、macOS、服务器软件和现代开发工具。

当时的前沿技术

进程

每个运行中的程序拥有独立执行状态,由内核调度。

统一文件模型

普通文件、设备和数据流尽量使用相似接口处理。

管道

一个程序的输出可直接成为下一个程序的输入。

C 语言

系统核心从汇编迁移到更易理解和移植的高级语言。

代表性架构

  1. 用户与 ShellShell 读取文字命令并决定启动哪些程序。
  2. 系统调用程序通过统一接口请求文件、进程和设备能力。
  3. 内核内核管理 CPU、内存、文件和外设。
  4. 硬件C 语言降低了操作系统与特定机器指令的绑定。

继续阅读

IBM PC:个人电脑形成共同标准

IBM 5150 采用现成部件和开放架构,让硬件扩展、兼容机和独立软件产业迅速成长。

当时要解决什么

个人电脑已经出现,但硬件规格和软件生态分散,企业和普通用户需要可信、可扩展的通用平台。

为什么重要

开放规格、Intel 处理器和 PC DOS 形成事实标准,推动大量兼容硬件与应用软件进入市场。

当时的前沿技术

Intel 8088

16 位处理器内部设计配合 8 位外部总线,平衡能力和成本。

BIOS

固件负责开机自检并向操作系统提供基础硬件接口。

扩展总线

插槽允许第三方增加显卡、存储、通信等能力。

代表性架构

  1. 硬件处理器、内存、磁盘、显示器和扩展卡组成个人计算机。
  2. BIOS开机后初始化设备,再从磁盘寻找操作系统。
  3. PC DOS操作系统管理文件并提供命令行环境。
  4. 应用软件文字处理、电子表格和游戏运行在共同平台上。

继续阅读

World Wide Web:用链接连接全球信息

CERN 把超文本、互联网和统一地址组合起来,第一台 Web 服务器与浏览器在 1990 年底运行。

当时要解决什么

研究资料分散在不同计算机和格式中,人们需要一种简单方法跨机构查看文档并继续追踪相关信息。

为什么重要

URL、HTTP 和 HTML 形成开放组合,任何人都能建立服务器、发布页面并通过链接连接知识。

当时的前沿技术

HTML

用结构化标记描述标题、段落和超链接。

HTTP

浏览器使用简单请求向服务器索取文档。

URL

统一地址指出资源所用协议、服务器和路径。

浏览器与服务器

客户端负责阅读和导航,服务器负责保存并返回文档。

代表性架构

  1. 浏览器用户输入地址或点击链接,浏览器创建 HTTP 请求。
  2. 互联网网络把请求传到目标服务器。
  3. Web 服务器服务器按路径找到 HTML 文档并返回。
  4. 超文本页面浏览器解析 HTML,显示内容和可继续访问的链接。

继续阅读

JavaScript:网页开始回应用户

JavaScript 进入浏览器后,网页不再只是服务器返回的静态文档,事件和 DOM 让页面能即时变化。

当时要解决什么

早期网页每次交互通常都需要跳转或重新请求页面,浏览器缺少轻量、跨平台的内置脚本能力。

为什么重要

浏览器脚本逐渐支撑表单、动画、应用界面和网络请求,并扩展到服务器与多种开发平台。

当时的前沿技术

事件

点击、输入和键盘操作触发 JavaScript 函数。

DOM

浏览器把 HTML 组织成对象树,脚本可以查询和修改。

ECMAScript

标准化语言规范让不同浏览器逐步实现相同核心行为。

代表性架构

  1. HTML定义页面结构和可交互元素。
  2. DOM浏览器把结构转换成脚本可访问的对象。
  3. 事件循环用户事件进入队列,脚本依次处理。
  4. 渲染DOM 或样式变化后,浏览器更新画面。

继续阅读

AWS:把服务器能力变成按需服务

AWS 通过 S3 和 EC2 等服务,把存储与计算资源变成可通过 API 随时申请和按量使用的基础设施。

当时要解决什么

团队上线新产品前要购买、安装和维护服务器,准备周期长,闲置与峰值容量也难以平衡。

为什么重要

云服务把基础设施操作软件化,开发者可以自动创建、扩展和销毁资源,改变了应用交付方式。

当时的前沿技术

对象存储

应用通过键保存和读取数据,不直接管理物理磁盘。

虚拟计算

计算实例可按需创建,在共享数据中心中获得隔离资源。

服务 API

基础设施操作可以由程序、脚本和自动化流水线调用。

代表性架构

  1. 开发者在控制台或脚本中描述所需资源。
  2. 云 API认证请求并转成资源操作。
  3. 计算与存储服务服务从资源池分配虚拟实例和对象存储。
  4. 应用部署后的代码通过网络使用这些资源。

继续阅读

iPhone:触控设备成为软件平台

iPhone 把多点触控、移动操作系统、传感器和互联网能力组合成可随身使用的计算平台。

当时要解决什么

早期智能手机常依赖实体键盘和复杂菜单,网页、媒体与应用体验受到屏幕和交互方式限制。

为什么重要

手指直接操作界面成为主流,随后 App Store 又建立了移动应用开发、分发和更新生态。

当时的前沿技术

多点触控

电容屏识别手指位置和手势,不再依赖鼠标或手写笔。

移动操作系统

系统统一管理触控界面、网络、传感器和应用生命周期。

应用平台

开发工具和商店让第三方软件可以统一开发、分发和更新。

代表性架构

  1. 触控与传感器屏幕、加速度计等硬件持续提供输入。
  2. iPhone OS系统解释手势并向应用提供图形、网络和存储能力。
  3. 应用每个应用围绕触控任务组织界面和数据。
  4. 网络服务浏览器、地图、邮件和后续应用通过互联网获取内容。

继续阅读

Docker:把应用和依赖一起打包

Docker 用镜像、容器和简单工具改善软件交付,让应用在不同环境中保持更一致的运行条件。

当时要解决什么

应用常因系统版本、依赖和配置差异出现“在我的机器上能运行”的问题,部署过程也难以复现。

为什么重要

标准镜像和容器工作流连接开发与运维,推动持续交付、微服务和云原生生态快速普及。

当时的前沿技术

镜像分层

构建步骤形成可缓存和复用的只读层。

容器

应用进程在隔离环境中运行,同时共享宿主机内核。

Dockerfile

文本文件以可复现步骤描述镜像如何构建。

代表性架构

  1. Dockerfile开发者声明基础镜像、文件、依赖和启动命令。
  2. 镜像构建器把步骤保存为顺序分层。
  3. 容器运行时从镜像创建隔离进程和可写层。
  4. 宿主机内核多个容器共享内核,但拥有独立资源视图。

继续阅读

ChatGPT:自然语言成为软件入口

ChatGPT 以多轮对话方式提供模型能力,让更多人通过自然语言完成解释、写作、分析和编程任务。

当时要解决什么

大型语言模型能力很强,但提示接口和单次生成方式对普通用户仍不够直观,也难以持续修正上下文。

为什么重要

对话界面把生成式 AI 推向大众,并促使开发者重新思考搜索、创作、编程和软件交互方式。

当时的前沿技术

Transformer 模型

模型从大量文本中学习词语和上下文关系,再逐步预测输出。

指令微调

训练过程帮助模型更好理解并遵循用户任务。

对话上下文

客户端把此前消息与新问题一起交给模型,形成连续交流。

代表性架构

  1. 对话客户端收集消息、显示回复并维护当前会话。
  2. 服务 API验证请求、整理上下文并调用模型服务。
  3. 模型推理模型根据提示和上下文逐步生成输出。
  4. 安全与反馈系统应用安全规则并收集反馈用于改进。

继续阅读

1946

电子累加面板

修改源码后点击运行,或按 Ctrl+Enter。

源码实验室正在准备。