不要学习代码,要学会思考

  英文原文:Don't learn to code, learn to think

  译/赖信涛

  这是一个人人都在学习编程的时代:Code.org请了比尔·盖茨,马克·扎克伯格和克里斯·波什等这些名人,来告诉你,每个人都可以编程;CoderDojo’s在各个国家悄然兴起;在英国,编程已经是各个年级学生的正式课程

  我认为这里有个误区。别误会我——如果每个人都会一些编程知识,这个世界当然会变得更好——但是学会写代码不应该是我们的目标。计算机和程序只是一个工具,是一种达到某种目的的方法。

  真正的目标应该是学会思考的方式。换句话说,我们应该尝试教授计算机科学,而不是教着写代码。在本文中,我将介绍两者的不同,以及为什么后者是当下学编程浪潮成功的关键。

  如果你喜欢视频的解释,我强烈推荐Simon Peyton Jones的TED,Teaching Creative Computer Science。这和本文的论点不谋而合。

  看完之后,依然想看文字的版本么?好的。让我们先从一个关键的问题开始吧:为什么你要学习编程或计算机科学呢?

  回答这个问题之前,我们先卖个关子。

  欢迎来到真实的世界

red pill 300x150 不要学习代码,要学会思考

  现在,你可能正在用Chrome或者Firefox浏览器在看这篇文章,运行在Windows或者OS X操作系统上,用的一台笔记本或者台式机。我猜你今天还花了一些时间查看电子邮件,刷Facebook,或者在Youtube上看视频了。如今,人们的生活越来越依赖于计算机:医疗记录存放在了数据库中;简历放在LinkedIn上;使用Google或者Facebook来推销你的产品;用Amazon来买东西;在网上报税;在线管理你银行的账户;甚至还涉足了比特币

  现在,从屏幕上移开你的眼睛:在你的口袋,包包,或者旁边的桌子上,可能就有一部智能手机。它装有GPS,摄像头,触摸屏,还有成千上万的应用。如果你现在在客厅,你可能还有一台联网的LCD电视,一台DVR,DVD播放器,苹果TV,XBox,或者PlayStation。你每天看的电影,听的音乐,玩的游戏,就封装在这些设备显卡和声卡中。

  软件正在占领这个世界,但这还只是个开始。不知不觉中,你就穿着各种可穿戴设备用计算机来锁门,用机器人来运货打扫房间。拥有你自己的电子技术,经营自己的生产厂,生活在虚拟的世界中,乘自动驾驶的汽车去旅行,甚至飞向太空

  代码无处不在

Another Matrix Code v2 0 by luttman23 300x240 不要学习代码,要学会思考

  毫无疑问,以上我所描述的技术的源动力是软件。你生活的每一个方面,都被代码所包围。大量的代码会让未来变得美好。

  但是,仅仅是一项技术非常普遍不能成为你在学校学习它的理由。就像我们乘坐飞机,但是考飞机驾照并不在从幼儿园到12年级的课程中。

  然而,飞行的原理却是课程的一部分:

  1. 物理学和数学让你明白重力、弹性元件、压力、速度、摩擦和攀升等方面的知识。
  2. 生物学让你明白人体在高海拔、低氧、极端寒冷等情况下的反应。
  3. 历史解释了飞机的发明,进化,以及其在旅行、商业和战争中扮演的角色。

  从中学毕业的时候,你就已经知道了飞机是什么,它是如何工作的,如何安全乘坐飞机。通识类课程,像物理学,数学,历史,教会你如何思考各种各样的问题,包括飞机;与之形成对比的是教会你是用工具的课程,像教你如何驾驶一种特定类型的飞机。

  什么是计算机科学?

  计算机科学是一门研究计算的学科:就是说,如何表述和处理信息。以下是一些你会学到的概念:

  1. 解决问题:你将会学习算法——就是通用的一些方法,像是分治算法、递归、遗传算法、贪心算法——帮助你建模,分解,解决各种各样的问题。
  2. 逻辑:你将开始使用精密又正式的方法思考问题,像是抽象,逻辑代数,数论和集合论,来用严密的逻辑解决问题。
  3. 数据:你将会接触到信息论,并开始思考什么是信息?如何表述?如何对真实的世界建模?
  4. 系统:如何设计与构建复杂的系统,来实现一系列的需求?系统工程是一个几乎在各个领域都涉及到的重要的主题。
  5. 思考:了解人类大脑最好的方式,是试着去复制它。像人工智能、机器学习、计算机视觉、自然语言处理这些话题,不仅仅在计算机科学领域,同时在数学,生物,物理,哲学等方面都是最前沿的科学。

  注意,上面的清单中并没有提到代码或者编程,因为它们只是实现计算的工具:它们本身并不是计算机科学。

计算机科学并不是关于计算机的科学,就像天文学不是关于望远镜的科学,生物学不是关于显微镜的,滑雪不是关于烧杯和试管。科学并不是研究工具的。——Michael Fellows和Parberry

  什么是编程?

ScreenShot2014 05 19at2 300x178 不要学习代码,要学会思考

  编程,或写代码,就是指示计算机来执行哪一些指令。如果你从未写过代码,也可能通过操作应用程序来和计算机交互。其实在内部,这个应用程序也是通过代码来告诉计算机显示什么,在哪里检索数据,以及对于你的点击操作做出什么回应。

  所有的编程都是建立在我们上面讨论的计算机科学的原理上的。值得注意的是,同一组概念——逻辑、算法、数据、系统工程——可以用来构建任何软件,小到你现在阅读这篇文章用的这个浏览器,大到飞机上的自动驾驶软件。尽管会涉及到一些数学和架构的知识,但这却是极富创造性的活动:你将想法变成现实,一次一行代码。

  将编程作为学习计算机科学的一部分有以下的好处:

  1. DIY:如果你会编程了,你就可以制作一些东西。可以从最简单的开始:做一个能给旅游照片批量重命名的脚本,或者写一个Excel公式帮自己计算税务;然后,开始发烧级别的:给你自己的文件系统写一个浏览器;给你们公司做一个app;或者写一个能够和朋友一起玩的游戏。
  2. 解决问题:一旦你亲手做了几个app,弄清楚其他的就简单多了。一旦你不再害怕计算机——未知的领域——你就会成为技术达人。随着技术已经关系到我们生活的每个部分,掌握它们就会变得和学会阅读一样重要。
  3. 事业:我们学习计算机科学的目标不是成为职业的程序员。我们都学了数学,物理,化学,但是我们并没有都成为这方面的专家。然而,如果你对这方面有激情的话,软件工程师也是一份评价高薪资高进步快的职业。

  综合考虑

binary Language 300x225 不要学习代码,要学会思考

  简要重述:

  1. 计算机科学是一种新的思考方式。在这个技术时代,其中的概念对每一个人都很有帮助。
  2. 编程是学习计算机科学重要的一部分,以实现这些新的思考方式。然而,编程本身并不是目标。

  混淆这两个观点,就导致了现在学习编程热潮的圈子的一些问题。Slate 发布了一篇文章,《也许并不是每一个人都需要学编程》;Atlantic写了一篇《新闻学院应该要求记者写代码吗?不》;Jeff Atwood写了《请不要学习写代码》,其中提出了一个精辟的问题:

“如果迈克尔·布隆伯格(纽约市市长,译者注)是一个专业的Java程序员,他能更好的领导一个美国的大城市么?”

  当然,这个问法是错误的。这就表示这些活动的目标是学习代码,而不是学习思考的方式。如果连Jeff Atwood这样经验丰富的程序员都搞错了,那么普通人更分不清楚了。问题应该这样问:

如果通过学习解决问题的方法,训练严密的逻辑来提高自己的能力,那么迈克尔·布隆伯格(或者其他人)能工作的更好吗?

  我相信,答案是显而易见的。而且随着科技的发展,答案会越来越清晰。这就是为什么,我们要把教学重点放在计算机科学上,而不是代码。

  如何开始?

HwYWwfsh 213x300 不要学习代码,要学会思考

  好消息是,你不必等Code.org来宣布你已经开始学习计算机科学了。事实上,这是最容易学习的一个主题,你只需一台电脑和一根网线。我想,现在你正在阅读本文,那么很可能你两者都有了。

  这里,分享一些好的资源:

  University courses

  1. Coursera
  2. Udacity
  3. MIT OpenCourseWare
  4. Stanford Engineering Everywhere
  5. Academic Earth

  Online tutorials

  1. Khan Academy
  2. Treehouse
  3. MIT Scratch
  4. Codecademy
  5. Code School

  Communities and clubs

  1. CoderDojo
  2. Girls Who Code
  3. Girl Develop It
  4. Code.org
  5. Coding meetup Groups
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 作为一个AI模型,我并没有真正的智慧,而是通过大量的训练数据和算法模型进行学习和推理。然而,我的设计目的就是为了能够在很大程度上模拟人类的智慧和思维方式,从而尽可能地接近人类的表现。因此,你可以通过和我进行交互和对话,从中获取一些你所需要的智慧和知识,但无法完全脱离代码逻辑。 ### 回答2: 要脱离代码逻辑并拥有智慧,我们需要培养一些综合能力和思维模式。首先,我们应该注重培养自己的创造力。创造力是智慧的基石,它使我们能够从不同的角度思考问题,提出创新的解决方法。我们可以通过阅读广泛的书籍、参与头脑风暴活动和培养艺术兴趣等方式来激发自己的创造力。 其次,我们应该加强思维的灵活性。很多时候,代码逻辑是非常严谨和规范的,但在现实生活中,问题常常是复杂且模糊的。为了应对这样的挑战,我们需要具备灵活的思维,能够灵活地应对各种情况。我们可以通过解决难题、学习新的领域和参与跨学科的合作等方式来增强思维的灵活性。 此外,我们还需要发展自己的人际交往和合作能力。智慧不仅仅是个体的思维能力,还涉及到与他人的合作和沟通。通过与他人交流、分享知识和接受他人的建议,我们可以从不同的角度看待问题,并获得新的思路和解决方案。 最后,我们应该保持开放的心态和持续学习的态度。智慧是一个不断发展和学习的过程,我们应该持续地学习新知识、探索新领域,并不断反思和改进自己的思考方式和行动方式。 总之,要脱离代码逻辑拥有智慧,我们需要培养创造力、加强思维的灵活性、发展人际交往和合作能力,并保持开放的心态和持续学习的态度。只有通过综合发展自己,我们才能够超越狭窄的代码逻辑,拥有智慧。 ### 回答3: 要脱离代码逻辑,拥有智慧,首先需要明确智慧的含义。智慧不仅仅是获取知识和技能,更是指对问题进行深思熟虑、灵活应对的能力。 首先,要有广阔的知识储备。不仅仅局限于编程领域,还应涉猎其他领域的知识,如艺术、哲学、心理学等。只有拥有多样的知识,才能从更广阔的角度去思考问题,产生独特的见解。 其次,要注重培养批判性思维能力。不仅要学会提出问题,还要学会质疑问题。在编程过程中,不应只盲目地套用固定的代码逻辑,而是要主动思考问题的本质和背后的原理。通过批判性思维,能够发现问题中的漏洞和矛盾,从而制定更加合理和创新的解决方案。 此外,要注重培养创造性思维能力。在遇到问题时,不要局限于传统的解决方案,而是要积极寻找创新、非常规的思路。培养想象力和创造力,可以通过阅读、思考和与他人的交流碰撞来实现。 还要善于观察和总结经验。通过观察和总结,我们可以从生活、工作和编程实践中发现规律和模式。对于编程逻辑,可以总结经验教训,积累常见问题和解决方案,形成自己的思维模式和方法论。 最后,要保持谦虚和学习的态度。面对自己的不足和错误,要有勇气承认并改正。通过与他人的交流和学习,可以拓宽自己的视野,与他人共同进步。 通过综合运用这些方法和原则,我们可以逐渐脱离代码逻辑,培养智慧思维,提升自己的解决问题的能力。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值