计算机发展史 (5)携手共赴难
就在痛苦艰难的时刻,孤独苦闷的巴贝奇意外地收到一封来信,写信人不仅
对他表示理解而且还希望与他共同工作。娟秀字体的签名,表明了她不凡的身份 ──伯爵夫人。
接到信函后不久,巴贝奇实验室门口走进来一位年轻的女士。她身披素雅的 斗蓬,鬓角上斜插一朵白色的康乃馨,显得那么典雅端庄。巴贝奇一时愣在那里, 他与这位女士似曾相识,又想不起曾在何处邂逅。女士落落大方地作了自我介绍, 正是那位写信人。
“您还记得我吗? ”女士低声问道,“十多年前,您还给我讲过差分机原理。” 看到巴贝奇迷惑的眼神,她又笑着补充说:“您说我像野人见到了望远镜。”巴 贝奇恍然大悟,想起已经十分遥远的往事。面前这位女士和那个小女孩之间,依 稀还有几分相似。
原来, 伯爵夫人本名叫阿达·奥古斯塔(Ada Augusta),是英国著名诗人 拜伦的独生女。她比巴贝奇的年龄小 20 多岁,1815 年出生。阿达自小命运多舛, 来到人世的第二年,父亲拜伦因性格不合与她的母亲离异,从此别离英国。可能 是从未得到过父爱的缘由,小阿达没有继承到父亲诗一般的浪漫热情,却继承了 母亲的数学才能和毅力。
还是在阿达的少女时代,母亲的一位朋友领着她们去参观巴贝奇的差分机。 其他女孩子围着差分机叽叽喳喳乱发议论,摸不着头脑。只有阿达看得非常仔细, 她十分理解并且深知巴贝奇这项发明的重大意义。
或许是这个小女孩特殊的气质,在巴贝奇的记忆里打下了较深的印记。他赶 紧请阿达入座,并欣然同意与这位小有名气的数学才女共同研制新的计算机器。
就这样,在阿达 27 岁时,她成为巴贝奇科学研究上的合作伙伴,迷上这项 常人不可理喻的“怪诞 ”研究。其时,她已经成了家,丈夫是洛甫雷斯伯爵。按 照英国的习俗,许多资料在介绍里都把她称为“洛甫雷斯伯爵夫人 ”。
30 年的困难和挫折并没有使巴贝奇屈服,阿达的友情援助更坚定了他的决 心。还在大型差分机进军受挫的 1834 年,巴贝奇就已经提出了一项新的更大胆 的设计。他最后冲刺的目标,不是仅仅能够制表的差分机,而是一种通用的数学 计算机。巴贝奇把这种新的设计叫做“分析机 ” ,它能够自动解算有 100 个变 量的复杂算题,每个数可达 25 位,速度可达每秒钟运算一次。
今天我们再回首看看巴贝奇的设计,分析机的思想仍然闪烁着天才的光芒。
由于巴贝奇晚年因喉疾几乎不能说话,介绍分析机的文字主要由阿达替他完 成。阿达在一篇文章里介绍说:“这台机器不论在可能完成的计算范围、简便程 度以及可靠性与精确度方面,或者是计算时完全不用人参与这方面,都超过了以 前的机器。 ”巴贝奇把分析机设计得那样精巧, 他打算用蒸汽机为动力,驱动 大量的齿轮机构运转。 巴贝奇的分析机大体上有三大部分:其一是齿轮式的“存 贮库 ”,巴贝奇称它为“仓库 ” (Store),每个齿轮可贮存 10 个数,齿轮组 成的阵列总共能够储存 1000 个 50 位数。分析机的第二个部件是所谓“运算室 ”, 它被巴贝奇命名为“作坊 ”(Mill),其基本原理与帕斯卡的转轮相似,用齿轮 间的啮合、旋转、平移等方式进行数字运算。为了加快运算速度,他改进了进位 装置,使得 50 位数加 50 位数的运算可完成于一次转轮之中。第三部分巴贝奇没 有为它具体命名,其功能是以杰卡德穿孔卡中的“0 ”和“ 1 ”来控制运算操作的 顺序,类似于电脑里的控制器。他甚至还考虑到如何使这台机器处理依条件转移 的动作,比如,第一步运算结果若是“ 1 ”,就接着做乘法,若是“0 ”就进行除 法运算。此外,巴贝奇也构思了送入和取出数据的机构,以及在“仓库 ”和“作 坊 ”之间不断往返运输数据的部件。
阿达“心有灵犀一点通 ”,她非常准确地评价道:“分析机‘编织 ’的代数 模式同杰卡德织布机编织的花叶完全一样 ”。于是,为分析机编制一批函数计算 程序的重担,落到了数学才女的肩头。阿达开天辟地第一次为计算机编出了程序, 其中包括计算三角函数的程序、级数相乘程序、伯努利函数程序等等。阿达编制 的这些程序,即使到了今天,电脑软件界的后辈仍然不敢轻易改动一条指令。人 们公认她是世界上第一位软件工程师。
众所周知, 美国国防部据说是花了 250 亿美元和 10 年的光阴,把它所需要 软件的全部功能混合在一种计算机语言中,希望它能成为军方数千种电脑的标准。 1981 年,这种语言被正式命名为 ADA(阿达)语言,使阿达的英名流传至今。
不过,以上讲的都是后话,殊不知巴贝奇和阿达当年处在怎样痛苦的水深火 热之中! 由于得不到任何资助,巴贝奇为把分析机的图纸变成现实,耗尽了自 己全部财产,弄得一贫如洗。他只好暂时放下手头的活,和阿达商量设法赚一些 钱,如制作什么国际象棋玩具,什么赛马游戏机等等。为筹措科研经费,他们不 得不“下海 ”搞“创收 ”。最后,两人陷入了惶惶不可终日的窘境。阿达忍痛两 次把丈夫家中祖传的珍宝送进当铺,以维持日常开销,而这些财宝又两次被她母 亲出资赎了回来。
贫困交加,无休止的脑力劳动,使阿达的健康状况急剧恶化。1852 年,怀 着对分析机成功的美好梦想,软件才女英年早逝,死时年仅 36 岁。阿达去世后, 巴贝奇又默默地独自坚持了近 20 年。晚年的他已经不能准确地发音,甚至不能 有条理地表达自己的意思,但是他仍然百折不挠地坚持工作。1871 年,为计算 机事业贡献毕生精力的先驱者巴贝奇,终于满怀着对分析机无言的悲怅,孤独地 离开了人世。有人把他的大脑用盐渍着保存起来,想经过若干年后,有更先进技 术来研究他大脑保存的精神。
分析机终于没能造出来,巴贝奇和阿达失败了。巴贝奇和阿达的失败是因为 他们看得太远,分析机的设想超出了他们所处时代至少一个世纪!社会发展的需 求和科学技术发展的可能,使得他们注定要成为的悲剧人物。尽管如此,巴贝奇 和阿达为电脑科学留下了一份极其珍贵的精神遗产,包括 30 种不同设计方案, 近 2000 张组装图和 50000 张零件图…… ,更包括那种在逆境中自强不息,为追 求理想奋不顾身的拼搏精神。
相关文章:
计算机发展史 (5)携手共赴难
就在痛苦艰难的时刻,孤独苦闷的巴贝奇意外地收到一封来信,写信人不仅 对他表示理解而且还希望与他共同工作。娟秀字体的签名,表明了她不凡的身份 ──伯爵夫人。 接到信函后不久,巴贝奇实验室门口走进来一位年轻的女士。她身披素雅…...
一键搞定简历设计!电子版简历制作指南3步走!
如今,随着无纸化办公趋势的流行,电子简历逐渐取代了纸质简历,成为我们最常用的简历设计格式。 然而,从纸质简历到电子简历后,对于非平面设计领域的学生来说,简历设计的难度可能再次超出了我们的能力范围。…...
tcpdump 常用用法
简要记录下tcpdump用法 监控某个ip上的某个端口的流量 tcpdump -i enp0s25 tcp port 5432 -nn -S 各个参数作用 -i enp0s25 指定抓包的网卡是enp0s25 -nn 显示ip地址和数字端口 ,如果只 -n 则显示ip,但是端口为services文件中的服务名 如果一个…...
Opencv实战(5)平滑处理与常见函数
平滑处理 Opencv实战: Opencv(1)读取与图像操作 Opencv(2)绘图与图像操作 Opencv(3)详解霍夫变换 Opencv(4)详解轮廓 文章目录 平滑处理1.均值滤波2.方框滤波3.高斯滤波4.中值滤波5.双边滤波 常见函数(1).createTrackbar()(2).SetMouseCallback() 图像的平滑处理是…...
音频PCM介绍与运用
音频PCM介绍与运用 什么是PCM PCM (Pulse Code Modulation) 是一种数字音频编码方式,将模拟声音信号转换为数字信号的过程。在 PCM 中,声音信号被采样并量化为离散的数值,以便于数字化处理和传输。 以下是 PCM 的主要特点: 采样…...
计算机专业大学四年应该如何规划(Java方向)
计算机专业的学生,如何在大学四年内提高自己的竞争力,毕业之后直接进大厂工作? 以下将从大学四年计算机专业的学习规划、课程设置、能力提升、参考书籍等方面,为同学们提供一些建议和指导。 大一: 主攻技能学习并且达…...
算法D27|回溯算法4| 93.复原IP地址 78.子集 90.子集II
93.复原IP地址 本期本来是很有难度的,不过 大家做完 分割回文串 之后,本题就容易很多了 题目链接/文章讲解:代码随想录 视频讲解:回溯算法如何分割字符串并判断是合法IP?| LeetCode:93.复原IP地址_哔哩哔…...
C++实现XOR加解器
#include <Windows.h> #include <iostream> #include <fstream> #include <string>// 加解密函数,使用XOR运算 void XORCrypt(char* data, int size, const std::string& key) {int keyLength key.length();for (int i 0; i < siz…...
Kubernetes的Sevice管理
服务原理: 所有服务都是根据这个服务衍生或者变化出来,根服务---- 服务感知后端靠标签 slelector 标签选择器 kubectl label pods web1 appweb kubectl cluter-info dump | grep -i service-cluster-ip-range 服务ip取值范围 Service 管理: 创建服务: --- kind: Serv…...
C# 高阶语法 —— Winfrom链接SQL数据库的存储过程
存储过程在应用程序端的使用的优点 1 如果sql语句直接写在客户端,以一个字符串的形式体现的,提示不友好,会导致效率降低 2 sql语句写在客户端,可以利用sql注入进行攻击,为了安全性,可以把sql封装在…...
vue3+vite+ts配置多个代理并解决报404问题
之前配置接口代理总是报404,明明接口地址是对的但还是报是因数写法不对;用了vue2中的写法 pathRewrite改为rewrite 根路径下创建env文件根据自己需要名命 .env.development文件内容 # just a flag ENVdevelopment# static前缀 VITE_APP_PUBLIC_PREFIX"" # 基础模块…...
开创未来:探索OpenAI首个AI视频模型Sora的前沿技术与影响
Sora - 探索AI视频模型的无限可能 随着人工智能技术的飞速发展,AI视频模型已成为科技领域的新热点。而在这个浪潮中,OpenAI推出的首个AI视频模型Sora,以其卓越的性能和前瞻性的技术,引领着AI视频领域的创新发展。让我们将一起探讨…...
Redis---持久化
Redis是内存数据库,是把数据存储在内存中的,但是内存中的数据不是持久的,如果想要做到持久,那么就需要让redis将数据存储到硬盘上。 Redis持久化有两种策略: RDB > Redis DataBase RDB机制采取的是定期备份AOF …...
从 Flask 切到 FastAPI 后,起飞了!
我这几天上手体验 FastAPI,感受到这个框架易用和方便。之前也使用过 Python 中的 Django 和 Flask 作为项目的框架。Django 说实话上手也方便,但是学习起来有点重量级框架的感觉,FastAPI 带给我的直观体验还是很轻便的,本文就会着…...
状态码转文字!!!(表格数字转文字)
1、应用场景:在我们的数据库表中经常会有status这个字段,这个字段经常表示此类商品的状态,例如:0->删除,1->上架,0->下架,等等。 2、我们返回给前端数据时,如果在页面显示0…...
Pytorch 复习总结 4
Pytorch 复习总结,仅供笔者使用,参考教材: 《动手学深度学习》Stanford University: Practical Machine Learning 本文主要内容为:Pytorch 深度学习计算。 本文先介绍了深度学习中自定义层和块的方法,然后介绍了一些…...
YOLOv9中加入SCConv模块!
专栏介绍:YOLOv9改进系列 | 包含深度学习最新创新,主力高效涨点!!! 一、本文介绍 本文将一步步演示如何在YOLOv9中添加 / 替换新模块,寻找模型上的创新! 适用检测目标: YOLOv9模块…...
代码随想录算法训练营第四十七天丨198. 打家劫舍、 213. 打家劫舍 II、337. 打家劫舍 III
198. 打家劫舍 自己的思路: 初始化两个dp数组,dp[i][0]表示不偷第i户,在0-i户可以偷到的最大金额,dp[i][1]表示偷i户在0-i户可以偷到的最大金额。 class Solution:def rob(self, nums: List[int]) -> int:n len(nums)dp […...
龙蜥Anolis 8.4 anck 安装mysql5.7
el8没有用mysql5.7了,镜像里是mysql8。 禁用 sudo dnf remove mysql sudo dnf module reset mysql sudo dnf module disable mysql 修改Yum源 sudo vi /etc/yum.repos.d/mysql-community.repo [mysql57-community] nameMySQL 5.7 Community Server baseurlhttp:…...
【踩坑】修复xrdp无法关闭Authentication Required验证窗口
转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 问题如下,时不时出现,有时还怎么都关不掉,很烦: 解决方法一:命令行输入 dbus-send --typemethod_call --destorg.gnome.Shell /org/gnome/Shell org.gn…...
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...
