大型机与批处理编程
早期程序以打孔卡束提交、常通宵批处理运行,一个错字可能让程序员白等一天。大量数学家——其中很多是女性——从手算直接进入这项被视为文书性、细节性而非高声望的"编程"工作。FORTRAN(1957)与 COBOL(1959)在此十年扎根;在这类硬件上构建可靠大系统的困难,酝酿了下一时代试图命名并解决的"软件危机"。
软件工程师 · 编写、测试并维护支撑现代生活的代码——也是最早目睹人工智能接管自身日常工作的职业之一。
软件工程是披着古老观念、却异常年轻的职业。自1840年代起,人们就在设计机器逐步执行的程序,但直到二十世纪很晚才有人以"软件工程师"名义领薪,这个职衔本身也在1968年才被半带挑衅地提出。
这段历史穿过一位从未看见自己算法运行的女伯爵、手工重接整间机房计算机的女性、希望机器读懂英语的海军军官,以及巴伐利亚阿尔卑斯一场宣布危机、从而给这个领域命名的会议。
阿达·洛夫莱斯在翻译一篇关于查尔斯·巴贝奇未建成的分析机的意大利论文时,添了比原文更长的注释。最后一条注释 G 逐步说明机器将如何计算一串数字——为百年后才出现的计算机写下的算法;多数历史学家把这一刻视为编程概念上的诞生:机器指令可以脱离机器本身被设计、写下并检验。
翻译关于查尔斯·巴贝奇未建成分析机的意大利论文时,洛夫莱斯添加注释,逐步说明机器将如何计算伯努利数——通常被视为首个公开发表的计算机程序。
赫尔曼·霍勒里斯的打孔卡制表机约用一年完成美国人口普查,而上一次手工统计几乎用了八年;他的公司后来成为 IBM 的一部分。
凯·麦克纳ulty、珍·詹nings、贝蒂·斯奈德、玛琳·韦斯科夫、弗兰·比拉斯和鲁斯·利希特曼在宾夕法尼亚大学为一间机房大小的 ENIAC 物理拨动开关、插接电缆编程,没有手册,也没有编程语言可依。
霍珀在 Remington Rand 的 A-0 系统自动将符号数学记号译成机器码,取代手工抄写子程序地址这一易错做法——此后所有编译器的直系祖先。
约翰·巴克斯团队在 IBM 经过约两年工作发布 FORTRAN;两年内,据称美国超过半数在机器上运行的代码都用它编写。
在西德加米施会议上,与会者刻意借用"软件工程"一词,主张构建大型程序需要与造桥同等的纪律,并把该领域慢性超支称为"软件危机"。
肯·汤普森和丹尼斯·里奇在一台闲置 PDP-7 上构建 Unix,1973 年再用里奇的新语言 C 重写,使其能在多种计算机上运行。
IBM PC 搭载微软 PC-DOS 上市,几乎一夜之间把软件变成大众消费品,也巩固了六年前比尔·盖茨与保罗·艾伦在 Altair BASIC 上创立的那家年轻公司。
1991 年 8 月,林纳斯·托瓦兹在 Usenet 发布 hobby 内核,称"只是 hobby,不会像 gnu 那样大而专业";同月蒂姆·伯纳斯-李的万维网公开,开放共享的软件成为互联网默认。
GitHub Copilot(2021)与 ChatGPT(2022)让大语言模型代码生成进入日常使用;数年内,GitHub 报告用户保留代码中有越来越多比例来自 AI 建议。
早期程序以打孔卡束提交、常通宵批处理运行,一个错字可能让程序员白等一天。大量数学家——其中很多是女性——从手算直接进入这项被视为文书性、细节性而非高声望的"编程"工作。FORTRAN(1957)与 COBOL(1959)在此十年扎根;在这类硬件上构建可靠大系统的困难,酝酿了下一时代试图命名并解决的"软件危机"。
1968 年北约会议为该领域慢性预算与可靠性问题命名后,1970 年代既给出诊断也给出工具箱:结构化编程、有纪律的测试,以及在贝尔实验室构建、后用新语言 C 重写以便跨机运行的 Unix。PDP-11 等小型机把算力带出少数大型机机房,"软件工程"开始作为独立大学学位出现,而非数学或电气的子领域。
Altair 8800 套件(1975)及随后的 Apple II 与 IBM PC(1981)把软件从机构运行之物变成家庭可购之物。围绕文字处理、电子表格与游戏,面向消费者与小微企业的产业在 shrink-wrap 盒装与退货政策而非支持合同下兴起。大型项目仍由瀑布式、重文档开发主导,而行业边缘——卧室 coder 与高校 hacker——则更接近今日更快、更非正式的风格。
万维网与 Linux 内核在 1991 年相隔数月公开,共同证明素未谋面的志愿者在开放协作下造出的软件可与任何公司产品竞争。浏览器几乎一夜造出新就业市场;该市场随后 boom,又在 2000–2001 年 spectacular 崩溃,抹掉一代初创,却留下 Amazon、Google 及下一时代所建基础设施。敏捷宣言(2001)以更短、更迭代周期正式回应重文档规划。
按小时向 Amazon Web Services(2006)租服务器去掉运行软件最大固定成本之一;应用商店几乎同时给工程师第二条移动优先分发渠道。Git 与 GitHub(2005–2008)让陌生人也能在同一代码库上分布式协作;自动化部署流水线把变更上线间隔从数月缩至分钟。2020 年代初,在公开代码上训练的 AI 编程助手从新奇变为多数专业工程师的日常工具——新工具在本职业中传播最快的一次。
Neighbouring trades that no longer exist — absorbed, automated or regulated away.
电子机器出现前,"computer" 是人的职衔——常为女性——用手或机械计算器做数学演算:天文表、炮弹弹道、NASA 轨道。1950–60 年代起电子计算机接管计算,该职消失时已把名字留给机器。
多为女性的打孔员在 IBM 026、029 等机器上把数据甚至程序源码逐行打到卡片上。交互终端与屏幕让程序员可直接输入代码,这一职业在一两代内消失。
Web 最初十年,一名 webmaster 常包办整站设计、编码、文案与运维——该词 1993 年入词典,1997 年按互联网标准获得专用邮箱。站点变复杂后,角色分裂为前端、后端、DevOps 与内容编辑,"webmaster" 从招聘启事中淡出。
这段历史上每个时代都以相同方式结束:出现一种工具,去掉某类工作赖以存在的手工劳动——手算、打孔、批调度、手工配服务器——从事该劳动的人或向上移动,或另谋出路。
正在阅读本文的工程师所经历的不是第一次,而是下一轮。本简介其余部分会具体说明迄今意味着什么,以及合理读证据后下一步可能是什么。