人类制造计算机是为了扩展我们的大脑。

最初,科学家们制造计算机是为了解决算术问题,但结果证明,它们在许多其他事情上也非常有用,比如运行整个互联网、逼真的图形、人工大脑,甚至模拟宇宙。

但令人惊讶的是,这一切都归结为0和1的翻转。

计算机变得越来越小,功能也越来越强大而且速度惊人,你的手机的计算能力,超过了20世纪60年代中期整个世界。

计算机科学是一门研究计算机能做什么的学科,它可以分为三个部分:计算机科学基础理论,计算机工程和计算机应用。

我们将从理论计算机科学之父阿兰·图灵开始,他创建了图灵机概念,这是对通用计算机的简单描述,成为了计算机科学的基础。

什么是计算机科学与技术啊?什么是计算机科学(1)

图灵机中包含了几个部分:一个无限长的磁带,由包含符号的单元组成;一个可以读写磁带符号的磁头,一个存储磁头状态和可能指令列表的状态寄存器。在今天的计算机中,磁带就像工作存储器或RAM,磁头是中央处理单元,指令列表保存在计算机的内存中。尽管图灵机只是一套简单的规则,但它的力量是惊人的。这基本上是现在所有的电脑都做的,尽管我们的电脑显然有更多的部件,像永久存储和所有其他的部件。

每一个可以被图灵机计算的问题都是可以计算的。可计算理论试图对问题进行分类,哪些是可计算的,哪些是不可计算的。有一些问题,由于其本身的性质,永远不能用计算机解决。一个著名的例子是停止问题,在这个问题中,您尝试并预测一个程序是会停止运行还是永远运行。

许多问题在理论上是可以解决的,但在实践中需要太多的内存或比宇宙的生命周期更多的步骤来解决。计算复杂性试图根据它们的规模对这些问题进行分类。复杂性有许多不同的类别,每种类型都有许多不同的问题。现实世界中有很多问题属于这些不可能解决的类别。但幸运的是,计算机科学家有一堆鬼鬼祟祟的技巧,你可以捏造一些东西,得到很好的答案,但你永远不知道它们是否是最好的答案。

算法是独立于硬件或编程语言的一组指令,旨在解决特定的问题。这有点像如何构建一个程序的配方。很多工作被投入到开发算法上,以发挥计算机的最佳功能。不同的算法可以得到相同的最终结果,比如对一组随机数字排序,但有些算法的效率要比其他算法高得多。这是在算法复杂性中进行的研究。

信息论研究信息的性质以及如何测量、存储和传递信息。其中一个应用就是压缩数据,使其占用更少的内存,同时保留全部或大部分信息。但是还有很多其他与信息论相关的应用。显然,编码理论和密码学对于保证网络信息的机密性是非常重要的。有许多不同的加密方案会打乱数据,通常依赖于一些非常复杂的数学问题来保持信息的锁定。

这些都是理论计算机科学的主要分支,尽管还有很多我没有时间去讲,比如逻辑图理论、计算几何、自动化理论、量子计算、并行编程、形式化方法和数据结构。

让我们继续讲计算机工程。

设计计算机是一项挑战,因为它们必须做很多不同的事情。设计师需要尝试并确保他们能够尽可能优化地解决许多不同类型的问题。在计算机上运行的每一项任务都要经过计算机的核心,即CPU。当你同时做很多不同的事情时,CPU需要在这些工作之间来回切换,以确保所有事情都在合理的时间内完成。这是由一个时间表控制的,它选择做什么,什么时候做,并试图以最有效的方式完成任务。可能是一个非常困难的问题。多处理有助于提高速度,因为CPU有多个原因可以并行执行多个任务,但这使调度器的任务更加复杂。

计算机架构是处理器如何被设计来执行任务,不同的架构擅长不同的事情。作为通用的图形处理器,cpu是为图形优化的,而fpga可以在非常窄的任务范围内被编程到非常快的速度。

在原始硬件之上,有许多层的软件由程序员使用许多不同的编程语言编写。编程语言是人类告诉计算机要做什么,它们根据手头的工作有很大的不同,从低级语言如汇编,到高级语言如Python或Javascript编写网站和应用程序。语言与硬件的关系越密切,人类使用起来就越困难。但是这个层次结构的所有阶段,程序员的代码都需要转换成原始的CPU指令,这是由一个或几个叫做编译器的程序完成的。

设计编程语言和编译器是一件大事,因为它们添加了软件工程师用来制作任何东西的工具。因此,它们需要尽可能容易使用,但也要足够通用,让程序员能够构建自己的疯狂想法。

操作系统是计算机上最重要的软件。它是我们与之互动的东西,它控制着所有其他程序如何在硬平台上运行,设计一个好的操作系统是一个巨大的挑战。

这就把我们带到了软件工程,编写一捆捆的指令,告诉计算机要做什么。构建好的软件是一种艺术形式,因为你必须将你的创意转换成用特定语言编写的逻辑指令,使它尽可能高效地运行,并且尽可能避免错误。所以有很多人们遵循的最佳实践和设计哲学家。其他一些重要的领域包括让许多计算机进行通信和协作,以解决问题,存储和检索大量数据,确定计算机系统在特定任务中的表现,以及创建非常详细和逼真的图形。

现在我们来到了计算机科学的一个很酷的部分,让计算机解决现实世界的问题。这些技术是我们使用的许多程序、应用程序和网站的基础。

当你去度假时,你想用金钱得到最好的旅行,你在解决一个优化问题。优化问题随处可见,找到最佳路径或最有效的部件组合可以为企业节省数百万美元。这与欺负和满足度有关,你试图计算出一个逻辑公式是否可以满足。这是第一个被证明是MP完整的问题,因此被广泛认为是不可能解决的。但新的SAT解决方案的惊人发展意味着巨大的SAT问题在今天已经得到了解决,尤其是在人工智能领域。电脑扩展了我们的大脑,倍增了我们的认知能力。

计算机科学研究的前沿是开发能够自我思考的人工智能计算机系统。人工智能研究采用了许多途径,其中最突出的是机器学习,旨在开发算法和技术,使计算机能够从大量数据中学习,然后利用它们所学的知识做一些有用的事情,比如做决定或分类。

有许多不同类型的机器学习,与之密切相关的领域,比如计算机视觉,试图让计算机能够像我们一样看到物体和图像,这使用了图像处理技术。

自然语言处理的目的是让计算机理解并使用人类语言进行交流,或者以单词的形式处理大量数据以供分析,这通常使用另一个领域,称为知识表示,数据是根据它们的关系组织起来的,词义相似的词聚在一起。

随着我们提供了大量的数据,机器学习算法得到了改进。

大数据研究的是如何管理和分析大量数据,并从中获得价值。我们将从物联网获得更多的数据,将数据收集和通信添加到日常物品中。

黑客不是一门传统的学术学科,但绝对值得一提,它试图在不被注意的情况下找到弱点和计算机系统并加以利用。

计算科学使用计算机来帮助回答科学问题,从基础物理到神经科学,并且经常使用超级计算,这为世界上最强大的计算机解决非常大的问题提供了途径,通常是在模拟领域。然后是人机交互,它着眼于如何设计计算机系统,使其易于直观地使用虚拟现实、增强现实和远程呈现,增强或替代我们的现实体验。最后是机器人技术,它让计算机从谣言中获得了一个实体,试图制造出智能的、像人一样的机器。这就是我对计算机科学的描绘,这是一个仍在以前所未有的速度发展的领域,尽管事实上底层的硬件已经达到了一些硬性的限制,因为我们正在努力使晶体管小型化。所以很多人都在研究其他类型的计算机来尝试解决这个问题。计算机已经对人类社会产生了绝对巨大的影响,所以看看这项技术在未来几百年的发展将会是一件有趣的事情。

谁知道呢?也许有一天我们都会成为电脑像往常一样。

,