像计算机科学家一样思考
软件工程师Yevgeniy Brikman认为:
编程,码代码只是一个工具,只是计算机科学的一部分。是一种你与计算机交互的方式:如何显示一个app,如何存储数据,如何对你的点击回应。
而计算机科学,教会你批判性思考,能够在科技领域之外使用,教你如何处理并重新表达信息的能力。
比如说,我们坐飞机,但不需要每个人都考飞行员证。然而有些工具能够帮助你理解飞机飞行。
物理和数学帮你理解重力,力,压力,速度,摩擦,升力。
生物学教你人体在高空,缺氧,极寒中的反应。
历史解释了飞机是如何发明,发展,它在旅行、商业、战争中的作用。
高中的教育让你有了一个更广泛的认知,而不是教你如何开具体某一种型号的飞机。
同样的,我们应该关注于计算机科学,而不是单纯的编程。前者是一种通用的思维方式,后者只是一个具体的工具。
什么是计算机科学?
计算机科学是一门计算的学问:如何表示、处理信息。
1. 解决问题:你会学习算法,一种普遍的策略。比如divide and conquer, recursion, heuristics, greedy search, randomized algorithms. 这些帮助你建模,分解,解决任何种类的问题。
2. 逻辑:abstraction, Boolean logic, number theory, set theory.
3. 数据:information theory. 什么是信息?你如何表示它?如何给现实世界建模?
4. 系统:如何设计、建立复杂的系统,来满足一系列需求和限制?System engineering是每个企业的核心主题。
5. 思维:理解人类思维最好的方法就是代替它。有些主题比如人工智能,机器学习,计算机视觉,自然语言处理。不仅仅是计算机科学,还是生物、心理、哲学、数学。
计算机科学训练的是你的大脑,教会你一种思维方式。
然而单独的思维是不够的,我们还需要知道如何使用它。这时我们就需要学习工具——编程。
什么是编程?
学习编程带来一系列好处:
1. DIY:你可以实现自己想要的功能,比如给一系列照片重命名,一个excel公式来计算税。给你的作品集建一个网站,给公司做一个手机app,做一个可以和朋友一起玩的游戏。
2. 分析解决问题:一旦你构建了一些app,解析出其他app就很容易了。不再害怕编程,在这个科技高速发展的时代,成为技术支持。
3. 事业:学习计算机科学的目标不是成为一个专业的编程人员。但如果你对其有热情,可以找软件工程的工作。
将计算机科学的思维和编程结合起来,就可以帮助你实现更多的东西。
《Don’t learn to code. Learn to think.》笔记