跳至内容

计算机科学基础/导论

来自维基教科书,开放世界中的开放书籍

你是否曾经想过计算是什么以及计算机是如何工作的?什么是计算机科学?为什么 - 除了显而易见的原因 - 它很重要?计算机科学家做什么?他们研究什么类型的问题?他们使用什么方法来解决这些问题?一般来说,计算机科学家是如何思考的?

问题 1:当您听到“计算机科学”时,您会想到什么?写一段话或列表,或者画一张您想到的图像或图表。

问题 2:目前,计算机科学中哪些部分对您来说最有趣或最重要?为什么?

当您听到“计算机科学”这个词时,也许您会想到一台特定的计算机。或者您认识的与计算机打交道的某人。或者某个特定的计算机使用,比如在线游戏或社交网络。计算和计算机科学有许多、许多不同的方面。

了解一些计算机科学知识有很多有用的原因和重要性。计算机以不同的方式影响着我们生活中的许多方面。对于许多人来说,计算机在他们所做的工作、休闲活动、与他人交流的方式、教育、医疗保健等方面都发挥着或将发挥重要作用。想想您在日常生活中直接或间接遇到的各种计算机和计算方式。

更具体地说,这本书将涵盖什么?本文的首要目的是让您更深入地了解计算机科学的基本原理:什么是计算机科学?它与计算机编程相同吗?什么是计算机?例如,大多数人会同意“笔记本电脑”是一台计算机,而“平板电脑”也是一台计算机,但智能手机呢?计算机是如何工作的?例如,我们不仅可以在计算机中存储数字和文本,还可以存储图像、视频文件和音频文件;计算机如何处理如此不同的数据?计算机科学中有哪些有趣和重要的分支?例如,关于计算机图形、网络或数据库等分支,应该知道什么?为什么这些都重要?对于大多数人来说,仅仅使用计算机而不是深入了解计算机和计算机科学就足够了吗?

这些都是关于计算的基本问题,在本书中我们将探讨这些问题和其他问题。总而言之,本书的其中一个目的是提供计算机科学的概览,不仅向您介绍计算机科学的基本原理 - 例如计算机如何在基本层面上工作 - 而且还探讨这些基本原理的重要性。

这个概览有两个部分特别重要:虽然主题是计算机科学的概览,但两个基本主题是如何在计算机科学中使用数学以及计算机科学如何影响并受社会影响。

这两个主题都非常适合计算机科学概览书籍。计算机科学严重依赖数学(事实上,一些大学将计算机科学和数学专业设在同一个系)。在计算机科学中使用数学的某些方式是显而易见的 - 例如,在电子表格等计算工具中 - 但还有许多不那么明显的方式,数学对于计算机科学至关重要。例如,在计算机的最低层,数据(无论数据是数字、文本、音频、视频等)都以二进制表示,即以 0 和 1 的字符串表示。这意味着要了解计算机的某些基本知识,您需要了解二进制数和运算。

计算机也以多种方式影响着社会,从电影中使用计算机生成的图像,到大型政府或商业数据库,再到互联网对社会的多种影响。而社会也影响着计算机,例如通过用户行为和各种监管方式。

虽然数学和技术与社会似乎过于不同而无法舒适地包含在同一本书中,但实际上,许多计算机科学主题从这两个角度探索起来都很有用 - 从某种意义上说,这些不同的观点是“同一枚硬币的两面”。例如,本书中的一个主题是计算机安全。数学在安全性中发挥作用,例如在加密中。计算机安全也有许多社会方面,例如国家安全、基础设施安全和个人安全。本书中的大多数主题同样都具有数学基础和社会方面,从这两个角度探索这些主题将带来更深入的理解。

这本书不是什么

[编辑 | 编辑源代码]

有许多不同类型的计算机科学入门书籍。因此,除了解释这本书是什么之外,说明它不是什么也很有用。

这不是一本编程书籍。编程是计算机科学的核心活动,但它不是计算机科学的全部。由于编程很重要,我们会花一些时间来学习它。但是,由于计算机科学远远不止编程,而且这是一本概览书籍,所以这部分时间将只占本书的一小部分。

这不是一本计算机应用书籍。许多其他书籍涵盖了基本的计算机应用程序。例如,一个流行的选择是教授如何使用文字处理器、电子表格、数据库管理程序和演示软件。这些和其他应用程序是计算机科学的重要组成部分,因此在本书中,您将有机会学习一些您可能不熟悉的应用程序。然而 - 与编程一样 - 使用应用程序只是学习计算机科学的一部分,因此应用程序的使用将只占本书的一小部分。

这不是一本“计算机素养”或“计算机熟练程度”的书籍。计算机素养或计算机熟练程度有很多不同的定义。例如,维基百科的定义源自美国国会技术评估局的一份报告,是“使用计算机和相关技术的知识和能力,技能范围涵盖从基本使用到编程和高级问题解决”。[1] 本书的某些部分将涉及使用计算机来获取各种技能。例如,您将完成各种与计算机相关的任务,例如执行网络搜索、构建网页、进行基本的计算机编程以及使用数据库。然而,这只是一部分,而不是整本书的内容。因此,这本书与计算机素养书籍有一些共同特征,但总体上它的重点比那种教科书更广泛。

这不是一本“计算机科学中的伟大思想”的书籍。计算机科学入门材料目前的趋势是通过其重要、基本的思想来学习计算机科学。[2] 本书确实涵盖了一些关键思想。例如,我们将要学习的一个早期主题是如何将计算机中的所有数据,无论这些数据是数字、文本、视频还是其他数据,都表示为计算机中的 0 和 1。一般来说,书中的主题是计算机科学的基础。然而,这本书也与伟大思想书籍有所不同。它并不仅仅关注思想,而是广泛地探索了许多与计算机相关的议题、子主题和计算机技能。此外,与典型的伟大思想书籍相比,本书更侧重于数学思维,以及技术和社会。

除了编程、应用程序、计算机熟练程度和伟大思想之外,还有许多其他类型的计算机科学入门教科书。一些教科书调查了各种计算机科学主题。另一些则侧重于专业的软件开发实践。还有一些通过特定的“视角”来了解计算,例如网络或计算生物学。等等。本书与这些其他课程有一些共同点,但也存在显著差异。特别是,最大的区别是本书将计算机科学的概览与对数学以及社会和技术的强烈强调融合在一起;这是一种强调的平衡,具有许多优点,但在计算机科学入门课程中并不常见。

这本书讲的是什么?

[编辑 | 编辑源代码]

这本书涵盖了数学思维,以及科技与社会,这都是非常重要的组成部分。许多教科书通过编程、计算机工作原理或其他计算方面来介绍计算机科学。然而,目前还没有一本合适的教材能将计算机科学概述与足够的数学思维、社会和技术重点相结合。

乍一看,一本介绍计算机科学的书会涉及通识教育可能显得奇怪。计算机科学与通识教育有什么关系呢?深入理解计算机需要从多个不同的角度进行探索。这不仅包括理解计算机的工作原理——例如,计算机科学的数学基础——还包括理解它们如何影响社会以及受社会影响。总之,要深入理解计算机和计算机科学,就必须从多个角度进行探索,包括通识教育所体现的视角。

数学思维

[编辑 | 编辑源代码]

问题 3. 当你听到“数学”这个词时,你会想到什么?写一段文字、列个清单,或者画一张你脑海中浮现的图像或图表。

问题 4. 根据你使用计算机的经验,列出一些数学在计算中应用的例子。

计算机和数学有什么共同点?为什么一本计算机科学概述书籍需要数学思维?

本书中许多数学的应用都是将数学思想和运算应用于解决计算机科学问题。计算机科学有许多重要的数学基础,因此,理解计算机科学就意味着能够解决涉及这些基础的数学问题。同时,本书中不同的数学应用也体现了数学本身的特点,以及数学和计算机科学之间密切的联系。例如,本书中的数学说明了以下几点:

  • 许多计算机科学中的关键思想,例如数据表示,都依赖于数学。
  • 计算机科学的许多部分都使用特殊的数学或逻辑符号和术语。
  • 计算机能够表示和处理多种不同类型的数据,以及相关的能力,能够使用多种运算以不同的表示形式表示和处理量。
  • 解决问题、分析情况或指定计算过程都需要严谨性。
  • 在解决计算问题时,需要使用数字和算术。然而,这些问题往往并非简单的算术问题,而是具有一些特殊特征,例如涉及重复运算,或涉及极其大或极其小的数字。
  • 存在各种不同的算法来解决诸如模式匹配、统计数据表中指定值的个数或查找图中两个节点之间的最短路径等各种问题。

解决本书中的许多问题将涉及一些数学运算,因此需要对数学或逻辑符号进行操作。以下是一些例子:

  • 在探索低级逻辑运算时,你需要对二进制表示和逻辑运算符进行操作。
  • 在研究算法的增长率时,你需要使用计算机科学家常用的ΟΘ符号。
  • 在指定计算过程时,你需要使用“伪代码”或编程语言。这些语言与数学或逻辑符号具有许多相同的符号特征,尤其是在计算处理涉及大量数值计算时。

本书中的数学水平是大学入门级别的数学。因此,数学并不高级,本书除了普通大学入学要求之外,没有其他数学先决条件。同时,本书中的数学内容超出了高中数学,尽管本书中使用的许多数学类型在一些高中数学课程中出现过。

例如,本书中一个数学的应用是二进制(或二进制)表示。这是一个通常出现在高中数学课程中的主题,二进制表示的基础并不复杂。在本书中,我们将回顾一些基本知识,例如如何将数字在十进制(十进制)和二进制表示之间转换,以及如何进行简单的运算,例如将两个二进制数相加。但是,我们还将在其他方面使用二进制表示,这些方面是计算机工作原理的基础。以下是一些例子:

  • 我们将探讨几种不同的方法来表示二进制表示中的数字。例如,整数通常以二进制形式表示,而不是使用通常的直接二进制表示,而是以“二进制补码”形式表示。所以,本书的一部分内容是学习“通常”的二进制表示,以及这些替代方案。
  • 我们将探讨二进制表示中的各种问题,例如使用的“位”数,这些问题对于确定计算机使用的数字的范围和精度至关重要。
  • 除了表示数字之外,我们还将探讨计算机如何使用二进制表示来表示和操作其他类型的数据,例如文本、颜色和图像。
  • 除了二进制加法等基本运算之外,我们还将探讨二进制表示中的其他运算。例如,逻辑运算在图像处理中屏蔽颜色以及在实现低级计算机硬件中的算术运算中非常重要。

总之,尽管本书中的许多数学主题都出现在高中数学中,但它们的广度或深度都超出了这些主题在高中通常的处理范围。

科技与社会

[编辑 | 编辑源代码]

问题 5. 当你听到“科技与社会”时,你会想到什么?写一段文字、列个清单,或者画一张你脑海中浮现的图像或图表。

问题 6. 根据你使用计算机的经验,列出一些例子说明计算如何影响社会以及受社会影响。

本书的主题是计算机和计算。计算机以多种方式影响了社会,我们将在本书中探讨其中的一些。当前和未来的计算机应用将以更多方式影响社会。

通过本书,你应该能够理解计算机的工作原理。这包括理解计算机硬件和计算机软件的基础知识。

然而,更广泛地说,计算机科学依赖于其他科学、工程和相关领域的成果。我们在本书中将看到最突出的例子是数学在计算机科学中必不可少的各种方式。

科技影响社会。然而,这并非单行道。社会也影响着科技。例如,社会通过政府对研究的支持来促进科技发展。另一个例子是,不同的个人、企业和其他组织以科技创造者无法预见的方式采用和使用科技。

在本书中,我们将探讨社会如何影响科技的各种例子。这些例子包括对早期互联网的政府资助、互联网监管、商业因素如何影响计算产品以及计算机安全的社会方面。

在计算机与社会中的许多主题中,存在着多个利益相关者。这些利益相关者可以包括个人用户、开发者、公司(生产商、消费者和中介机构)、政府机构、专业组织和其他类型的组织。这些不同的利益相关者往往具有不同的观点和不同的目标。

在本书中,我们将经常从多个角度探讨科技与社会问题。有时,我们将关注一个特定的视角或一个特定利益相关者的作用。然而,在其他时候,我们将更广泛地探讨问题:谁是利益相关者?他们在这个问题中扮演什么角色?他们的目标是什么?

人们经常听到关于计算机与社会问题的相互矛盾的观点。计算机对社会有利。计算机对社会有害。互联网使人们更容易沟通,并将人们联系在一起。互联网使人们更加孤立。计算机和自动化正在剥夺人们的工作。计算机和自动化创造就业机会。[3]

在本书中,我们将经常探讨有争议或复杂的问题。我们如何避免对这些问题产生肤浅、片面的理解?我们如何解决关于这些问题的相互矛盾的主张?

计算技术不仅对社会产生了巨大的影响,而且在不断地影响着社会。几乎每天都会出现与计算相关的某种技术进步。从许多方面来说,“计算机革命”才刚刚开始。

本书的目标之一是,让你对计算的总体知识、计算趋势以及计算与社会有足够的了解,以便能够评估新技术。请注意,“评估”在不同的语境中可能意味着不同的东西。例如,它可能意味着对一种新的计算机产品是否会成功进行明智的预测。或者,它可能意味着预测某个领域未来的计算机进步。或者,它可能意味着分析一种新的计算机应用程序更有可能带来益处而不是危害。

其他思考和讨论问题

[编辑 | 编辑源代码]

以下是一些额外的介绍性问题。

问题 7. 你如何使用电脑?列出最重要的几种方式。

问题 8. 写下一些以计算为主体的电影列表。对于每部电影,说明计算在其中是作为有益的、有害的、在某些方面有益但在其他方面有害的,还是中性的。

问题 9. 你认为总的来说,电脑对社会的影响是正面多于负面,负面多于正面,还是正面和负面影响大致相等?为什么?

问题 10. 列出一些电脑对社会有益的方式。然后列出一些有害的方式。

问题 11. 假设你要写一篇关于电脑和社会某个方面的小说、剧本、电影剧本等。描述你作品的主题是什么。

问题 12. “技术”是什么意思?你在日常生活中使用技术的哪些重要方式?

问题 13. 假设你必须写一篇题为“电脑与我”的短篇论文或短篇故事。这篇作品的一些关键点或主题是什么?

问题 14. 假设你必须写一篇题为“技术与我”的短篇论文或短篇故事。这篇作品的一些关键点或主题是什么?

  1. 参见英文维基百科上的电脑素养。访问于 2015 年 5 月 20 日。
  2. 例如,参见Denning, Peter. "计算机科学的伟大原则". 检索于 2015 年 5 月 20 日. 此网站将原则分为七类:计算、通信、协调、回忆、自动化、评估和设计。在该方法及其相关方法中,有很多好的想法、见解和框架,事实上,本书中的许多关键思想将以某种方式与丹宁的原则相关。
  3. 参见 普特南,罗伯特 D. (2001 年 8 月). 独自打保龄球:美国社区的崩溃与复兴. 西蒙与舒斯特. ISBN 978-0-7432-0304-3. 检索于 2015 年 5 月 29 日.
华夏公益教科书