查看原文
其他

从计算员到程序员

西乔 神秘的程序员们 2022-06-08
《计算机简史》第一章开篇指出了一个有趣的事实:
 
Computer 一词,从诞生之初直至二战期间,描述的并非我们书桌下嗡嗡作响的黑箱子或手边那只可开合的两折金属扁盒,而是一种职业。它在《牛津英语词典》中的定义曾为:“执行计算的人;计算员:指受雇于天文台、勘测等领域进行计算的人。”
 
这让我联想起科幻小说《沙丘》里的三大神秘职业之一,门泰特 Mentat。在刚上映的沙丘电影里,所有门泰特在下唇有一个标志性的黑竖条纹身,思考(进行运算)时,会朝天翻出大大的白眼,切换到“入定”状态。因其超常的逻辑思维能力和计算能力,门泰特在统治者身边扮演着国师或谋臣的重要角色。
 

沙丘原著的设定里,为了反抗思考机器对人类残酷的奴役,人类曾向计算机、思维机器、有自主意识的机器人发起了历时三百年的圣战(芭特勒圣战),圣战的结果就是“有思维魔力的机器”(计算机)在宇宙中大部分地方被遭到清理、禁止制造。同时,少量人类被挑选出来,从小经过训练,成为“人形计算机”,直接凭借大脑进行不可思议的科学运算和数据处理。

自己仍感受不到悲痛……他的意识已与那个空旷之地分离,正稳步进行着它的工作——处理数据,评价,计算,给出答案,就像门泰特所用的方式。
弗兰克·赫伯特于1965年出版的科幻小说《沙丘》

《沙丘》第一部写作于上世纪六十年代。弗兰克·赫伯特写作此书时,世界上首台存储式计算机 EDSAC 才诞生了不过十来年,商业机构和政府部门中安装的大型机“多数只是打孔卡记账机的电子替代品”,最古老的高级编程语言 Fortran和 LISP 都只是刚刚问世。赫伯特在那时就预见到了“思考机器”对人类命运可能带来的巨大改变。而他小说里所设定的 门泰特 这种职业,在现代计算机诞生之前,也在人类历史上真实存在过,只是不拥有沙丘里那样的超能力。
 
人类历史上首次尝试使用 Computer(计算员 )是为了编制对数表、三角函数表 等数学用表,加快复杂计算的速度。到18世纪后期,人们已编制出若干专用表,并应用于如航海、天文、精算、土木工程等诸多重要领域,这些用表全部由计算员编制而成,没有借助任何机器的帮助。地理大发现结束后,哪个国家在远洋航行上有优势,就等于掌握了无尽的财富和权势。

……

1614年,一名苏格兰男爵 兼神学家天文学家和数学家在爱丁堡出版了一本书《奇妙的对数表的描述》,许诺“将数学计算中一直以来的困难一扫而光”。

1624年,伦敦几何学教授布里格斯,出版《对数算术》一书,书中写有14位常用对数表。

1627年,开普勒运用对数来整理第谷·布拉赫辛苦积累的数据,完善他的天体表《鲁道夫星表》,将精确性提高三十倍,推进了哥白尼的日心说革命,在当时视为天文学上的标准星表,也被航海家们视为至宝。
——《计算机简史》的引言
……

“1767年起,英国政府的经度委员会要求每年出版一本《航海天文历》,其中将提供太阳、月亮、恒星、行星以及木星卫星的位置表。在之后近半个世纪里,这项工作是由一个计算员网络完成的,它包括了三十四位男性和一位女性。他们都各自在家工作,每年为此可以拿到七十英镑。在当时,计算还是一个家庭作坊式的行业。这项工作要求从业者具有一些数学感觉,但不需要特殊的数学天赋,因为计算的每一步都有明确的规则

为了以防万一计算员出错,同样的工作常常会要求不同的人各做一遍。为了对各处的信息流加以统一管理,项目还雇了一位比对员比较两位计算员的结果并核对校样。计算员和比对员之间每隔几天就会通过邮递、步行或骑行传递一次讯息。”
——《信息简史》的第4章
……

1820年,一名叫巴贝奇的年轻数学家跟朋友赫歇尔一起正在为剑桥天文学会准备一份对数表手稿。这些对数在以前都已经计算过了,但对数这种东西总是会被计算、验算、比对和质疑。在进行枯燥乏味的对数表验算的过程中,巴贝奇吼道,“这些计算要是能由蒸汽完成多好啊。”赫歇尔则简单地回答说:“这完全可能。”
——《信息简史》的第4章
 
就这样,沙丘里那种“有思维魔力的机器”,那个将彻底更新 Computer 一词的新定义,从人类历史的地平线上初露曙光。
 
巴贝奇设计的第一台计算机器——差分机。重达四吨,需要25000个精密零件,耗时近二十年却只制造完成了1/7。因为在设计差分机的同时,巴贝奇还要“开发制造差分机所需的技术”。他实在是太过低估制造这台计算机器所需的技术资源、工程难度、资金还有时间。
 
到1834年时,巴贝奇已经有了设计第二台机器的想法,除了能完成差分机所有的工作,还能执行人类指定的任何计算,满足更为通用的需求。这就是分析机——不仅可以处理数,还能处理变量,存储高达一千个50位数,使用打孔卡输入,支啊持循环语句和条件分支。尽管设计逻辑却十分先进,但这台机器却只停留在图纸上,被遗忘了近百年。

 
而在那个时代,但比发明家本人和投资人更能预见到分析机潜力,是艾达·洛夫莱斯,一位受过极好教育、数学方面极有天赋的年轻女性,诗人拜伦的女儿(虽然她从未见过她爹)。艾达翻译了一篇为将分析机的设计规划介绍给欧洲更多国家而撰写的科学报告《分析机概论》。除了修订错误,艾达为这篇报告撰写了三倍于原文的注释。里面给出了一个比巴贝奇的设想更具想象力和前瞻性的远景。她清晰认识到这台机器处理的不仅仅是数,而是信息及运算——“何改变了两种或多种事物之间相互关系的过程”。
 
为了展示分析机的威力,艾达设计了流程、规则和一系列运算用来计算伯努利数。这份“过程规划”是分析机所用的第一个算法,它可以循环运行,还建立了子程序的概念。这也是为什么艾达被称之为世界上最早的程序员之一。

 
可惜的是,这条时间线上的曙光,距离迎来日出,还需要再等上近一百年。
 
工业革命而出现的人口增长与城市化进程,推动企业和政府的规模不断扩大,信息收集、处理与通信的需求也随之增加。政府需要人口统计,电报公司需要应付大量电文,保险机构需要处理大量表单。应对信息时代的第一次爆炸,人们迫切需要的是能提高信息存储和处理需求的机器——打字机、归档系统以及复制和记账设备。台式计算机,啊不,应该叫台式计算器,是这波需求里的一部分,打孔卡的发明也是为了处理美国1880年的人口普查数据。

在工程行业,模拟计算是另一个需求,加法器和乘积积分器被发明出来,用来辅助设计水坝、预测潮汐、构建电网模型,设计飞行器……
 
这些计算器满足的是商业和工程的需求。直到第二次世界大战打响,战争和军用需求的紧迫性,让各国军方不惜一切代价开发所需的现代计算机。

因为战争而机缘巧合相聚在贝尔实验室里的图灵和香农,坐在一起讨论理想计算机器的力量和局限——机器是否可能学会思考。


对密码编译、武器射表、核武研发的紧迫需求,催生了首台可编程电子计算机和存储式计算机,现代计算机的时代终于开启。
 


首台可编程的电子计算机ENIAC(EDVAC的前身)是一只重达六只大象的庞然大物。它的输入方式用的甚至都不是打孔纸带,而是靠操作员拔插电缆或拨动开关。

每接受一个任务,计算机都必须重新配置。设计复杂的流程图,拟定好计算的步骤,手动设置每个批次的计算,比如哪些开关要关闭、哪些电缆要接入哪些电路。而当时的操作员多为具备数学技能的经过培训的年轻女士,她们的职业名词也是计算员 (computer)。


1945年,由于在曼哈顿工程中需要成千上万次的巨量运算,当时主要是由大量计算员借助台式计算机来完成的。担任该项目顾问的冯·诺依曼意识到了存储程序的重要性,从而提出了存储程序逻辑架构,也就是俗称的冯·诺依曼架构。

直到有了存储式计算机,计算员们才开始把程序指令设置到打孔带上,与要处理的数据一起存入计算机。但所谓程序都只是一组能够控制逻辑电路的二进制数,编写软件依旧跟噩梦一样。机器读取纸带和执行程序都慢得惊人,每一次调试都需要把执行结果打印到纸带上,靠人眼检查纸带去排错、修改。


为简化编程过程,威尔克斯(MauriceWilkes)提出了微程序设计——将复杂指令分解为一系列简单指令。还开始编写子例程(subroutine),将常见函数像字典那样收录起来。一旦程序在运行的过程中要用到某个函数,计算机就会去子例程库中“查找定义”,执行相应的子例程代码,再根据输入值进行运算后将结果返回。


 
随着高级编程语言Fortran、COBOL 和 LISP 的诞生,广泛应用,编程工作已跟过去不可同日而语,担任这一工作的职位名称也逐渐从 人工计算员 computer 变成了成为了程序员 programmer 。

但直到1958年,“软件”才作为计算机术语首次在出版物上《美国数学月刊》使用。在当时的计算机工程文化氛围下,程序员曾长期被硬件人员轻视。因为硬件人员大都来自发展较完善的电子工程领域,认为硬件才算工程,虽然有些数学家也对计算机和编程着迷,但是他们往往沉迷于理论,而不是编写代码和排查程序。
 
50-60年代,当业界开始依赖软件来处理工资单和处理数据时,编程工作岗位需求激增。当时招聘要求基本不需要编程能力或经验,雇主对候选人的要求主要是有逻辑思维能力、擅长数学和一丝不苟。而女性在当时更符合在这方面的性别刻板印象。当时程序员中女性占了半数,其中许多人做出了杰出的历史贡献。


有兴趣可阅读机器之心翻译的这篇《女性编码简史》
https://www.jiqizhixin.com/articles/2019-03-09
 
从1960s到今天,又走过了半个多世纪,计算机和编程这条科技树上的分杈已长成主干。其间在上世纪八十和九十年代经历了爆发式的科技创新和难以置信的规模增长。


 
根据Stateof the Developer Nation (第20版)里的数据,截至 2021年初,全球已有 2430 万人从事编程工作,其中包括 1300 万专业程序员。与 2020 年年中相比,大幅增长了20%。今天,编程和开发工作已经成为广受尊重和向往的职业,数字世界的构建者和烧砖工。现代社会和经济活动对计算机软件硬件的依赖到了前所未有的程度。

计算员程序员,想通过图文形式轻松一览这段近两百年的历史,可以看看这本两个月前出版的《什么塑造了今天的编程世界》漫画编程大事件 2022周历版。

 

 

 





下面又是作者卖书时间


12月12日,今年内最后一次5折特惠

天猫当当(人邮或邮电出版社自营店)五折,

京东满100减50


全年最低,只要75元。


上次1024节搞过一次周边抽奖。有一些预售的同学表示他们支持度最高,买得最早,但是没有赶上抽奖,很不公平。所以这次抽奖,除了双十二期间下单,在10月10日前的预售阶段购买过的读者都可凭任何一家电商平台的订单号参加抽奖。


这次抽奖的周边更加丰富,多了3款沉甸甸的金属珐琅别针


奖品共10份。是包含整套金属别针(共3款)+整套贴纸(共14张)+整套书签(共12张)。该套周边不会在市面上销售,非常珍贵,只有很少的人能获得整套。



金属珐琅别针,约5cm大小。全金属,比较沉。建议别在双肩背等结实的织物上上,或背后弄个磁铁作为冰箱贴机箱贴,不推荐别再外套上,会坠坏布料。


贴纸质量很好,大尺寸(约5~8cm),防水耐磨,揭起不会有难以清理的残留。


书签是半透明的磨砂材料。每张 6*13cm


参与抽奖必须提供 10月10日之前 或 1212~1213 这两天 任一时间段内的订单号和订单截图,截图中需包括订单时间、订单号、商品名称、订单状态(必须是已发货或已支付)。京东、当当、淘宝/天猫 的订单都有效。

抽奖使用“抽奖助手”小程序进行,12月14日 21:00 开奖,也就是说必须在这个时间点之前才能参与。



中奖者需要按照中奖提示向联系人提供收件人地址信息和中奖二维码。礼品将会在联系寄送后的五个工作日内寄出,我们包邮(限中国大陆)。

购买请在当当、天猫、京东 搜索 "什么塑造了今天的编程世界" 或 “神秘的程序员”

谢谢支持!嗷!



本文参考书目:

信息简史. (2013).  人民邮电出版社.

软件故事: 谁发明了那些经典的编程语言. (2014).  人民邮电出版社.

计算机简史. (2020).  人民邮电出版社.

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存