计算的本质

文章作者:倾城

个人博客:www.codingbrick.com

公众号:编码专家

1 古代算盘

三下五除二,这是一句珠算口诀。它是指加3时,可以先把算盘上面的5落下来,再从下面扣除2个珠子,这个过程不需要熟悉数学计算,只要背下口诀,小孩子都能打算盘进行复杂计算。事实上,很多科学史专家将中国的算盘作为最早的计算机,人们靠珠算口诀来控制操作计算。算盘打熟了,在人的肌肉记忆下得到计算结果,减少了脑力负担。

使用算盘依然有一定门槛,首先要掌握口诀,还要练习打算盘珠子。如果不熟练到飞起来,计算速度还不如用笔在纸上演算。在漫长的岁月里,中国古代的算盘没有任何进步,它从未真正解放过人力。

算盘

2 机械计算器

英国数学家乔治·布尔(1815-1864)提出了布尔代数,通过将逻辑值 TRUE ( 真)和 FALSE( 假)编码为 0 和 1,用这种代数用来研究逻辑推理。

1822年,英国数学家查尔斯·巴贝奇开始研制纯机械结构的计算器 - 差分机。这种机器采用蒸汽驱动大量的齿轮运转,可以自动计算多个变量的复杂算题。差分,是把复杂的算术转化为差分运算,比如用加法代替平方。巴贝奇认为,乘法是加法的重复,除法是减法的重复,减法可以用加法来代替,只要设计一个加法运算器即可,所有的运算转化为最简单的判断和计算,1表示Yes,0表示No,计算机用0和1不断重复计算。

1834年,巴贝奇提出了更大胆的设计 - 分析机,能够自动计算100个变量的复杂算题,每个数可达25位,速度可达每秒钟运算一次。巴贝奇的分析机大体上分三大部分:

  • 存贮库:用齿轮贮存10个数,齿轮组成的阵列总共能够储存1000个50位数。
  • 运算室:用齿轮间啮合、旋转、平移等方式进行数字运算。
  • 控制器:机器判定计算条件,比如第一步运算结果若是"1",就接着做乘法,若是"0"就进行除法运算。

受限于当时的机械工艺水平和社会背景,差分机并没有普及推广,分析机也宣告失败,但是这两种机器为现代计算机设计思想奠定了基础。

分析机

3 香农理论

1938年,信息和通信界的双料祖师爷克劳德·艾尔伍德·香农(Claude Elwood Shannon)发表硕士论文《继电器与开关电路的符号分析》,提出用布尔代数来描述电路,将布尔代数的"真"与"假"和电路系统的"开"与"关"对应,用两个数字"1"和"0"来表示。香农的这篇论文,奠定了数字电路的理论基础,后来出现的计算机都以此为设计思路。

香农的电路设计思想可以被总结为"模块化"和"等价性"。模块化就是用少量简单的模块搭建出各种复杂的功能,等价性是指复杂的计算都可以等价成加减乘除的运算,进而等价成开关电路的逻辑运算。我们遇到某个问题很难解决,如果存在一个容易解决的等价问题,就先去解决那个等价问题。等到它被解决后,原来的难题就迎刃而解了。比如,我们在证明三角形全等的过程中,只需要证明两个角加上一个边相等,而不需要直接证明三角形完全相等一样,等价问题的解决难度会下降一个梯度。

香农

4 图灵机

阿兰·图灵(Alan Turing,1912~1954)被誉为计算机科学之父,在计算机程序设计、人工智能和密码学等领域有着深远影响。1952年,图灵被指控涉嫌同性恋行为,并接受雌激素注射治疗作为惩罚。1954,图灵在卧室服用含氰化物的苹果,自杀身亡。

在图灵之前,人类制造计算机都是先从简单问题的计算机开始,越做越复杂。图灵抛开具体的技术,从计算的本质来探究计算机的极限,他思考的问题如下: (1)数学问题是否都有明确的答案。 (2)如果有明确的答案,是否可以通过有限步的计算得到答案。 (3)可能在有限步的计算出来的数学问题,假设有一种机器可以不断的运动,当它停下来的时候,结算结果就出来了。

他设计出了一种被称为图灵机的数学模型,这个模型的全部定义一共有四条: (1)要有一条无限长被分成一个个格子的纸带,每个格子里记录着符号或数字,为了清楚起见,可以为这些格子上编号1、2、3、4......这就相当于人们计算数学题时使用的纸张。 (2)有一个读写笔,在纸带上左右移动,它停到哪里就可以改变哪里的符号或数字,这就相当于人们算题的过程。 (3)有一套规则表,根据图灵机当前的状态和读写笔所指向格子中的符号或数字,人们查到后就知道下一步该做什么,完成这个步骤后,图灵机就进入了一个新的状态。 (4)图灵机的状态需要记录在一个地方,图灵机的状态是有限的,其中有一个特殊状态是停机,一旦进入停机状态表示计算完成。

图灵将世界上的数学问题分成了两类,一类是可以用图灵机在有限步内完成计算的,另一类是不可以的。今天我们说一个软件问题能不能计算,其实不是指数学计算,而是能否用图灵机这个简单逻辑来计算。图灵机给后人设计计算机制定了一个行之有效的原则,就是计算机可以通过存储地址、计算机状态、规则表和当前位置的读写来进行计算。

其实,现代计算机的本质依然是机械运动,只是从齿轮变成晶体管。

图灵

5 人工智能

ChatGPT的出现会让很多人担心计算机会替代人类,毕竟它看起来做事又快又好,但是这个担忧大可不必。计算机只是人脑的延伸,面对复杂的人性和社会,如果人无法解决,那么计算机也无法解决。从工具的属性思考计算机,它有两个问题: (1)不是所有问题都可以计算:比如股票的涨跌,计算机可以收集所有的数据,再根据模型预测趋势,但是无法预料某个庄家头脑发热大肆买进。 (2)任何计算都有成本:算力始终有限,算力投入成本如果高于收益,没人会为这种计算买单。

人工智能技术主要依赖大数据的深度学习,这是明确的可解问题,并没有超出图灵机的范畴。以前很多问题没有转化为数学问题,现在转化了,有了对应的数学模型。通过海量芯片堆叠出强力的计算机来运行这些模型,人工智能就越来越"聪明"了。

相关推荐
iceslime11 分钟前
旅行商问题(TSP)的 C++ 动态规划解法教学攻略
数据结构·c++·算法·算法设计与分析
千|寻16 分钟前
【画江湖】langchain4j - Java1.8下spring boot集成ollama调用本地大模型之问道系列(第一问)
java·spring boot·后端·langchain
程序员岳焱30 分钟前
Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解
后端·sql·mysql
龚思凯36 分钟前
Node.js 模块导入语法变革全解析
后端·node.js
天行健的回响39 分钟前
枚举在实际开发中的使用小Tips
后端
wuhunyu44 分钟前
基于 langchain4j 的简易 RAG
后端
techzhi44 分钟前
SeaweedFS S3 Spring Boot Starter
java·spring boot·后端
aichitang20241 小时前
矩阵详解:从基础概念到实际应用
线性代数·算法·矩阵
OpenCSG2 小时前
电子行业AI赋能软件开发经典案例——某金融软件公司
人工智能·算法·金融·开源
写bug写bug2 小时前
手把手教你使用JConsole
java·后端·程序员