人人都该学写程式的反思:也许我们更该学习的是「电脑思维」

Photo Credit: 电影「实习大叔」剧照
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、浏览朋友的 Facebook 动态或在 Youtube 看了几个热门影片。现代人的生活与电脑紧密连结:医疗记录、税务记录、个人履历等等,各种想得到的服务几乎都能在电脑上操作。

而现在可能拿在您的手上、放在口袋或手边的智慧型手机,使用了 GPS 定位,配备相机、触控萤幕还有许多应用程式。此外您每天接触的电视节目、电影、音乐、游戏等等都与电脑绘图和数位音效处理紧密相关。

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

软体正在吃掉全世界。但这一切都还只是开始,在人们意识到这件事之前,大家早已穿戴起科技产品、用电脑程式控管家中门禁,并在不久的将来让机器人清扫环境、乘坐在无人驾驶车裡通勤、居住在虚拟实境裡。

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

什麽是电脑科学?

什麽是电脑科学?

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

  1. 问题解决(Problem solving)透过学习演算法,像是 divide and conquer、 recursion、heuristics、greedy search、 randomized algorithms 等,帮助你解决问题。
  2. 逻辑(Logic)使用精准和正式的方法去思考,包括 abstraction、 boolean logic、number theory、set theory 等理 论,帮助你更严谨的解决问题。
  3. 数据(Data)你会开始接触资讯理论并开始提出类似「什麽是资讯?」、「如 何呈现资讯?」等这类问题。
  4. 系统 Systems如何设计并建立一套複杂的系统且同时满足一连串的要求和限制 呢?系统工程几乎在所有的商业模式中都是是相当重要和基本 的。
  5. 思考(Thinking)理解人类心智的最好方式便是複製,像是人工智慧 AI、自然语 言处理等是走在最前端的科技,其不止牵涉电脑科学,同时还有 生物学、心理学、哲学和数学。

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

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

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

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

什麽是程式设计?

什麽是程式设计?

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

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

  1. DIY如果你会写程式,你就能建立专属于自己的成品,从最简单的开 始,例如用 Excel 表格计算自己的税务资讯,更难一点点, 建立自己的网站、开发自己公司的 App 甚至打造一款手机游戏 与朋友共享。
  2. 故障排除一旦你开发了 App,便会发现要开发其他 App 也没那麽难 了。一旦你不再害怕电脑——未知的部分——你就朝著成为技术支 援专家前进一步。当科技接触生活中的每个部分,了解并且探索 如何操作它就变得跟学习如何阅读一样重要。
  3. 职涯。学习电脑科学的目标不是为了成为专业工程师,如同我们从小在 校园裡学习数学、物理、化学一样。不过如果发现自己对电脑科 学有兴趣的话,不难发现软体工程是现在成长最为快速、高薪的 工作选项之一。

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

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

最后让我们再总结一下:

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

如何开始第一步

如何开始第一步

身处在这个时代,幸运的是我们手边有许多资源能从今天开始自学电脑科学!事实上,这可能是最好入门的学科了,你只需要一台电脑和网路就够,正在阅读本文的读者大概都具备了这两项基本条件了!
透过以下学习平台,大家今天就能开始上电脑科学的第一课:

大学课程

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

线上课程

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

社团与组织

  1. CoderDojo
  2. Girls Who Code
  3. Girl Develop It
  4. Code.org
  5. Coding meetup Groups

本文发表自赵伊凡BLOG

©原创文章,转载请注明来源: 赵伊凡's Blog
©本文链接地址: 人人都该学写程式的反思:也许我们更该学习的是「电脑思维」

“人人都该学写程式的反思:也许我们更该学习的是「电脑思维」”的32个回复

  1. Pingback: Blue Coaster33
  2. Pingback: Sat TV
  3. Pingback: get satellite tv
  4. Pingback: Direct TV
  5. Pingback: her og nu lan
  6. Pingback: mobile porn
  7. Pingback: lane penge
  8. Pingback: parking
  9. Pingback: stop parking
  10. Pingback: water ionizer loan
  11. Pingback: important site
  12. Pingback: a1 locksmiths reading
  13. Pingback: house blue
  14. Pingback: ionizer loans
  15. Pingback: ionizer payment plan
  16. Pingback: minecraft maps
  17. Pingback: paypal loans
  18. Pingback: he has a good point
  19. Pingback: over here

发表评论

电子邮件地址不会被公开。 必填项已用*标注