小C的第一宇宙
wangc
Oct 9, 2017
阅读本文需要 10 分钟(按字数)

如果说现代每个人都需要有一点逻辑思维的话,那么现信息时代每个人都要了解计算思维。同样,计算思维也可以作为学习计算机科学技术贯彻始终的一条主线,入大学之前我就看过一遍这个课程,感觉受益很大,后来学了一些东西后,大二暑假我又看了一遍,还是能够豁然开朗,所以这里总结了一下。

笔记摘录自大学计算机—计算思维导论

1. 导言

定义:计算思维涉及运用计算机科学的基础概念去求解问题、设计系统和理解人类的行为。也可以说是蕴含在计算学科知识背后的具有贯通性和联想性的内容。

基本目标:能够执行一般的任意复杂的计算规则。

</div>

2. 计算思维总图

计算思维最重要的两个概念是抽象自动化计算之树:六个维度:计算技术的奠基性思维、通用计算环境的演化思维、社会/自然与计算的融合思维、问题求解思维、网络化思维和数据化思维。  

3. 计算思维的六个维度(A-E)

A. 计算技术的奠基性思维


“0和1”思维

  • “0和1”思维–符号化->计算化->自动化

一句话现实世界任何信息都可以用0和1来表示处理和变换。

0和1是自然社会问题计算话,硬件到软件的枢纽。 现实世界的各种信息(数值性信息和非数值性信息)都可转换成0和1来表示,处理与变换,再将0和1转换成满足人们视,听,触等各种感觉的信息。 实例

“程序”思维

  • “程序”思维–千变万化复杂功能的构造,表达与执行

一句话复杂系统可以有简单的基本动作构成。

程序是基本动作(指令)的各种组合是控制计算实现复杂系统的基本手段。 对基本动作的控制叫做指令,指令的各种组合极其顺序叫做程序。

实例

#include <stdio.h>

int main(void)
{
    printf("Hello World");

    return 0;
}

“递归”思维

  • “递归”思维–无限思维及重复过程的表达与执法方法

一句话:递归是一种可以用有限步骤实现近于无限功能的方法。

递归被广泛用于构造语言、过程、算法和程序,用于具有自相似性的近于无限的事物(对象)的描述,用于自身调用自身高阶调用低阶的算法与程序构造中。 递归借鉴的是数学上的递推法:在有限步骤内,根据特定的法则或公式,对一个前面的元素进行计算得到后续元素,以此确定一系列元素的方法 从前往后的计算方法被称为迭代,一般递归包括了迭代,有时候往往需要采用从后往前的计算方法,即“调用-返回”的计算模式。 在计算理论领域,已经证明了一般的构造函数与图灵机是代价的,即说明计算系统是一种可递归系统。

实例1

// 递归
long factorial1( int n )
{
    if( n <= 0 )
        return -1;
    else
        return n*factorial( n-1 );
}

// 迭代
long factorial2( int n )
{
    int result = 1;

    while ( n > 1 ){
        result *= n;
        n -= 1;
    }

    return result;
}

实例2

B. 通用计算环境的演化思维


程序执行环境—由CPU-内存环境,到CPU-存储体系环境,到多CPU-多存储器环境,再到云计算虚拟计算环境。

  • 冯诺依曼机

冯诺依曼计算机体现了存储程序和程序自动执行的基本思维。 存储器、控制器

  • 个人计算环境

本质上仍是冯诺依曼计算机,但其扩展了存 储资源由内存(RAM/RAM)、外存(硬盘、软盘)等构成了存储体系,随着存储体系的建立,程序被存储在永久存储器(外存)中,运行时被装入内存再被CPU执行,他引入了操作系统管理以管理资源。 他体现的是在存储体系环境下,程序如何在操作系统的协作下被硬件执行的基本思维。

  • 并行与分布计算环境

并行分布环境通常是由多CPU(多核处理器)、多磁盘阵列等构成的具有较强并行分布处理能力的复杂服务器环境,这种环境通常应该应用于局域网/广域网计算系统的构建。 其体现了在复杂环境下(多核、多存储器),程序如何在操作系统协助下被硬件并行分布计算、分布执行的基本思维。

  • 云计算环境

云计算通常由高性能节点,和大容量磁盘存储结点所构成,为充分利用计算节点和存储结点,其能够按使用者需求动态配置形成所谓的“虚拟机”和“虚拟磁盘”,而每一个虚拟机,就像一台计算机、一个磁盘一样来执行存储数据。 他体现的是一种“按需索取、按需提供、按需使用”的一种计算资源虚拟化服务的基本思维。

C. 社会/自然与计算的融合思维


  • 社会/自然的计算化

计算物理学,计算化学,计算生物学,计算语言学,计算机经济学等。 将社会/自然现象进行抽象,表达可以计算的对象,构造对这些对象进行计算的算法和系统,来实现计算,进而发现社会自然问题的演化规律。

  • 计算/求解的自然化

智能计算,普适计算,个人计算,社会计算,企业计算,服务计算等。 强调用社会/自然相一致的形式来展现计算及求解的结果。 例如将求解的结果以听觉、视觉的形式(多媒体),全面,更深入的感知的模拟(虚拟现实),,现实世界可感知的形式(自动控制)展现。

社会/自然的计算化和计算/求解的自然化,本质上体现了不同抽象层面的计算系统的基本思维,其根本是是抽象与自动化

  • 机器层面:协议(抽象)与编码器/解码器/转化器等(自动化),解决机器与机器之间的交互问题;
  • 人-机层面:语言(抽象)与编译器/执行器(自动化),解决人与计算机之间的交互问题;
  • 业务层面:模型(抽象)与执行引擎/执行系统(自动化),解决业务系统和计算机系统之间的交互问题。

最后

    • 自动化()

数据和计算规则的表示、自动存储和计算规则的自动执行

D. 交替促进与共同进化的问题求解思维


  • 算法

算法被誉为计算机系统的灵魂,是一个有穷规则的集合,他规定了解决某一特定类型问题的运算序列,或者规定问题求解的一系列步骤。 问题求解的关键是有限时间与空间内执行的算法,设计可在有限时间与空间内执行的算法,设计尽可能快速的算法。

  • 系统

系统是计算与社会/自然融合的统一体,他对社会/自然问题提供了泛在的、透明的、优化的解决方案,是由相互联系、相互作用的若干元素构成且具有特定结构和功能的统一整体。 设计和开发计算系统(如硬件系统、软件系统、网络系统、信息系统、应用系统等)是一项综合和复杂的工作。 如何对系统相关人员理解一致,采用各种模型(更多是非数学模型,用数学化的思维建立起的非数学模型)来刻画一个系统;如何优化结构(尤其是整体优化),保证可靠性、安全性、实时性等系统的各种特性,这些都需要“系统”或者系统科学的思维。

E. 网络化思维


计算与社会/自然环境的融合促进了网络化社会的形成,由计算机构成的网络——局域网/广域网,到有网页/文档构成的信息网络—— 机器网络、信息网络和人-机-物互联的网络化社会具有无限广域资源的互联网,再到物联网、知识与数据网、服务网、社会网,促进了以物-物互联、物-人互联、人—人互联为特征的网络化环境与网络化社会的形成,极大的改变了人们的思维,促进了网络化思维的形成与发展,不断地改变着人们的生活与工作习惯。

F. 数据化思维


4. 最后


“人”计算与“机器”计算有什么差异?

  • A. 人计算属于数学学科,计算机计算属于计算机学科。
  • B. “人”计算宁愿使用复杂的计算规则,以便减少计算量能够获取结果,“机器”计算则需使用简单的计算规则,以便于能够做出执行规则的机器
  • C. “机器”计算使用的计算规则可能很简单但计算量却很大,尽管这样,对越来越多的计算,机器也能够完成计算结果的获得。
  • “机器”可以采用“人”所使用的计算规则,也可以不采用“人”所使用的规则。

人类应该具有的三种科学思维

  • 实验思维实证思维 实验->观察->发现,推断与总结(观察与归纳
  • 理论思维逻辑思维 假设/预设->定义/性质/定理->证明(推理与演绎
  • 计算思维构造思维 设计,构造(算法系统)与计算(设计与构造

计算思维关注的是人类思维中,可行性,可构造性和可评价性的部分。随着社会自然内容的深度化和广度化,传统的理论和实验手段已经受到很大的限制,通过观察的手段很难从实验产生的大量数据中找到结果,此时不可避免地需要利用计算手段来实现理论和实验的协调创新。