计算机科学导论
什么是计算机科学,以及复杂性与抽象如何塑造这门学科
笔记
下文中的所有链接均为完全可选的拓展阅读,收录于此纯粹是为了供读者兴趣和消遣。
什么是计算机科学?
这个问题没有唯一的标准答案。对许多不同的人来说,计算机科学意味着许多不同的事情。对一些人来说,它意味着构建一个让你与朋友保持联系的网页应用;对另一些人来说,它意味着设计工程自动驾驶汽车;还有一些人认为它意味着大量的数学;诸如此类。
概括地说,计算机科学回答以下三个问题:
- 我们能计算什么?
- 我们如何计算它?
- 用计算结果我们又能做什么?
从这个意义上说,计算机科学并不是关于”计算机”的学问——那更接近电气工程——它也不是一门严格意义上的”科学”——科学家发现世界,而我们创造世界。
复杂性与抽象
计算机科学中所有有趣的问题,本质上都是复杂的——它们的解决方案同样如此。
想一想你的网页浏览器,也就是你此刻正在用来看这个页面的程序。显然,它解决了一个有趣的问题,同时也极其复杂:当你在地址栏输入一个 URL 时,浏览器必须确定该联系哪台服务器,请求服务器发送你要找的网页,下载网页,解析网页,最后把它显示在屏幕上。这些步骤中的每一步,又都包含各自复杂的环节。
这一切是如何协同运作的呢?答案只有一个词:抽象(abstraction)!抽象让我们能够把一个复杂的过程当作一个单独的单元来看待,并把这个单元用在更加复杂的过程之中。
在日常生活中,我们已经在使用抽象:开车时,我们需要知道如何操作方向盘和踏板,却不必了解发动机和传动系统的工作原理;烤一个苹果派,我们需要一份食谱和一台烤箱,却不需要自己种苹果,也不必了解苹果是怎么种出来的;使用互联网时,我们也不需要理解请求网页的协议——浏览器替我们把这个过程抽象掉了,任何人都能轻松快捷地浏览网页。
在本课程中,我们将探索用创建抽象来解决问题的各种技术。