注重培养计算思维提高应用计算机解决问题的能力.docx
《注重培养计算思维提高应用计算机解决问题的能力.docx》由会员分享,可在线阅读,更多相关《注重培养计算思维提高应用计算机解决问题的能力.docx(14页珍藏版)》请在冰豆网上搜索。
注重培养计算思维提高应用计算机解决问题的能力
注重培养计算思维,提高应用计算机解决问题的能力
开言:
计算机语言种类繁多,计算机应用领域广泛,编程对象各不相同,难以兼顾全面。
仅就其中通性略谈些许,仅以计算实例小做分析,望对同学们有所启发和帮助。
要点:
着眼于宏观层面的思维方式,侧重于科学计算的编程能力。
0、引言
研究生在学习和今后的论文课题中都离不开利用计算机解决面临的问题。
掌握一种或数种计算机语言,具备使用计算机解决问题的能力是当代高素质人才不可或缺的。
很多时候计算机的使用者特别是初学者,在使用计算机解决实际问题时,总是存在无从下手的困惑。
因此,现在有很多关于编程能力和编程技巧的培训和书籍。
这些培训和书籍作为程序设计训练的载体,可以促进计算机使用者多学多练,对于提高学生的编程能力会有所帮助。
但是我认为:
掌握和提高编程能力,除了需要多学多练,更重要的却在于培养计算思维,把握自然语言到计算机语言的思维方式转换。
掌握计算机编程的核心问题不是语言的熟练程度、不是编程技巧,而是思维方式的转换和培养。
实际上,不管是哪种计算机语言,是面向过程的还是面向对象的、是解决科学计算问题的还是处理经济管理问题的、亦或是应用各种专有目的的软件工具,我们只要以一种计算机语言为载体能够熟练应用,就可以举一反三、融会贯通于其他。
如果把利用计算机解决问题的能力简单分级的话,大致可以分成
初级阶段:
会用计算机做你能做的事情。
中级阶段:
会用计算机做你想做的事情。
高级阶段:
会用计算机做你不能做的事情。
要从自然语言向计算机语言转换,就必须了解计算机语言与自然语言的特点。
1、计算机语言与自然语言
思维是在表象、概念的基础上进行分析、综合、判断、推理等认识活动的过程,是人类特有的一种精神活动,而思维方式则是人类看待事物的角度。
自然语言是人类最重要的交际工具,是人们进行沟通交流的各种表达符号集合,是思维的最重要的载体。
“计算机语言”是人类设计的人与计算机进行交流的工具,是人利用计算机实现自然思维的载体。
如果我们把“计算机思维方式”解释为“根据计算机的特点、从计算机语言的角度看待事物”,那么通常所说的“编程能力”,很大程度上就指的是“人的自然思维方式到计算机思维方式的转换能力”。
(1)人类自然语言的特点
人类自然语言既是交流的工具,又是认知的工具,同时也是思维的工具。
由于人类自然语言同时要满足这三种功能,它就必须达到如下要求:
思想、方法、对象三者同时融于语言之中,这就是人类自然语言的“三位一体性”。
试想,如果我们用语言交流,双方却不能通过语言知晓对方的思想;我们用语言认知,却不能用语言把握对象、掌握方法;我们用语言思维,我们却不知用的什么方法,思维的对象是什么。
在这样的情况下,语言对人类而言恐怕就不会有任何意义了。
(2)计算机语言的发展
计算机语言是人类所设计出的能让计算机“听懂”和“知晓”的人与计算机进行交流的工具。
计算机语言是人与计算机之间传递信息的媒介。
计算机的最大特征是指令通过一种语言传达给机器。
为了使计算机进行各种工作,就需要有一套用以编写计算机程序的数字、字符和语法规则,由这些字符和语法规则组成计算机各种指令或各种语句。
■机器语言:
机器语言是指一台计算机全部的指令集合计算机可以直接识别的由二进制代码构成的计算机语言。
缺点可读性差,不易记忆;编写程序既难又繁,容易出错;程序调试和修改难度巨大,不容易掌握和使用。
机器语言直接依赖于中央处理器,所以用某种机器语言编写的程序只能在相应的计算机上执行,无法在其他型号的计算机上执行,即可移植性差。
■汇编语言
汇编语言是指用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串的计算机语言。
例如使用“ADD”来替代加法的二进制指令,用"MOV"代表数据传递等等。
为了减轻使用机器语言编程的痛苦,20世纪50年代初,出现了汇编语言。
汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。
它同样需要编程者将每一步具体的操作用命令的形式写出来。
尽管汇编语言比机器语言方便,但汇编语言仍然具有许多不便之处,程序编写的效率远远不能满足需要,而且可移植性差。
■高级语言
高级语言与自然语言和数学表达式相当接近,不依赖于计算机型号,通用性较好。
●早期高级语言
1954年,第一个高级语言—FORTRAN问世了。
高级语言的使用,大大提高了程序编写的效率和程序的可读性。
与汇编语言一样,计算机无法直接识别和执行高级语言,必须翻译成等价的机器语言程序(称为目标程序)才能执行。
●结构化高级语言
随着计算机硬件技术的日益发展,人们对大型、复杂的软件需求量剧增,需要对程序设计方法、程序的正确性和软件的可靠性等问题进行深入研究,需要对软件的编制、测试、维护和管理方法进行深入研究。
结构化程序设计是一种程序设计的原则和方法。
它讨论了如何避免使用GOTO语句;如何将大规模、复杂的流程图转换成一种标准的形式(NS图),使得它们能够用几种标准的控制结构(顺序、分支和循环)通过重复和嵌套来表示。
C语言就是一种结构化语言。
●面向对象语言
结构化程序设计方法与语言是面向过程的,存在较多的缺点,同时程序的执行是流水线式的,这和人们日常认识、处理事物的方式不一致。
为了使计算机更易于模拟现实世界,引入了数据抽象和类的概念,产生了面向对象的计算机语言。
由计算机语言的发展过程可以看出
随着人类对计算机使用的目的要求的变化,计算机不断更新发展、计算机语言也在同步发展变化。
(3)计算机语言的特点
计算机语言始终只是交流的工具,不具备认知和思维的功能。
计算机语言不具备人类自然语言“三位一体性”的特点(交流、认知、思维;思想、方法、对象),只是一种不具备认知和思维、且将思想、方法和对象分离的交流工具。
计算机语言的这个功能单一性特点,既带来了计算机的速度快和自动化的优势,但同时也造成了人们使用计算机解决问题过程中,用自然语言思维转换为用计算机语言思维过程的困难。
计算机不能借助计算机语言进行思维,这就意味着计算机语言是将思想与方法、思想与对象做了分离。
通常所称“计算机的思维”,实际上是编程者借助计算机语言实现的存在于编程者大脑中的思维。
计算机语言是一种高度形式化的语言,其所要处理的对象,就是各种“数据”(即使我们称现在的计算机能够处理“图象”和“声音”,它也是把这些图象和声音变成了数据之后进行处理的),这意味着计算机语言是将方法与对象做了分离;而我们之所以能够有效地利用计算机,其中最关键的一条也就是我们把需要计算机处理的信息变成了“数据”。
由于计算机语言能使思想与方法、方法与对象、思想与对象三者之间达到非常有效的分离,计算机“计算”的时候,就不会象人类大脑那样,左半脑中的一个语词指称的是一个几乎难以确切地划分出“边界”的右半脑中的图景,而是一块有着确定“地址”的内存区域,计算机就能够快速、准确地寻址和计算。
以上内容介绍的目的在于让大家了解如下三点
■计算机的灵魂在于它的速度和自动化,其硬件和软件的一切发展都是围绕着这两点进行。
计算机实际上不会“思维”,计算机语言只是人类思维借助于计算机解决问题的一种交流工具,只是人类为了更好的利用计算机而依据计算机构造特点而设计的诸多表达符号和规则的集合。
我们使用计算机时呈现出来的所谓“计算机思维方式”,就是使用计算机语言描述我们要解决的问题的求解过程,即是人的自然思维通过计算机语言而实现的一种思维映射。
■一方面,计算机之所以能够比人类大脑更加快速准确地“计算”,就是硬件与软件的分离、程序与数据的分离,也就是将我们人类自然语言中的思想与方法、方法与对象、思想与对象实行了分离。
■另一方面,由于计算机语言将我们人类自然语言中的思想与方法、方法与对象、思想与对象实行了分离,使得计算机不能象人的大脑那样工作,造成了我们使用计算机的困难。
所以要应用计算机解决问题,计算机的使用者就必须了解计算机语言中这种“分离”,学会对人的自然思维进行思想、方法和对象的恰当分离,并在使用计算机解决问题的过程中善于将这种分离再连通起来。
把握使用计算机语言过程中折射出来的“思维”的特点,实现人的自然思维在计算机上的映射,是利用计算机解决问题和提高编程能力的关键。
(4)分解思维过程,显化潜在意识
人类在解决和处理问题的过程中,有些思维活动是往往“无意识或隐性”的。
这是因为长期学习和训练积淀,使我们在有些时刻的思维活动成为一种下意识反应,或者是有些信息不是通过显性的语言表示获得,而是通过我们的其他感官隐性获得(如。
视觉、味觉、体感等)。
由于计算机不是思维的主体,计算机语言不具备认知和思维的能力,要让计算机按照我们的要求工作,就必须将自然语言的思维过程进行分解,将思维中的方法和对象进行分离和转化,用计算机语言对计算过程进行十分清楚和准确的描述,使得计算机可以实现期望的输出结果。
不仅要对我们能意识到的思维过程进行描述,也要对“无意识”的隐性思维过程进行描述(即所谓“显化潜在意识”。
而这一点就是造成计算机使用者尤其是初学者,感觉编程无从下手或感觉编程困难的常见原因)。
例如:
用选择法,对一批数目不详的数据进行由小到大的排序。
分解与约简:
排序→若干批数据中求最小→两数间比大小
显化与转换:
一维数组,记忆当前最小及其位置,对调两数,非正常数据作为终止。
除了对于思维过程本身的清楚描述,还要考虑出现各种意外情况时如何响应和处理。
而这些意外情况在以自然语言为载体的思维中往往是隐性的或带有绝对性的含义。
例如:
例如方程求根的牛顿迭代,必须考虑初值的函数值和一阶导数是否为零的意外情况(显化)。
而与零的比较,在计算机语言里的表述,应该是一个绝对值很小的数而不是绝对意义上的“零”(转换)。
2、科学计算实例分析
下面选择对于工科学生相对简单、易于理解且较为熟悉的科学计算方面的几个算法实例的计算机实现过程,进行分析说明,希望对大家有所启示和帮助。
(1)利用计算机解决实际问题的一般过程如图1所示。
图1
建立模型更多地依赖数学理论知识和专业理论知识,而求解数学模型则更多地依靠计算科学和计算机知识。
而当算法确定后,利用计算机进行编程计算时还要考虑程序的计算复杂度、空间复杂度。
其一般步骤为:
算法分析、数据分析、绘制流程图、编程、运行测试等、结果分析
(2)求解线性方程组的高斯消去法
■算法分析
分解与约简:
如,求解→消元与回代
消元→初等行变换→两项相减
显化与转换:
如,消元过程→三重循环结构
求主元及行交换→子程序
意外情况:
如,主元=零即行列式为零
■数据分析
变量设置:
一个二维数组A、一个一维数组b,若干变量
数据类型:
实数或整数
存储方式:
原始系数矩阵元素和约化后系列矩阵元素置放于二维数组。
同时为节约存储空间,将初等行变换所用乘数同步置放在该二维数组经消元后腾出的元素位置。
■流程图
(3)数值积分的龙贝格算法
■算法示意图
■算法分析
分解与约简:
如,数值求积→变步长梯形公式→累加
累加分解为:
赋初值→求加项→相加→判断
显化与转换:
如,累加的终止→x
预处理阶段的完成→档位计数器k及其判断
■数据分析(略)
■流程图
3、计算思维
人类思维的进化与发展,是和人类科技进步紧密相关的。
如,数学思维、工程思维、艺术思维的进化与发展等等,而计算思维也是如此。
实际上计算思维古已有之,而且无所不在。
从古代的算筹、算盘到近代的计算器以及现代的电子计算机、互联网和云计算,计算思维的内容不断拓展,推动着人类科技的进步。
■计算机的出现丰富了人类改造世界的手段,同时也强化了原本存在于人类思维中的计算思维的意义和作用。
但是,直到2006年,美国卡内基梅隆大学周以真教授对计算思维进行了清晰系统的阐述,这一概念才得到人们的极大关注。
(1)“计算思维”涵义
■计算思维的定义为:
“计算思维是运用计算机科学的基础概念进行问题求解、系统设计、人类行为理解等的一系列思维活动”,即是通过约简、嵌入、转化和仿真等等方法,把一个困难的问题阐释为如何利用计算机求解它的思维方法,其核心是抽象和自动化。
计算思维的本质是抽象和自动化,其抽象体现在完全使用符号系统甚至形式化语言;其自动化体现在算法实现最终是机械地按步骤自动执行。
典型的计算思维包括一系列广泛的计算机科学的思维方法:
递归、抽象和分解、保护、冗余、容错、纠错和恢复,利用启发式推理来寻求解答,在不确定情况下的规划、学习和调度等。
■计算思维是对“人的自然语言承载的思维通过计算机语言而实现的映射”的高度概括,是解读和实现这种映射的有效思维方式。
由于计算机对于信息和符号的快速处理能力,使得许多原本只是理论可以实现的过程变成了实际可以实现的过程。
如海量数据的处理、复杂系统的模拟、大型工程的组织,借助计算机实现了整个过程的自动化、精确化和可控化,拓展了人类认知世界和解决问题的能力和范围。
机器替代人类的部分智力活动催发了对于智力活动机械化的研究热潮,凸显了计算思维的重要性。
在这样的背景下,作为人类科学思维活动中以形式化、程序化和机械化为特征的计算思维被前所未有的受到重视。
(2)计算思维应用举例
■计算思维是一种问题求解的思维
计算思维将问题求解的过程用“程序化”或“机械化”的方式表示出来。
例如,“百鸡问题”,是两个三元不定方程的求解问题。
解决方案:
数学思维产生的算法是求解二元不定方程组,计算思维则充分利用计算机的速度优势,使用穷举算法进行简单重复操作进行求解。
反映出人机不同的信息处理特质。
又如,垃圾邮件的辨别与阻止,也是利用计算思维方式解决了人机辨识问题。
作为互联网时代早期最重要的免费邮件提供商,要解决用户们每天遇到的数以百计的垃圾邮轰炸。
解决方案:
验证码。
是一种区分用户是计算机或人的公共全自动程序。
设计思想:
计算机先是产生一个随机的字符串,然后用程序把这个字符串的图像进行随机的污染,扭曲,再显示给显示器前的人或者机器。
凡是能够辨识这些字符的,即为人类。
验证码的附带作用也是计算思维的作用的很好佐证:
美国宾夕法尼亚州匹兹堡市的CMU研究小组正在做的事。
该小组受一家名为“互联网档案馆”的非营利组织委托,要将海量的古老书籍和手稿通过光学字符识别软件转化为电子文本,以方便电脑储存和查询。
由于原稿的质量太差,电脑每扫描十个单词就会错读一个,唯一解决的办法就是人工核对,而这样的工作显然不是一个人或一个小组可以胜任的。
于是,该小组设计了一个强大系统,让他们的电脑去向人类求助。
具体做法是:
将软件无法识别的文字扫描图传给世界各大网站,用以替换原来的验证码图片;那些网站的用户在正确识别出这些文字之后,其答案便会被传回该小组。
(3)计算思维能力
“计算思维能力”不是狭义的“计算机编程能力”,计算思维能力主要包括问题及问题求解过程的符号表示、逻辑思维与抽象思维、形式化证明、建立模型和模型计算、利用计算机技术等能力。
简单的说,计算思维能力就是指“具有如何按照计算机求解问题的基本方式去考虑问题的求解,提出问题解决的系列观点和方法,构建出相应的算法和基本程序等的能力”。
计算思维能力的培养,有助于我们更加深刻地理解计算的本质和计算机求解问题的核心思想;有助于改变仅限于单纯培养操作技能的“狭义工具论”,导致人们只会“套用、搬用”却不懂“应用、创新”的现状;有助于改变不同学科的人们对各自领域的认识和思考方式,以完成更具创造性的工作。
随着现代科学的形成和发展,人们对于计算思维的作用和意义的认识也越来越提升。
在目前的社会,使用计算思维考虑和陈述问题,已经成了越来越熟悉和普遍的事实。
计算思维成为一个现代人所必须具备的素质。
具备计算思维的人能够自觉、灵活的完成用计算机解决问题过程中自然语言和计算机语言的转换,正确、快速的解读自然语言承载的思维通过计算机语言而实现的思维映射。
以上内容,一家之言,仅供参考。
谢谢大家
2012.12.8