一张通往计算机世界的地图

2017-10-05 20:28计算机

继《物理学地图》、《数学地图》和《化学地图》后,今天为大家呈现通往计算机世界的地图,希望通过本文能够带你进入计算机科学领域。

○ 一张通往计算机科学的地图。| 图片来源:Dominic Walliman(经作者授权使用编译)

我们通过计算机来拓展我们自己的大脑。最开始计算机被用来解决和算数有关的问题,但其自身的价值很快地延伸到了各个领域。像是运行互联网络,处理实时图像,制造人工智能,以及模拟整个宇宙等等。而其神奇的地方就在于这一切强大功能的背后,竟然仅是 0 和 1 的来回变化。

计算机正以无法置信的速度变小变快。现在手机的计算能力已经超过了60年代超级计算机计算能力的总和(详见:《计算机所面临的极限是什么?》)。当年阿波罗11号的整个登月系统如今甚至只需要在两个任天堂就能完成。计算机科学总的来说就是研究计算机能做什么。计算机科学如今已经扩展出了很多相互关联的分支,但我仍然把整个学科分成三个部分:计算机理论,计算机工程,以及计算机应用。

【计算机理论】

○ 第一大分支:计算机理论。|图片来源:Dominic Walliman

讲到计算机理论。我们得从计算机之父,创造了图灵机(Turing Machine)的阿伦·图灵讲起。图灵在一篇名为《论可计算机器判定问题的应用》一文中首次定义了“有限次运算”并提出了图灵机的原型。图灵机是一个对现在通用计算机的一个简单的描述,而并非一个实体的机器。之后的科学家们提出了很多计算机模型,但这些模型的根本都是图灵机。所以说图灵机也是现代计算机的理论基础。

图灵机由几个部分组成,一个写有符号的无限长的带子,一个可以在带子上读写的读写头,一个储存当前状态的状态寄存器,以及一串命令。在如今的电脑上,带子就是现在的内存(当然不再是无限大的),读写头就是现在的处理器(CPU)。命令串被存在电脑的内存里(详见:《一个无法证明的逻辑问题》)。虽然图灵机是一个简单的描述,但也却是对电脑设计的一个非常全面的描述。现在的计算机当然由更多部分组成,例如硬盘,键盘,音响,显卡,屏幕等等,但其运行原理皆在图灵机概念的之内。

○ 图灵机与现代计算机。|图片来源:Dominic Walliman

图灵通过对机器的描述为计算机的发展奠定了基础。然而与此同时,我们更加不能忘了另外一位与图灵密切相关的计算机科学家,他的博士导师——阿隆佐.丘奇。丘奇发明了lambda算子,通过整套严谨的数学理论描述出了计算机运算的概念。所有能用图灵机解决的问题都能用lambda算子进行等价的计算。如果图灵机的思想代表了算法和机器的原型,那么lambda算子则是现在所有的编程逻辑和语言的基础(详见:《他的思想代表了逻辑和语言》与《“计算”与“机”》)。

正如最开始说到的,在计算机理论中最基础的问题就是计算机是万能的吗?如果不是,它能做或不能做什么呢。这个问题直接在计算机理论这个分支中延伸出了一个领域——可计算性理论(Computability Theory)。可计算性理论是一个用来确定哪些问题能够用图灵机进行计算并得出最终结果的学科。有些问题是本身是不可能用计算机得出结果的,其中最著名的代表就是停机问题。总结来说,停机问题代表着一些无法确定计算机程序是否会无限运行的问题。图灵却巧妙地运用了自洽的概念证明了只要没有跳出图灵机的范畴,计算机都不是全能的。有些问题穷计算机的一生也是无法得到解决的(详见:《一个无法证明的逻辑问题》)。

○ 复杂度理论分类。|图片来源:Dominic Walliman

在可以用计算机解决的问题中,也有很多问题需要花太长的时间来解决(甚至可能超过宇宙能存在的时间)。基于此,计算复杂度(Computational Complexity)理论便成为了计算机理论中另外一个重要的组成部分。复杂度理论基于解决一个问题所需时间随问题输入增大而增大的程度,将问题分类成P类问题(例如将数列从小到大排序),NP类问题(例如在指定城市内寻找一条能遍历所有城市且总路程小于N的路线)等等。虽然现实中有很多问题在理论上是不可以被解决的,但计算机科学家们可以通过一些技巧上的简化来得出大概的答案,然而没人可以确定这些答案是否是最佳答案。正如上述NP问题中我们能在多项式级时间内找到遍历所有城市且总路程小于N的路线,但却不能在多项式级时间内找到最短的路程(详见《一个价值百万美金的问题》及《误解带来的乐观与恐慌》)。

○ 算法及算法复杂度。|图片来源:Dominic Walliman

计算机理论这一分支也包含了对算法(Alogorithm)和信息理论的研究。算法是独立于所有的编程语言以及计算机硬件的解决问题的套路。算法是创建程序的基础,很多计算机科学家都致力于通过研究算法而找到解决问题的最优解。比如不同的算法可能可以解决同样的问题并得到相同的结果,像是将杂乱无章的数字从小到大排序。但有些算法却比另一些更加快速有效。而这些都属于算法复杂度这一领域。

信息理论(Information Theory)通过研究信息的性质,研究信息如何被接受,储存,以及传播。例如如何在保留大多数甚至所有信息的基础上压缩信息,使得我们能用更少的内存来储存这些信息。编码理论(Coding Theory)和加密理论(Encryption Theory)也是信息理论中非常重要的一个部分。这两个理论使用复杂的数学作为辅助,将传输的信息进行重新的加密,使得信息在网络传输中的安全性得到了大大的增加。

○ 信息理论和密码学。|图片来源:Dominic Walliman

以上就是计算机理论分支中非常重要的部分。当然除此之外,还有很多其他组成部分,包括逻辑学,图形学,计算几何学,自动机理论,量子计算,并行处理,数据结构等。这里不再一一列举。

【计算机工程】

○ 第二大分支:计算机工程。|图片来源:Dominic Walliman

计算机科学的第二个大的分支是计算机工程。设计计算机是一个很大的挑战,因为要考虑到从底层硬件到上层软件很多不同的方面。设计者必须保证计算机能够以尽量优化的方式解决尽量多的问题。处理器(CPU)是计算机的中心,计算机执行的所有任务都经过处理器,并通过其进行调度。在单个处理器处理多个任务的时候,处理器需要在每项任务中来回执行,所有任务都能在用户可接受的时间里完成。

任务的调度(Scheduling)是一个复杂的过程,由处理器中的调度器完成。调度器决定什么时候执行什么任务,并尝试用最优化的方式调度所有任务。在这种情况下,使用多核处理多个任务可以提升计算机执行的速度,因为每个任务现在可以由一个单独的核执行。但与此同时多核执行也使得调度器的设计更加复杂。而这些设计都隶属于体系结构(Computer Architecture)的研究范畴。不同的体系结构适合完成不同的任务。处理器(CPU)适合执行通用程序例如我们所用的操作系统。图像处理器(GPU)适合图像处理,例如我们玩的高画质的游戏,而现场可编程门阵列(FPGA)适合高速执行一些范畴非常狭窄的任务,比如挖比特币等。

○ 单核与多核的调度。|图片来源:Dominic Walliman

软件机编程语言(Software and Programming Languages)也是组成计算机工程的重要部分。在硬件之上有以各种编程语言写成的软件层。从底层的汇编语言到高层的Java语言,编程语言是程序员给计算机下达命令的语言,并以不同的语法特征编写不同特性的任务。例如我们汇编语言编写计算机底层的执行,用Java来编写网页应用。可想而知,越底层的编程语言越贴近计算机本身的结构,但越难让人们理解。然而无论多高层或底层的语言,最终都会被转化成处理器能执行的二进制码。这个转换机制由编译器通过一个或多个步骤完成。每个编程语言都会有它自己的编译器以便将程序翻译为可执行的二进制码并进行优化。编译器和编程语言的设计在计算机里非常重要,因为这些设计必须既简单适用,又灵活多变,使得程序员能够容易的将他们疯狂的想法付诸实践。

○ 编程语言及编译器。|图片来源:Dominic Walliman

操作系统(Operating System)是计算机系统中最重要的软件,也是用户和计算机打交道必须通过的介质。操作系统在接受用户指令的同时控制着所有计算机的硬件。因此设计制造一款好的操作系统是一个很大的挑战。所以软件工程(Software Engineering)也因此成为了计算机工程分支的重要组成部分。软件工程师们通过设计软件,新的操作系统或和现有操作系统互动来告诉计算机在什么时候做什么。设计软件是一门艺术,需要工程师们将极富创造性的思维通过特定的编程语言转化成严谨的逻辑程序,并使得转化后的逻辑程序能够有效快速的在计算机上运行。因此,软件工程作为一项独立的学科也有很多设计思想和哲学供程序员们学习、使用以及研究。

○ 操作系统。|图片来源:Dominic Walliman

当然,计算机工程还包含了许多其他的组成部分,例如实现多台计算机大规模协作的网络(例如淘宝的服务器),大数据存储(例如谷歌脸书中需要储存的个人信息),机器性能研究(例如编写大型软件作为测试计算机性能的基准)以及计算机图像处理(例如简单的美图秀秀)等。我们会在今后的文章中具体提到。

【计算机应用】

○ 第三大分支:计算机应用。|图片来源:Dominic Walliman

接下来讲讲计算机科学的第三个分支——计算机应用。这个分支旨在使用计算机来解决现实生活中的各种问题。当你出门旅游的时候你希望找到最大的旅游性价比,这就涉及到了使用计算机解决最优解(Optimisation)的问题。最优解问题自古以来也是生意场上最重要的部分之一,因为正确的解答该问题能为公司省下巨额的资金。然而最优解的问题有时可能无法用计算机有效地得到答案,例如上述提到的在所有城市中找到能遍历所有且最短的一条路程。于是有些人开始指望新的科技(例如人工智能或量子计算机),看他们是否能够为这类问题的解决带来转机。

人工智能(Artificial Intelligence)在计算机应用这个分支中占有举足轻重的地位。计算机拓展了我们的大脑,数倍地提高了我们的认知能力。前沿的人工智能研究正试图让机器像人类一样思考。人工智能的研究有很多部分组成,其中发展最迅速的当属机器学习(Machine Learning),让机器通过事先定下的算法,以大数据为输入进行学习,最终达到能准确分辨实物或作出决定的目的。这里最成功的例子当属谷歌AlphaGo接连大败围棋冠军的事情。除此之外机器学习也分成有监督(通过现有的样本对未知的数据分类),无监督(没有任何样本,单从数据中的某一特性将数据分类)与增强学习(例如训练之前很有名的一款小游戏flappy bird 中的小鸟。如果小鸟撞到柱子了,那就获得-1的回报,否则获得0回报。通过这样的若干次训练,我们最终可以得到一只飞行技能高超的小鸟,知道在什么情况下采取什么动作来躲避柱子)三种。除此之外,计算机视觉(Computer Vision)和自然语言处理(Natural Language Processing)也是人工智能中很重要的组成部分。计算机视觉希望通过图像处理让计算机能和人类一样分辨事物。自然语言处理则旨在让计算机和人类能够通过人类的语言进行交流,或以文字为输入进行对文字的分析。这些人工智能的各个领域我们今后也将会一一讨论。

○ 人工智能的领域。|图片来源:Dominic Walliman

机器学习的成功大大受益于大数据(Big Data)的发展。于是大数据的研究也成为了计算机应用分支中很重要的领域。大数据的研究旨在总庞大的数据中找出有价值的信息。物联网(Internet of Things)更进一步为大数据的研究添砖加瓦,通过连接各种物体提供更庞大的数据。黑客(Hacking)技术不是一个正统的学术界领域,但在此也非常值得一提。黑客利用计算机系统及网络中的漏洞在不被别人发现的情况下在他人计算机系统中窃取他们所需要的信息,例如最近刚发生的针对windows操作系统漏洞的攻击。即便是如今的技术,对这些黑客的攻击也只能是一筹莫展。

除了上述的领域,计算机应用这一分支也利用计算机来研究科学问题,例如物理学和神经学。这个领域通常使用超级计算机来解决大规模的模拟(Simulation)问题。与此同时计算机应用还包括人机交互(Human Computer Interaction)的研究,旨在设计让用户更加轻松使用的计算机系统。同时,虚拟现实(Virtual Reality,例如戴在头上的VR眼镜),增强现实(Augmented Reality,例如之前很流行的一款pokemon go 的游戏)以及混合现实(Mixed Reality, 例如用手机扫描实体书的时候能看到网上的书评)的研究将虚拟和现实世界渐渐联系在一起。机器人(Robotics)的研究也将机器在形态和运动方式上和人更加相似。

这就是通往计算机科学的地图。原理《走进计算机文化史》通过一系列的文章介绍了这张地图的第一个部分——计算机理论。今后也会和大家一同走完这张地图。如今的计算机仍然在高速发展。虽然在硬件方面的研究因为很难再将晶体管做小而遇到了瓶颈,计算机科学家们试图通过对其他领域的研究来解决这个问题。计算机对整个人类的发展有着至关重要的影响,所以计算机在今后的一个世纪将如何发展也成了科学家们争相追捧的问题。谁知道呢?可能到了未来的某一天我们都会多多少少以计算机的形式而存在在这个世界上。返回搜狐,查看更多

声明:本文由入驻搜狐号的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。

一张通往计算机世界的地图相关推荐

  1. 首先请与所有现有链接到该网络共享的映射断开连接_嘉兴快速路环线时代来了!这12张主城楼盘片区地图,请收好...

    昨日,嘉兴有大事发生. 全城期待的主城区快速路环线工程,正式开工! 顷刻之间,新闻刷遍了嘉兴人的朋友圈. 有关快速路开工的具体内容,本文不再重复,请移步至嘉兴小新微信公众号---[嘉兴头条]快速路环线 ...

  2. 一张通往2030的“高铁票”:从无线网络到智能世界

    智能手机和移动互联网,已经证明了智能化的发展与无线网络息息相关.面向未来,人类还需要在这项伟大发明中汲取更多动力. 在5G已来,无线通信空前繁荣多元的今天,产业未来发展也有了更多不确定性.已到百尺竿头 ...

  3. 我国在计算机科学领域故事,封面故事 | 张黔: 计算机世界的巾帼英姿

    在以男性为主导的计算机世界里,香港科技大学计算机科学及工程学系讲座教授.腾讯工程学教授张黔巾帼不让须眉,在这片她所热爱的天地间,孜孜不倦地寻找新的突破. 张黔 "何梁何利基金科学与技术创新奖 ...

  4. 福利 | 送你一张通往「2019 AI开发者大会」的门票

    2019 AI开发者大会(AI ProCon 2019)是由中国IT社区CSDN主办的AI技术与产业年度盛会.多年经验淬炼,如今蓄势待发:2019年9月6-7日,大会将有近百位中美顶尖AI专家.知名企 ...

  5. 教程 | 各省电力缺口有多大,看看这张电力大数据地图

    一.新闻背景 用电紧张.拉闸限电是近期全民关注的焦点.地方的发电量和用电量,与区域经济发展紧密相关.那么,我国各省份之间的电力情况如何?哪些省份发电多?哪些省份用电多呢? 下面引"第一财经& ...

  6. 用 Python 画一张北京实时疫情地图:从爬虫到绘图到自动上传服务器

    效果 在线地图 闲谈 我校传统是五一放七天,五一前两天开始放,当时疫情初见端倪,但是网上并没有找到准确显示病例位置的地图 后来知道腾讯地图是有的,但是不支持选择时间区间,所以把很早之前的也都显示了出来 ...

  7. 苏州文正学院计算机张晓青,北流市地图(广西政区图地图)

    2021年6月7日发(作者:哈利波特混血王子) 北京市行政区划及区划地图 北京简称京.面积1.68万平方千米,人口1382万(2000年). 总 计 16市辖区 2县 东城区 西城区 崇文区 宣武区 ...

  8. HDOJ水题集合8:DBFS

    1001 内蒙创业 内蒙创业 Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other) Total ...

  9. 收藏这套模板,你也能10分钟制作一张数据地图!

    前几天在知乎上看了一个问题: 怎么在Excel上做数据地图? 参照着热门回答,尝试了用VBA以及插件做数据地图,发现过程还是比较复杂: 首先我还是要掌握一些基础代码才能做,VBA我是靠着百度现学现卖, ...

最新文章

  1. MonoDevelop 1.0 和 Mono 1.9(2.0 beta)发布了
  2. python map reduce filter_Python map, reduce, filter和sorted
  3. 10 FI配置-财务会计-把会计年度变式分配给公司代码
  4. stm32 工业按键检测_基于STM32芯片的能谱仪设计
  5. Java多线程基础知识(一)
  6. substring splice
  7. teechart的addarray_TeeChart经验总结 6.Series之1:Line
  8. 还挺好看!用命令行画思维导图;66天机器学习之旅;斯坦福CS234 强化学习课程;哈佛CS50 计算机科学导论课程;前沿论文 | ShowMeAI资讯日报
  9. python遍历文件夹下所有文件
  10. 【OBS-studio-webrtc】obs推流到webrtc服务器端:接管OBS输出流到自定义推流服务
  11. powerDesign逆向工程Mysql转Oracle
  12. idea 调节背景护眼_IDEA 护眼色设置 背景行颜色取消等设置
  13. STM32H7B0 HAL库中关于DMA的注意事项以及DCMI调试遇到的问题及解决方法
  14. 2015中国十大域名注册商排名
  15. 印光大师、净空法师:法师、居士示现神通需注意哪些事项?
  16. 电流检测电路公式推导
  17. 推箱子 | Java课程设计
  18. wps表格l制作甘特图_甘特图是什么?-如何用WPS表格做甘特图
  19. 关于Jenkins集成jmeter时报input file xxx.jtl does not exist的问题
  20. elementUI el-table设置fixed后,竖向滚动条滚动到底部表格错位的问题(修改源码)

热门文章

  1. GItHub频繁验证邮箱?Please verify your email address????
  2. 创建具体的产品,并继承产品抽象类
  3. 2022中国连锁企业人才管理报告
  4. 用matlab实现机械臂的仿真,基于MATLAB的SCARA机械臂仿真与性能评估
  5. 调研分析-全球与中国冲刺计时系统市场现状及未来发展趋势
  6. Linux 虚拟内存和物理内存的理解
  7. 2020-2021 CV算法实习面经(京东/商汤/思谋/依图/图森/字节/腾讯)
  8. CF-940-F. Machine Learning【带修莫队】
  9. WikiText数据集_自然语言处理
  10. 如何计算图像中弱小目标面积 matlab,凝视观测图像空间弱小目标检测方法