本站已关停,现有内容仅作科研等非赢利用途使用。特此声明。
查看: 1493|回复: 1
打印 上一主题 下一主题

人人都该学写代码的反思:我们更该学习的是"电脑思维"

[复制链接]
跳转到指定楼层
1#
发表于 2014-5-30 16:12:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家对程序设计多少有点理解是好事,但写代码不该成为最终的学习目标。写代码是一种工具,是达成目标的方法。那么真正的目标是什么呢?Yevgeniy Brikman 认为,让大家学会全新的思考模式才是真正的目标,我们该试着学习电脑科学而不只是写代码。

Photo Credit: 电影「实习大叔」剧照

近年来,程序设计在全球掀起一股热潮,写代码不再是男性专属,而是不分男女老幼的全民运动了。

Yipit 创办人曾说:「coding 不是程序员的专利,每个人都要学习写代码」,例如在全球各地举办的 Rails Girls 工作坊,就帮助许多女性进入 Ruby 以及 Rails 的程序世界。

除了摆脱过去写代码是男性专属的既定印象,写代码的年龄层也有年轻化的趋势,像是 Rails Girls 创办人推出教小朋友写代码的绘本、英国小学生使用 iPad 学习写代码等新闻屡见不鲜。

此外美国非营利机构 Code.org 曾找来多位科技名人如 Bill Gates、Mark Zuckerberg 以及体育界和政界明星拍摄短片,倡导每个人都该学习写代码,呼吁社会该更加重视软件教育以解决工程师稀缺的问题。(来自爱尔兰 CoderDojo 则是鼓励年轻人与小朋友写代码的非营利组织,他们分布在全球的多个城市)

然而,面对这股全民写代码的浪潮,曾任 TripAdvisor 软件工程师、现任 LinkedIn 资深软件工程师的 Yevgeniy Brikman 发表「Don't learn to code. Learn to think.」一文,他认为大家在学习写代码的同时,更重要的是学习电脑科学的思维模式。

大家对程序设计多少有点理解是好事,但写代码不该成为最终的学习目标。写代码是一种工具,是达成目标的方法。那么真正的目标是什么呢?Yevgeniy Brikman 认为,让大家学会全新的思考模式才是真正的目标,我们该试着学习电脑科学而不只是写代码。

接下来,将会解释两者的差异,并解释为何学习电脑科学更为重要。

欢迎来到真实世界

首先,或许很多人会想问:无论是程序设计或电脑科学,到底跟我有什么关系呢?为什么我该关心?

事实上,在阅读本文时,你可能正使用 Chrome 或 Firefox 浏览器,用的是 Windows 或 OS X 系统。并且你今天大概花了一些时间收发 email、浏览微博动态或在优酷上看了几个热门视频。现代人的生活与电脑紧密连结:医疗记录、税务记录、个人履历等等,各种想得到的服务几乎都能在电脑上操作。

而你使用的智能手机,使用了 GPS 定位,配备相机、触控屏还有许多其他的 APP 应用。此外你每天接触的电视节目、电影、音乐、游戏等等都与电脑绘图和数位音效处理紧密相关。

出门在外你可能会使用 Google Map 寻找路线,现在 Google 无人驾驶车都可以行驶在一般的道路上。而飞机则有自动驾驶、甚至在高空中也有 Wifi 及通讯系统。更高上大一点,太空中的卫星正围绕着地球,提供着气象资讯与卫星影像。

软件正在吃掉全世界。但这一切都还只是开始,在人们意识到这件事之前,大家早已用起穿戴设备、只能家居。用电脑控制家里的门禁。也许在不久的将来,机器人会清洁环境,出门乘坐无人驾驶车、住在虚拟现实世界里。

刚刚提到的所有的科技都是由软件驱动,渗透到生活中的各个层面。大家都被程序环绕,未来,代码量只会不断增加,所以电脑科学和代码与每个人的生活都有紧密连结。

什么是电脑科学?

根据维基百科定义,电脑科学是系统性研究讯息与计算的理论基础,以及研究它们在电脑系统中如何实作与应用的实用技术学科。以下是几个电脑科学相关概念解释:

问题解决(Problem solving)透过学习演算法,像是 divide and conquer、 recursion、heuristics、greedy search、 randomized algorithms 等,帮助你解决问题。

逻辑(Logic)使用精准和正式的方法去思考,包括 abstraction、 boolean logic、number theory、set theory 等理论,帮助你更严谨的解决问题。

数据(Data)你会开始接触资讯理论并开始提出类似「什么是资讯?」、「如何呈现资讯?」等这类问题。

系统 Systems 如何设计并建立一套复杂的系统且同时满足一连串的要求和限制呢?系统工程几乎在所有的商业模式中都是是相当重要和基本的。

思考(Thinking)理解人类心智的最好方式便是复制,像是人工智慧 AI、自然语言处理等是走在最前端的科技,其不近牵涉了电脑科学,同时还有:生物学、心理学、哲学和数学。

注意到了吗?上面完全没有提到跟写代码相关的词条,这是因为写代码只是实现电脑运算的一种工具,写代码并不包含在电脑科学的概念宗旨里。

电脑科学不只是跟电脑相关,就如同天文学不只是望远镜、生物学不只是显微镜、化学不只是烧杯试管一般。科学是与工具无关的。
——Michael Fellows and Ian Parberry

事实证明,比起电脑,我们更倚赖另一种运算工具:大脑!而电脑科学的目标正是要教导我们以一种全新、普世且能被广泛应用的方式思考。当科技变得越来越普及时,这种全新的思考方式将会变得跟物理、数学、生物、历史等学科一样重要。

总而言之,光是思考是不够的,我们必须知道如何应用。在物理领域,我们以磁铁、棱镜进行实验;在生物领域,我们以培养皿、试管进行观察;在电脑科学领域,我们学习写代码。


什么是程序设计?

程序设计,或说是写代码,是指对电脑下指令以让其完成某项特定的动作。如果从来没写过代码,您大概曾经在 App 中点击过某些按钮,这些 App 正是由许多程序代码组成,透过程序代码告诉电脑如何展示界面、要在哪里取得数据以及如何回应使用者的点击。

程序设计完全是基于上述电脑科学的原则,刚刚谈到的逻辑、演算法、系统工程等能用来建构任何事情,从你正用来阅读本文的浏览器到飞机上的自动驾驶程式都可以。即使程序设计牵涉到许多数学与结构,但这同时也相当能激荡创意的实作。用一条条的代码,把想法化为真实存在的产品。

学习程序设计能为你带来不少好处,以下 Yevgeniy Brikman 提出三点:

1、DIY

如果你会写代码,你就能建立专属于自己的产品,从最简单的开始,例如用 Excel 表格计算自己的税务问题。更难一点, 建立自己的网站、开发自己公司的 App 甚至打造一款手机游戏与朋友共享。

2、故障排除

一旦你开发了 App,便会发现要开发其他 App 也没那么难了。一旦你不再害怕电脑未知的部分,你就朝着成为技术专家又前进了一步。当科技渗透生活的各个部分,去了解并且探索。如何操作它,就变得跟学习如何阅读一样重要。

3、职业生涯

学习电脑科学的目标不是为了成为专业工程师,如同我们从小在校园里学习数学、物理、化学一样。不过如果发现自己对电脑科学有兴趣的话,不难发现软件工程是现在成长最为快速、高薪的工作选项之一。

把电脑科学和程序设计结合在一起

最后让我们再总结一下:

电脑科学是一种新的思考方式,其中的概念对处在充满科技环境中的每个人都相当有用。
程序设计是学习电脑科学相当重要的一环,用于将电脑科学的思维付诸实行。然而,程序设计本身并不该被视为学习终极目标。

如何开始第一步

身处在这个时代,幸运的是我们手边有许多资源能从马上开始自学电脑科学!事实上,这可能是最好入门的学科了,你只需要一台电脑就够了,正在阅读本文的读者大概都具备了这两项基本条件了!LOL~

透过以下学习平台,大家今天就能开始上电脑科学的第一课:

大学课程

线上课程

社团与组织

原文链接:http://www.inside.com.tw/2014/05/20/dont-learn-to-code-learn-to-think


ChinaGDG.com
回复

使用道具 举报

2#
发表于 2014-6-3 00:48:04 | 只看该作者
第一张图是《实习大叔》,不错的电影
ChinaGDG.com
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表