越过补丁星期二——今天是艾达·洛夫莱斯日! Plato区块链数据智能。 垂直搜索。 人工智能。

移动星期二补丁 - 这是 Ada Lovelace 日!

每个月的第二个星期二是微软定期进行安全更新的日子,几乎所有人都知道它的非官方昵称“补丁星期二”。

但是十月的第二个星期二也是 艾达·洛夫莱斯日,庆祝 艾达,洛夫莱斯伯爵夫人.

Ada 不仅是计算领域的真正先驱,而且是计算机科学领域的真正先驱,她将自己的名字命名为编程语言 Ada。

有趣的是,Ada 语言来自美国国防部的一个项目,该项目旨在“颠覆”政府编码的世界,每个部门似乎都偏爱不同的语言或不同的语言方言,这使得它变得更困难、更昂贵,而且让他们一起工作的可靠性较低。

Ada 有许多旨在提高可读性和避免常见错误的句法特性。 与 C 中的注释不同,注释以 /* 并运行到下一个 */,也许很多行之后,Ada 只是忽略了之后的任何内容 -- 在任何一行上,因此评论不会意外地超出您的预期。 而不是将所有多行代码块括在波浪形括号内 ({...},也被称为 背带),Ada 对每种多行块都有一个唯一的终止符,例如 end record, end loopend if. 我们怀疑,Ada Lovelace 会为她的同名语言的清晰性鼓掌,但 Ada 语言从未真正流行起来,而 C 的波浪形括号语法在很大程度上赢得了胜利,Python 可能是唯一的非波浪形括号语言广泛使用。 波浪形括号是 C、C++、C#、Go、Java、JavaScript、Perl、Rust 和许多其他流行语言的重要方面。

艾达洛夫莱斯时代

你可能会惊讶地发现,鉴于 Ada 的名字与计算机科学的开端有多么紧密的联系,她生活在 XNUMX 世纪上半叶,早在我们目前认为是计算机甚至计算器的任何东西出现之前.

(艾达于 1852 年死于子宫癌,年仅 36 岁。)

但是,尽管现代意义上的计算机在 1800 年代还不存在,但它们 非常接近 做到了。

这就是它几乎发生的方式。

查尔斯·巴贝奇在 1800 年代早期设计了一种著名的机械计算设备,称为 差异引擎 至少在理论上,它可以自动求解六次多项式方程,例如通过找到 X 的值来满足:

aX6 + bX5 +cX4 +dX3 +eX2 + fX + g = 0

英国政府很感兴趣,因为这种设备可用于创建精确的数学表格,例如平方根、对数和三角比。

任何擅长三角计算的机器也可以方便地计算诸如炮击表之类的东西,这些东西可以彻底改变陆地和海上火炮的准确性。

但巴贝奇有两个问题。

首先,他永远无法完全达到让差分机正常工作所需的工程精度,因为它涉及到足够多的互锁齿轮,这些齿隙(微小但累积的不准确导致机制中的“马虎”)会将其锁定。

其次,当他意识到差分机是死胡同时,他似乎对差分机失去了兴趣——用现代术语来说,你可以将其视为袖珍计算器,而不是平板电脑或笔记本电脑。

因此,巴贝奇跃跃欲试,设计了一种更复杂的设备,他称之为 分析引擎,它可以解决比一种多项式方程更普遍的科学问题。

如果事后看来令人遗憾,也许不足为奇。 政府对资助巴贝奇更高级的项目并不是很感兴趣。

鉴于他没有设法建立一个更简单的方程求解器所需的机制,那么一台巨大的、蒸汽驱动的通用计算机有什么机会提供任何有用的结果呢?

欧洲会议巡回赛

在国际、多语言合作的一次奇妙转折中,巴贝奇前往意大利进行演讲,宣传他的分析引擎。

听众中有一位名叫 Luigi Menabrea 上尉的军事工程师,他因此受到启发,与 Babbage 合作撰写了 1842 年描述该机器的论文。

虽然他是意大利人,但梅纳布雷亚还是用法语发表了他的论文……

……然后是 Ada Lovelace 翻译了 Menabrea 的论文 变成英语.

在巴贝奇的催促下,艾达还加了一系列 译者注,结果不仅是 Menabrea 原始报告的两倍多,而且更有说服力,解释了我们现在称之为通用计算机的几个重要特征。

沃尔特·艾萨克森(Walter Isaacson),在他可读性极强的书中 创新者,于 2014 年出版,描述了 Ada 如何 “探索了四个概念,这些概念将在一个世纪后计算机最终诞生时引起历史共鸣”:

  • Ada 认识到分析引擎与差分引擎不同,它是真正的通用设备, 因为它不仅可以被编程为做一件事,而且相对容易地被重新编程以执行一些完全不同的任务。

用艾达自己的话来说(在那个时代,科学文学与文学的联系比今天还多):

差分机实际上(正如已经部分解释的那样)除了添加之外什么都不做; 任何其他过程,除了简单的减法、乘法和除法之外,只能由它执行到可以通过明智的数学安排和技巧将它们简化为一系列加法的程度。 求差法其实就是加法; 并且由于它在其手段范围内包含了比任何其他数学原理都可以通过简单的加法获得的更多结果,因此非常恰当地选择它作为构建加法机的基础,以便赋予这种机器的能力尽可能广泛的范围。 相反,分析引擎可以同样方便地进行加法、减法、乘法或除法; 并以直接方式执行这四个操作中的每一个,而无需其他三个操作中的任何一个。 这一事实暗示了一切; 并且几乎没有必要指出,例如,虽然差分机只能制表并且不能发展,但分析机可以制表或发展。

  • Ada 意识到分析引擎不仅限于使用数字进行编码和计算。 她解释说,虽然是数字化的,并且基于执行数值计算的能力,但这些数字化运算在理论上可以代表逻辑命题(正如我们今天在 if ... then ... else ... end if 陈述)、音符等。

正如艾达所说:

[分析引擎] 可能作用于除数之外的其他事物,即所发现的对象,它们的相互基本关系可以用抽象的运算科学的那些关系来表达,并且也应该易于适应运算符号和机制的作用。引擎。 例如,假设和声科学和作曲科学中音高的基本关系容易受到这样的表达和调整,引擎可能会创作出任何复杂程度或程度的精致和科学的音乐作品。 分析机是运算科学的体现,其构造特别参考抽象数作为这些运算的主题。

  • Ada 提出了重用我们现在所说的程序的一部分的概念。 从这个意义上说,她可以说是发明了子程序的概念,包括递归子程序(通过将一个计算分解为一系列相似的子计算,然后调用自己来简化解决方案的函数)。
  • 艾达首先有效地解决了“机器能思考吗?”这个问题。 这是一个一直困扰我们的问题。

弗兰肯斯坦的联系

艾达的父亲(尽管她从未见过他)是臭名昭著的诗人拜伦勋爵,他在瑞士度过了一个令人难忘的阴雨假期,与他的文学密友珀西和玛丽雪莱一起写恐怖故事。

拜伦和珀西雪莱在这场友好的写作比赛中所做的努力今天完全被遗忘了,但玛丽雪莱的开创性小说 科学怪人 或者,现代普罗米修斯 (出版于 1818 年)至今仍广受欢迎且备受推崇。

弗兰肯斯坦的故事著名地探讨了围绕我们今天所说的人工智能的道德困境。 (别忘了,科学怪人是进行实验的科学家,而不是项目中出现的人工智能。)

然而,艾达似乎并没有分享她父亲的朋友对分析引擎的反乌托邦担忧,或者实际上对一般计算机的担忧。

她在她的最后一部分提出了意见 译者注, 那:

分析引擎没有任何自命不凡的东西。 它可以做任何我们知道如何命令它执行的事情。 可跟踪分析; 但它没有预测任何分析关系或真理的能力。 它的职责是帮助我们提供我们已经熟悉的东西。 它的主要目的当然是通过其执行能力来实现这一点。 但它很可能以另一种方式对科学本身产生间接和互惠的影响。 因为,在如此分配和结合真理和分析公式的过程中,它们可能最容易和最迅速地适应引擎的机械组合,这门科学中许多学科的关系和性质必然被抛到新的视野中,并进行了更深入的研究。 这显然是这种发明的间接结果,而且有些推测性结果。

仅仅 100 多年后,当艾伦·图灵在他自己的论文中著名地重新审视了人工智能问题时 计算机与智能,并介绍了他的 现在著名的图灵测试, 他称这个 洛夫莱斯夫人的反对.

怎么办呢?

下次您发现自己正在编写诸如...之类的代码时

   ——一个时髦的东西:阿克曼函数。 -- 可计算,但不是原始递归! -- (你不能用普通的 for -- 循环来写它,但你可以确定它会完成, -- 即使它需要很长时间。) local ack = function(m,n) if m == 0 然后返回 n+1 end 如果 n == 0 然后返回 ack(m-1,1) end 返回 ack(m-1,ack(m,n-1)) end

……请记住,这类递归子程序都始于一个人的科学想象,他知道计算机应该是什么样子,它可能会是什么样子,但是却比任何此类设备早 100 年生活(遗憾地死去)存在让她真正破解。

在真实的计算机上进行黑客攻击是一回事,但有目的地在虚拟计算机上进行黑客攻击是目前我们只能想象的事情。

快乐艾达洛夫莱斯日!


时间戳记:

更多来自 裸体安全