「编程思维」究竟是一种什么思维?

首先,以下思维方法(或者套路、模式等)是编程所必需的,但我认为不应该被阐释为编程思维的内涵:
1.框架思维
写一个软件,需要搭架构;写一段程序,需要有一个大体框架。如同建一栋楼,需要首先搭脚手架。显然,框架思维不是程序员独有的。
2. 拆解思维
一个复杂的问题,看起来千头万绪没有思路,这时需要将复杂的问题拆解成一个个简单的问题,再各个击破。显然,拆解思维也不是程序员独有的。
3. 函数思维。许多会被重复使用到的运算过程被储存为标准化的函数,下次再有需要就直接调用,只需要改动输入的自变量即可。这就是函数思维,但这也不是程序员的专利。工厂里的流水生产线往往被划分成若干个工位,每一个工位执行标准化、程序化的动作,这不就是工业生产中的函数思维(或者说自动化思维)吗?

4.……(肯定还有很多,就不列举了)


编程思维是看问题一种思维方式。

顺序结构,条件结构,循环结构...

编程不过是把人要做的事情,翻译成电脑听的懂的话罢了。

计算思维是建立在计算过程的能力和限制之上的,不管这些过程是由人还是由机器执行的。计算方法和模型给了我们勇气去处理那些原本无法由任何个人独自完成的问题求解和系统设计。计算思维直面机器智能的不解之谜:什么人类能比计算机做得更好?什么计算机能比人类做得更好?最基本的是它涉及这样的问题:什么是可计算的?今天,我们对这些问题的答案仍是一知半解。

计算思维是每个人的基本技能,不仅仅属于计算机科学家。在阅读、写作和算术(英文简称3R)之外,我们应当将计算思维加到每个孩子的解析能力之中。正如印刷出版促进了3R的传播,计算和计算机也以类似的正反馈促进了计算思维的传播。

计算思维涉及运用计算机科学的基础概念去求解问题、设计系统和理解人类的行为。计算思维涵盖了反映计算机科学之广泛性的一系列思维活动。

当求解一个特定的问题时,我们会问:解决这个问题有多困难?怎样才是最佳的解决之道? 计算机科学根据坚实的理论基础来准确地回答这些问题。表明问题的困难程度是为了考量机器——就是用来运行其解的计算工具之基本能力。我们必须考虑机器的指令系统、它的资源约束和它的操作环境。

为了有效地求解一个问题,我们可能要进一步问:一个近似解是否就足够了,是否可以利用一下随机化,以及是否允许误正或误负。计算思维就是把一个看来困难的问题重新阐述成一个我们知道怎样解的问题,如通过约简、嵌入、转化和仿真的方法。

计算思维是一种递归思维。它是并行处理。它是把代码译成数据又把数据译成代码。它是由推广量纲分析进行的类型检查。对于别名或赋予人与物多个名字的做法,它既知道其益处又了解其害处。对于间接寻址和程序调用的做法,它既知道其威力又了解其代价。它评价一个程序时,不仅仅根据其准确性和效率,还有美学的考量,而对于系统的设计,还考虑简洁和优雅。

计算思维采用了抽象和分解来迎战浩大复杂的任务或者设计巨大复杂的系统。它是关注的分离。它是选择合适的方式去陈述一个问题,或者是选择合适的方式对一个问题的相关方面建模使其易于处理。它是利用不变量简明扼要且表述性地刻画系统的行为。它是我们在不必理解每一个细节的情况下就能够安全地使用、调整和影响一个大型复杂系统的信心。它就是为预期的多个用户而进行的模块化,它就是为预期的未来应用而进行的预置和缓存。

计算思维是通过冗余、堵错、纠错的方式,在最坏情况下进行预防、保护和恢复的一种思维。它称堵塞为死结,叫合同为界面。它就是学习在谐调同步相互会合时如何避免竞争的情形。

计算思维是利用启发式推理来寻求解答。它就是在不确定情况下的规划、学习和调度。它就是搜索、搜索、再搜索,最后得到的是一系列的网页,一个赢得游戏的策略,或者一个反例。计算思维是利用海量的数据来加快计算。它就是在时间和空间之间,在处理能力和存储容量之间的权衡.


它是什么,又不是什么?

计算机科学是计算的学问——什么是可计算的,怎样去计算。因此,计算思维具有以下特性:

概念化,不是程序化。计算机科学不是计算机编程。像计算机科学家那样去思维意味着远远不止能为计算机编程。它要求能够在抽象的多个层次上思维。

基础的,不是机械的技能。基础的技能是每一个人为了在现代社会中发挥职能所必须掌握的。生搬硬套之机械的技能意味着机械的重复。具有讽刺意味的是,只有当计算机科学解决了人工智能的宏伟挑战——使计算机像人类一样思考之后,思维才会变成机械的生搬硬套。

人的,不是计算机的思维。计算思维是人类求解问题的一条途径,但决非试图使人类像计算机那样地思考。计算机枯燥且沉闷;人类聪颖且富有想象力。我们人类赋予计算机以激情。配置了计算设备,我们就能用自己的智慧去解决那些计算时代之前不敢尝试的问题,就能建造那些其功能仅仅受制于我们想象力的系统。

数学和工程思维的互补与融合。计算机科学在本质上源自数学思维,因为像所有的科学一样,它的形式化解析基础筑于数学之上。计算机科学又从本质上源自工程思维,因为我们建造的是能够与实际世界互动的系统。基本计算设备的限制迫使计算机学家必须计算性地思考,不能只是数学性地思考。构建虚拟世界的自由使我们能够超越物理世界去打造各种系统。

是思想,不是人造品。不只是我们生产的软件硬件人造品将以物理形式到处呈现并时时刻刻触及我们的生活,更重要的是还将有我们用以接近和求解问题、管理日常生活、与他人交流和互动之计算性的概念;而且,

面向所有的人,所有地方。当计算思维真正融入人类活动的整体以致不再是一种显式之哲学的时候,它就将成为现实。

许多人将计算机科学等同于计算机编程。有些家长为他们主修计算机科学的孩子看到的只是一个狭窄的就业范围。许多人认为计算机科学的基础研究已经完成,剩下的只是工程部分而已。当我们行动起来去改变这一领域的社会形象时,计算思维就是一个引导着计算机教育家、研究者和实践者的宏大愿景。我们特别需要走进大学之前的听众,包括老师、父母、学生,向他们传送两个主要信息:

1) 智力上极有挑战性并且引人入胜的科学问题依旧亟待理解和解决。这些问题的范围和解决方案的范围之唯一局限就是我们自己的好奇心和创造力;同时一个人可以主修计算机科学并且干什么都行。一个人可以主修英语或者数学,接着从事各种各样的职业。计算机科学也一样。一个人可以主修计算机科学,接着从事医学、法律、商业、政治,以及任何类型的科学和工程,甚至艺术工作。

2) 计算机科学的教授应当为大学新生开一门称为“怎么像计算机科学家一样思维”的课,面向非专业的,而不仅仅是计算机科学专业的学生。我们应当使大学之前的学生接触计算的方法和模型。我们应当设法激发公众对于计算机领域中的科学探索之兴趣,而不是悲叹对其兴趣的衰落或者哀泣其研究经费的下降。所以,我们应当传播计算机科学的快乐、崇高和力量,致力于计算思维的常识化。



  • 9
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值