
近年来,程式设计在全球带起一股风潮,写程式不再是男性专属,而是不分男女老幼的全民运动。读者是否也发现身边越来越多朋友加入写程式的行列,甚至开始自学写程式呢?
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 以及与塔台的通讯系统。再更高一点,太空中的卫星正遵循轨道围绕著地球,提供气象资讯与即时卫星影像。
软体正在吃掉全世界。但这一切都还只是开始,在人们意识到这件事之前,大家早已穿戴起科技产品、用电脑程式控管家中门禁,并在不久的将来让机器人清扫环境、乘坐在无人驾驶车裡通勤、居住在虚拟实境裡。
刚刚提到的所有科技都是由软体驱动,在生活中的每个层面,大家都被程式码环绕,而未来程式码的数量只会不断增加,所以电脑科学和写程式与每个人的生活都有紧密连结。
什麽是电脑科学?
根据维基百科定义,电脑科学是系统性研究讯息与计算的理论基础,以及研究它们在电脑系统中如何实作与应用的实用技术学科。以下是几个电脑科学相关概念解释:
- 问题解决(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 提出三点:
- DIY如果你会写程式,你就能建立专属于自己的成品,从最简单的开 始,例如用 Excel 表格计算自己的税务资讯,更难一点点, 建立自己的网站、开发自己公司的 App 甚至打造一款手机游戏 与朋友共享。
- 故障排除一旦你开发了 App,便会发现要开发其他 App 也没那麽难 了。一旦你不再害怕电脑——未知的部分——你就朝著成为技术支 援专家前进一步。当科技接触生活中的每个部分,了解并且探索 如何操作它就变得跟学习如何阅读一样重要。
- 职涯。学习电脑科学的目标不是为了成为专业工程师,如同我们从小在 校园裡学习数学、物理、化学一样。不过如果发现自己对电脑科 学有兴趣的话,不难发现软体工程是现在成长最为快速、高薪的 工作选项之一。
把电脑科学和程式设计结合在一起
最后让我们再总结一下:
- 电脑科学是一种新的思考方式,其中的概念对身处在充满科技环境中的每个人相当有用。
- 程式设计是学习电脑科学相当重要的一环,用于将电脑科学的思维付诸实行。然而程式设计本身并不该被视为学习终极目标。
如何开始第一步
身处在这个时代,幸运的是我们手边有许多资源能从今天开始自学电脑科学!事实上,这可能是最好入门的学科了,你只需要一台电脑和网路就够,正在阅读本文的读者大概都具备了这两项基本条件了!
透过以下学习平台,大家今天就能开始上电脑科学的第一课:
大学课程
线上课程
社团与组织
本文发表自赵伊凡BLOG
©原创文章,转载请注明来源: 赵伊凡's Blog
©本文链接地址: 人人都该学写程式的反思:也许我们更该学习的是「电脑思维」
说的很好,培养思维很重要