人人都该学写代码的反思:也许我们更该学习的是「电脑思维」_最新动态_新闻资讯_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 新闻资讯 > 最新动态 > 人人都该学写代码的反思:也许我们更该学习的是「电脑思维」

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

 2014/5/21 16:09:43    程序员俱乐部  我要评论(0)
  • 摘要:PhotoCredit:电影「实习大叔」剧照近年来,程序设计在全球掀起一股热潮,写代码不再是男性专属,而是不分男女老幼的全民运动了。Yipit创办人曾说:「coding不是程序员的专利,每个人都要学习写代码」,例如在全球各地举办的RailsGirls工作坊,就帮助许多女性进入Ruby以及Rails的程序世界。除了摆脱过去写代码是男性专属的既定印象,写代码的年龄层也有年轻化的趋势,像是RailsGirls创办人推出教小朋友写代码的绘本、英国小学生使用iPad学习写代码等新闻屡见不鲜
  • 标签:学习 代码 我们 反思 写代码 人人

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.html" target="_blank">Systems 如何设计并建立一套复杂的系统且同时满足一连串的要求和限制呢?系统工程几乎在所有的商业模式中都是是相当重要和基本的。

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

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

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

——Michael Fellows and Ian Parberry

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

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

  什么是程序设计?

 

发表评论
用户名: 匿名