计算机程序计算技术(计算机科学计算思维)
世间万物一切皆可数字化 ,可二进制数字表示,绝大部分问题都可计算。
1 计算机科学计算机科学(Computer Science,CS)是研究计算机系统结构、程序系统(即软件)、人工智能以及计算本身的性质和问题的学科。计算机科学是一门包含各种各样与计算和信息处理相关主题的系统学科,从抽象的算法分析、形式化语法等等,到更具体的主题如编程语言、程序设计、软件和硬件等。包括4个主要领域:计算理论,算法与数据结构,编程方法与编程语言,以及计算机元素与架构。以及软件工程,人工智能,计算机网络与通信,数据库系统,并行计算,分布式计算,人机交互,机器翻译,计算机图形学,操作系统,以及数值和符号计算等一些重要领域。
计算机是一种进行算术和逻辑运算的机器。现代的计算机绝大部分是冯诺依曼体系结构的,其核心思想是“存储程序,程序控制”,只要指令明确,输入数据准确,启动程序后自动运行而且结果是预期的。现代计算机的一大特征就是速度飞快,每秒可达10亿个机器指令(英特尔酷睿 i9 主频率达5GHz,中国超级计算机系统天河二号,峰值计算速度每秒5.49×1016次、持续计算速度每秒3.39×1016次双精度浮点运算),让一切皆有可能。
2 计算思维
计算思维(Computaional Thinking, CT)是利用计算机逻辑和计算机科学的基础概念来进行问题求解、系统设计的思维,是一种将计算抽象化再具体化的思维。
2.1 折解思维(Decomposing)
复杂问题也可以分解、分解,一直分解到我们知道该如何处理的较小部分来解决。然后在通过解决子问题,一步步将整个问题解决掉。
2.2 抽象思维和模式识别
抽象思维是指能够对问题或数据的共同属性或特征进行识别和分类,概括或抽取出特定的模式。如把实际的领域问题进行抽象并归纳到某种或某些已知的模型的建模(以便利用模型求解)。框架是对某种应用程序共性结构特征的抽象并基于某种通用基本(程序)结构形态而具体实现的准程序,它将某种应用程序中“一成不变”的东西(尤其是各个基本组成部分之间的交互关系)固定下来并自动提供。数据类型是对相似数据共性特征的一种抽象,通过数据类型概念可以将杂乱无章数据进行分类,实现数据的条理化和逻辑化,以便对数据进行处理。
模式识别要求我们观察数据,从中找出相同的模式、趋势和规律。
2.3 算法思想
算法是解决问题或执行任务时所需的一系列步骤。
要开发算法,首先要使用分解的方法把问题分解成小部分,然后找到相同的信息或规律,过滤掉不重要的细节,抓住主要信息,最后用一个个有序的步骤,区域性解决问题。算法中的每一步都必须精确明确,无歧义无错误。
尽管领域问题是多样的、千变万化的,然而,问题的解决方法(或获得解决方法的思维)却是有规律的,尤其是增加了计算机这个特定环境的约束。这些解决问题的固定套路可以称之为算法思想。
2.3.1 分治思想
面对现实世界和问题的复杂性,需要有大事化小和分治的思想。如算法的分治法、贪婪法、动态规划法、递归都是或都有分治思想的体现。在计算机科学中最重要的体现就是计算机系统的分层抽象,模块化分解。
分治思想在各类算法中无处不在,例如归并排序,当一组数据分解到只有一个数据时,肯定是有序的,然后再两两归并,形成整体有序(递归分解,递归合并)。例如快速排序,也是递归地让数据的前后两段相对有序。二分查找同样是分治法的应用。将线性数组组织成有左右有序的二叉搜索树或上下有序的堆的形式而实现二分搜索也是分治思想的应用。递归思维通常也是将问题分解到规模为一可以直接求解时,然后再逐步回退求解出最终解或整体解。
基于递归思维,C 语言通过指针概念,提供了一种称为函数指针的特殊数据类型,实现了对数据组织和数据处理的统一,演绎了程序就是数据、数据就是程序这一计算思维的本质。
2.3.2 解空间枚举或遍历思想
2.3.2.1 线性结构的解空间的暴力枚举。
2.3.2.2 非线性结构的解空间的遍历(二维规则型穷举),如回回溯法(DFS辅助)、分支限界法(BFS辅助)就属于这一类。
2.3.3 迭代思维,如计算中的表达式可以利用旧值不断迭代新值,计算机科学中程序的迭代开发和版本的不断迭代。
2.3.4 递推思维,问题求解除了顺推,有时逆推可能来得简单。
3 程序设计程序设计是针对特定问题或任务,以计算思维为指导,以程序设计语言为工具,设计数据结构和算法,并以程序设计语言描述出来。
程序设计过程通常包括问题、任务或需求分析、数据结构和算法设计、编写程序、测试、排错,优化迭代等不同阶段。
4 三者关系
计算机科学 ------ 计算思维 ------ 程序设计
(←------ 理论 ---------------- 实用 ------→)
What to do?
How to do with computer?
How to do using some general method or algorithm.
How to do coding with special programming language.
-End-
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com