3. 编程是如何用数学解决现实问题的?

- 图灵机的优势?除了构造简单,容易实现;还有就是让问题的求解更容易:使用“数据+指令”的方式分析求解问题的时候,实际上用到了两种强大的问题求解策略——分解与建模。
- 分解:分而治之是解决复杂问题最强大的方法之一,但是遇到问题如何拆,拆到什么程度,还原之后如何和原问题保持一致,都是要考虑的,而按照数据与指令的套路进行分解到话,上面的很多问题就不是问题了
- 建模:建模则是另一个解决复杂问题的方法,即把现实世界中的问题投射到数学世界来解决,图灵机就是提供了一种的建模思路,即把显示世界的问题都抽象为数据与指令,好比给解决复杂问题提供了个通用的限定的套路,有效降低了解决问题的难度
- 具体该如何利用“数据+指令”的思维来求解问题呢?
- 什么该抽象为数据呢?数据的本质是什么?数据的本质是“不同”,所以一个实际问题中,任何不同的东西都可以投射成数据
- 如何对数据进行投射呢?这个问题对于图灵机也不是问题了,因为即使胡乱投射,后面也可以找出一组合适的操作让逻辑符合现实情况,因为是图灵完备的,所以在图灵机中解决问题基本一定有解,知道这点就已经对对解决问题完成了大大的一步
- 当然首先把数据映射好,可以使之后的工作更简单,并且解法也有优劣之分,这就需要经验了。但在是图灵机中起码可以先把事情做完,之后再一步步优化,这就把求解问题降维到了优化问题。
- 如何把真实世界中多种多样的元素,都投射成数字(数据)呢?
- 解决办法就是数据类型,好比物理学的所有物理量都可以由基本的六个单位表示出来,计算机世界也有基础数据类型,比如数字,字符,布尔类型
- 不同类型的根本的区别在于适用于不同的运算规则;数据类型的本质是建立在该类型上的一系列操作
- 如果想自己定义新的一个数据类型,也就是规定内存中这个区域的数据,只能执行特定的一组操作,具体实现方式不同编程语言不同,比如开辟固定内存的空间,
- 计算机世界之所以还要区分 整形,浮点型,也是因为这些在计算机中的计算规则是不同点
--------------------------------------------------
笔记已整合进个人知识体系,欢迎访问 [编程语言思考](http://wangc.site/cbrain/share?nodeid=1c3092379d319bb5) 😉