0%

【书摘】计算思维

计算思维就是面向计算或基于计算的、隐藏在一般陈述性知识和技术背后的、科学家们求解问题时的思想和方法,属于科学方法论的范畴。


计算思维就是面向计算或基于计算的、隐藏在一般陈述性知识和技术背后的、科学家们求解问题时的思想和方法,属于科学方法论的范畴。

(感谢网友十六夜砕月的错别字订正)

计算思维是运用计算科学的基础概念进行问题求解、系统设计以及人类行为理解等涵盖计算机科学之广度的一系列思维活动,其本质是抽象和自动化,即在不同层面进行抽象,以及将这些抽象机器化。其目的是希望所有人都能像计算机科学家一样思考,将计算技术与各学科理论、技术与艺术进行融合实现新的创新。

我们所使用的工具影响着我们的思维方式和思维习惯,从而也将深刻地影响着我们的思维能力 - Edsger Wybe Dijkstra

计算机革命是思维方法和思维表达方法的革命 - Abelson & Sussman

计算机并不解决问题,它们只是执行解决方案 - Laurent Gasser

在计算机这一特定的环境中,不是任何一个十进制数都有与其一一对应的二进制数。在这种特殊情况下,只能在设定精度的前提下,取一个与其近似的二进制值,即这种转换是有损的。

离散量的精确度是有限的,数字信号不能达到无限的精确。因此,数字世界可以近似地表示真实世界,但不能完全模拟。

离散量和连续量之间的模/数、数/模转换需要耗费计算机系统大量的时间和资源。

逻辑学和计算科学具有完全相同的宗旨 —— 扩展人类大脑的功能,帮助人脑正确、高效地思维。逻辑学试图找出构成人类思维或计算的最基础的机制,而程序设计则是把问题的求解归结于程序设计语言的几条基本语句,或者说归结于一些极其简单的机器操作指令。

逻辑学的产生和发展说明了一个基本事实,即人在抽象思维方面不是完美的,或者说经常是有缺陷的。逻辑学的任务是总结抽象思维的规律和特点。

  • 全加器与半加器
  • 可计算性与计算复杂度
  • P 问题与 NP 问题
  • 发现问题 - 明确问题 - 提出假设 - 检验假设
  • 抽象,不同层次的抽象
  • 数据抽象、控制抽象

抽象的意义不只是抽象出数据,更主要的是利用抽象使我们设计的程序能正确地映射客观事物。程序设计就是把客观世界问题的求解过程映射为计算机的一组动作。用计算机能接受的形式符号记录我们的设计,然后运行实施。动作完成了,得出的数据往往也不是问题解的形式,而是解的映射。

虽然可在高的抽象层次上处理事物,若没有低层的实现,高层次的抽象将失去意义。

对于计算机,人们利用抽象原理得以从宏观上控制其复杂性,实现信息隐藏,实现软件叠加,从而改善设计者的工作界面和环境,使计算机更『宜人化』

程序 = 算法 + 数据结构

这个公式的重要性在于:不能离开数据结构去抽象地分析程序的算法,也不能脱离算法去孤立地研究程序的数据结构,只能从算法与数据结构的统一上去认识程序。换言之,程序就是在数据的某些特定的表示方式和结构基础上,对抽象算法的计算机的语言具体表述。

程序的抽象性质要求程序简明易读,这样人们才能读懂它。简明性和程序设计语言的表达能力有关,同时与程序设计风格有关。计算机软件是在处理复杂性。

一般而言,计算与自动计算要解决以下 4 个问题:1)数据的表示,2)数据的存储,3)计算规则的表示,4)计算规则的执行及自动执行

  • 计算辅助工具 - 机械计算机 - 模拟计算机 - 数字计算机
  • 电子管 - 晶体管 - 集成电路

三个层面的计算机器:

  1. 语言与编译器。通过不断扩充语言,不断发展新的语言,并提供编译器,可以不断扩展计算机器的表达能力和处理能力
  2. 协议与编码器/解码器,体现了信息表示与处理的一般性思维
  3. 操作系统级虚拟机器,通过分层与分离,可以将复杂的问题化简为简单问题进行求解,可以将细节信息屏蔽掉,进而提供给用户更方便地使用计算机器的能力。

大数据时代最大的转变是,放弃对因果关系的渴求,取而代之关注相关关系。也就是说,只要知道『是什么』,而不需要知道『为什么』