未登录,请登录后再发表信息
最新评论 (0)

图解计算机科学

Map of Computer Science

We built computers to expand our brains.
为了扩展大脑的功能 我们造了电脑
Originally scientists build computers to solve arithmetic
起初科学家开发电脑是为了解决算术难题
but they turned at being incredibly useful for many other things as well
但是电脑在很多其他方面也变得非常有用
running the entire internet, lifelike graphics, artificial brains or simulating the Universe.
如网络运行 呈现逼真图片 人造大脑或宇宙仿真
but amazingly, all of it boils down to just flipping zeros and ones.
令人惊奇的是 这都归结为0和1的变换
Computers have become smaller and more powerful at an incredible rate.
电脑已经以惊人的速度变得更小且更强
There’s more computing power in your cellphone
如今手机的计算能力
than there was in the entire world in the mid 60s.
比60年代中期世界上最先进的电脑更强
And the entire Apollo moon landing could have been run on a couple of Nintendos.
几个任天堂主机就能完成整个阿波罗登月的计算
Computer science is the subject that studies what computers can do.
计算机科学是一门研究计算机功能的学科
It’s a diverse and overlapping field but I’m going to split it into three parts.
涵盖多样的交叉领域 但我把它分为三类
The fundamental theory of computer science, computer engineering and Applications.
包括计算机科学基础理论 计算机工程和应用
We’ll start with the father of theoretical computer science: Alan Turing.
首先说一下计算机理论之父 艾兰·图灵
who formalised the concept of a Turing machine
他提出了图灵机的概念
which is a simple description of a general purpose computer.
简单描述了通用计算机
People came up with other designs for computing machines
后续人们想出了多种计算机设计
but they are all equivalent to a Turing machine
但它们都相当于图灵机
which makes it the foundation of computer science.
这让图灵机成为了计算机科学的基础
A Turing machine contains several parts: An infinitely long tape
它包含几个部分 一条无限长的带子
that split into cells containing symbols
被分割成多个含字符的小格子
There is also a head that can read and write symbols to the tape, a state register that
一个读写头 一个用于存储读写头状态
stores the state of the head and a list of possible instructions.
和潜在命令行的状态寄存器
In todays computers, the tape is like the working memory or RAM
在如今的电脑中 运存RAM是这条带子
the head is the central processing unit
CPU就是读写头
and the list of instructions is held in the computer’s memory.
命令行存储于计算机内存中
Even though a Turing machine is a simple set of rules, it’s incredibly powerful.
图灵机的规则虽然简单 但却惊人地有效
This is essentially what all computers do nowadays
虽然我们当今的电脑明显有更多的零件
though our computers obviously have a few more parts
或永久存储空间等优势
like permanent storage and all the other components.
但是本质上仍然是图灵机
Every problem that is computable by a Turing machine is computable using Lambda calculus
图灵机可计算的问题都能通过λ演算完成
which is the basis of research in programming languages.
λ演算是编程语言研究的基础
Computability Theory attempts to classify what is and isn’t computable.
可计算性理论试图区分可计算与不可计算
There are some problems that due to their very nature, can never be solved by a computer.
有些问题本质上不可能被计算机求解
A famous example is the halting problem
停机问题就是个典型例子
where you try to predict whether a program will stop running or carry on forever.
即预测一个程序会停止运行还是永恒运行
There are programs where this is impossible to answer by a computer or a human.
许多问题是不可能被计算机或者人回答的
Many problems are theoretically solvable
许多问题理论上可解
but in practice take too much memory
但实际求解需要过多内存
or more steps than the lifetime of the Universe to solve.
或超越宇宙生命周期的步骤
And computational complexity attempts to categorise these problems
计算复杂度试图根据计算规模将问题
according to how they scale.
分成多个类别
There are many different classes of complexity
复杂度可以分为许多不同类别
and many classes of problem that fall into each type.
每个类别的问题对应各自的类型
There are a lot of real world problems that fall into these impossible to solve categories
许多现实问题归入了无法解决的门类
but fortunately computer scientists have a bunch of sneaky tricks
所幸 计算机科学家们有许多巧妙的方法
where you can fudge things and get pretty good answers
来回避问题并得到不错的答案
but you’ll never know if they are the best answer.
但你永远不知道它们是否是最佳答案
An algorithm is a set of instructions independent of the hardware or programming language
算法是独立于硬件和编程语言的一套指令
designed to solve a particular problem.
算法设计用于解决特定问题
It is kind of like a recipe of how to build a program
它更像是指导如何编程的配方
and a lot of work is put into developing algorithms
大量工作被投入到算法开发中
to get the best out of computers.
以便最有效地使用电脑
Different algorithms can get to the same final result
不同的算法得到的最终结果是相同的
like sorting a random set of numbers into order
比如将一组随机数排序
but some algorithms are much more efficient than others
但有些算法相对其他算法更加有效
this is studied in algorithmatic complexity.
这点在算法复杂度中也有研究
Information theory studies the properties of information
信息论研究信息的特性
and how it can be measured, stored and communicated.
以及如何测量 存储和沟通信息
One application of this is how well you can compress data,
该理论的一个应用是在存储所有或大部分信息时
making it take up less memory while preserving all or most of information
如何更好地压缩数据 使其占用更少的内存
but there are lots of other applications.
还有许多其他应用场景
Related to information theory is coding theory.
与信息论相关的是编码理论
Cryptography is obviously very important for keeping information sent over the internet secret.
显然密码学对信息在网络上保密传输十分重要
There are many different encryption schemes which scramble data
许多加密策略都是打乱数据
and usually rely on some very complex mathematical problem
且依赖于复杂的数学问题
to keep the information locked up.
把信息加密
These are the main branches of theoretical computer science
这些就是理论计算机科学的主要分支
although there are many more I didn’t have time to go into Logic, Graph Theory,
不过还有许多我来不及讲 如逻辑 图论
Computational Geometry, Automata Theory, Quantum Computation,
计算几何 自动机理论 量子计算
Parallel Programming, Formal Methods and Datastructures.
并行计算 形式方法和数据结构
but lets move on to computer engineering.
但是我们还是来说一下计算机工程
Designing computers is a challenge
计算机设计非常困难
because they have to do so many different things.
因为计算机必须做许多不同的事情
Designers need to try and make sure
设计者们必须确保
that they are capable of solving many different kinds of problems as optimally as possible.
他们能够尽可能用最佳方案解决各种问题
Every single task that runs on the computer goes through the core of the computer: the CPU
计算机上运行的每个任务都要经由其核心 CPU
When you are doing lots of different things at the same time,
当你同时处理多个任务时
the CPU needs to switch back and forth between these jobs
CPU需要在多个任务间来回切换
to make sure everything gets done in a reasonable time.
确保每个任务都在合理时间内被完成
This is controlled by a scheduler
这些都被调度程序控制
which chooses what to do and when and tries to get through tasks in the most efficient way
它选择在何时做何种任务 以便最高效地完成所有任务
which can be a very difficult problem.
这其实是非常困难的问题
Multiprocessing helps speed things up
多进程有助于加速任务处理
because the CPU has several cores that can execute multiple jobs in parallel.
因为CPU有多个核 能并行执行多个任务
But this makes the job of the scheduler even more complex.
但这使调度程序的工作更加复杂
Computer architecture is how a processor is designed to perform tasks
计算机体系结构是指如何设计处理器以执行任务
and different architectures are good at different things.
不同的结构擅长不同任务
CPUs are general purpose, GPUs are optimised for graphics
CPU是通用处理器 GPU针对图形处理做了优化
and FPGAs can be programmed to be very fast at a very narrow range of task.
FPGA可被编程 能快速处理少量任务
On top of the raw hardware there are many layers of software,
在原始硬件层之上有很多层软件
written by programmers using many different programming languages.
它们都是程序员使用不同编程语言编写的
A programming language is how humans tell a computer what to do
人类使用编程语言指导计算机工作
and they vary greatly depending on the job at hand
编程语言根据手头工作的不同而不同
from low level languages like assembly through to high level languages like python or javascript
涵盖了从低级汇编语言到用于编写网页和应用的高级语言
for coding websites and apps.
Python或JavaScript
In general, the closer a language is to the hardware,
整体上 编程语言越接近硬件
the more difficult it is for humans to use.
人使用时就越繁琐
At all stages of this hierarchy
在这个层次结构的各个阶段
the code that programmers write needs to be turned into raw CPU instructions
程序员写的代码都要被转化为原始的CPU指令
and this is done by one or several programs called compilers.
这都由一个或多个叫做编译器的程序完成
Designing programming languages and compilers is a big deal,
设计编程语言和编译器非常重要
because they have the tool that software engineers use to make everything
因为它们有软件工程师用于开发的工具
so they need to be as easy to use as possible but also versatile enough
所以必须尽可能容易上手并兼顾通用性
to allow the programmers to build their crazy ideas.
让程序员能够实现他们天马行空的想法
The operating system is the most important piece of software on the computer
电脑上最重要的软件是操作系统
as it is what we interact with
因为它和用户交互
and it controls how all of the other programs are run on the hardware.
并控制其他所有程序在硬件上的运行
And engineering a good operating system is a huge challenge.
建立一个优秀的操作系统是个巨大的工程
This brings us to software engineering:
由此我们进入软件工程
writing bundles of instructions telling the computer what to do.
写入多包命令告诉计算机工作该做什么
Building good software is an art form
开发优秀的软件是一种艺术
because you have to translate your creative ideas into logical instructions
因为你必须将创意翻译为特定语言下的
in a specific language
逻辑命令
make it as efficient as possible to run and as free of errors as you can.
并让它尽可能高效运行且尽量不出错
So there are many best practices and design philosophies that people follow.
所以人们遵循许多最优实践和设计理念
Some other important areas are getting many computers
还有一些重要领域是让多个计算机
to communicate and work together together to solve problems.
通讯并协同工作以解决问题
Storing and retrieving large amounts of data.
存储并检索大量数据
Determining how well computer systems are performing at specific tasks,
确定计算机系统执行特定任务的优秀程度
and creating highly detailed and realistic graphics.
以及创造富有细节的逼真图像
Now we get to a really cool part of computer science,
现在我们来到计算机科学超酷的一部分
getting computers to solve real world problems.
让计算机解决现实问题
These technologies underlie a lot of the programs, apps and websites we use.
这些技术是许多程序 应用和网页的基础
When you are going on vacation
当你准备度假
and you want to get the best trip for the money
且想在预算内获得最佳旅行体验时
you are solving an optimisation problem.
你其实是在解决优化问题
Optimisation problems appear everywhere
优化问题随处可见
and finding the best path or most efficient combination of parts
找到最优路径或最有效的组合
can save businesses millions of dollars.
能为企业节省数百万美元
This is related to Boolean Satisfiability
这关系到布尔可满足性
where you attempt to work out if a logic formula can be satisfied or not.
即尝试求解一个逻辑方程是否能被满足
This was the first problem proved to be NP-complete
这是首个被证实的NP完备问题
and so widely considered to be impossible to solve,
也被广泛认为不可求解
but amazing development of new SAT solvers
但是新SAT求解器的开发
means that huge SAT problems are solved routinely today
意味着巨大的SAT问题可以被常规求解
especially in artificial intelligence.
尤其是在人工智能领域
Computers extend our brains multiply our cognitive abilities.
计算机扩展了人脑 让人的认知能力倍增
The forefront of computer science research is developing computer systems
计算机科学研究的前沿是开发
that can think for themselves: Artificial Intelligence.
可以自行思考的计算机系统——人工智能
There are many avenues that AI research takes
人工智能研究有多种途径
the most prominent of which is machine learning
其中最主要的是机器学习
which aims to develop algorithms and techniques
它旨在开发能让电脑
to enable computers to learn from large amounts of data
从大量数据中学习的算法和技术
and then use what they’ve learned to do something useful
然后基于学习结果干点有用的事
like make decisions or classify things.
比如决策或者给事物分类
And there are many different types of machine learning.
机器学习也分为多个类型
Closely related are fields like computer vision,
相关性较高的领域有计算机视觉
trying to make computers able to see objects in images like we do,
运用图像处理技术
which uses image processing techniques.
让电脑能像人一样识别图中的物体
Natural language processing aims to get computers
自然语言处理旨在让电脑
to understand and communicate using human language
能够理解并运用人类的语言沟通
or to process large amounts of data in the form of words for analysis.
或处理分析大量文本格式的数据
This commonly uses another field called knowledge representation
这通常会用到一个叫知识表示的领域
where data is organised according to their relationships
它可以根据数据间的关系将其分组
like words with similar meanings are clustered together.
比如将意思相近的词划聚在一起
Machine learning algorithms have improved
由于我们提供的大量数据
because of the large amount of data we give them.
机器学习算法已经得到了优化
Big data looks at how to manage and analyse large amounts of data
大数据关注如何管理并分析大量数据
and get value from it
并从中获取价值
and will get even more data from the Internet of Things
物联网在日常物品上加入数据收集和通讯
adding data collection and communications to everyday objects.
大数据将借此获取更多数据
Hacking is not a traditional academic discipline but definitely worth mentioning.
黑客不是一个传统学科 但绝对值得一提
Trying to find weaknesses in computer systems,
在不被察觉的情况下
and take advantage of them without being noticed.
找到并利用计算机系统的弱点
Computational Science uses computers to help answer scientific questions
计算机科学运用计算机来回答科学问题
from fundamental physics to neuroscience
从基础物理到神经科学都有
and often makes use of Super Computing
还经常运用到超级计算
which throws the weight to the worlds most powerful computers at very large problems
即让世界上最强的计算机解决超大的计算问题
often in the area of Simulation.
通常是在仿真领域
Then there is Human Computer Interaction
还有人机交互
which looks at how to design computer systems to be easy and intuitive to use.
聚焦于如何让计算机系统更简单 易操作
Virtual reality, augmented reality and teleprescence
虚拟现实 增强现实和远程呈现
enhancing or replacing our experience of reality
提升甚至置换了我们对现实世界的感受
And finally Robotics which gives computers a physical embodiment,
最后 机器人让计算机物理具象化
from a roomba to trying to make intelligent human like machines.
从扫地机器人到像人一样的智能机器人
So that is my Map of Computer Science
以上是我对计算机科学的图解
a field that is still developing as fast as it ever has
这是个仍在一如既往地高速发展的领域
despite the fact that the underlying hardware is hitting some hard limits
尽管事实上 底层硬件在某些方面非常受限
as we struggle to miniaturise transistors any more.
因为微型化晶体管依然困难
So lots of people are working on other kinds of computers
可许多人在研究其他类型的计算机
to try and overcome this problem.
以尝试解决这个问题
Computers have had an absolutely huge impact on human society
计算机绝对对人类社会产生了巨大影响
so it is gonna be interesting to see where this technology goes
所以我们也期待这项技术
in the next a hundred years.
在接下来一百年的发展
Who knows, perhaps one day, we’ll all be computers.
谁知道呢 或许未来某天我们都会变成计算机
As per usual if you want to get hold of this map as a poster
老规矩 如果你想要把这张图解当作海报
I have made it available so check in the description below for some links.
我已经做好了 可以点进下方简介中的链接查看
and also if you want to find out more about computer science
如果想了解更多计算机科学相关内容
I recommend you check out the sponsor for this video brilliant dot org.
我推荐你去看看本期视频的金主爸爸
People often ask me how to go about learning more about
你们不是经常问我 怎么了解更多
the kinds of subjects I covered in these videos.
我视频里的东西吗
And as well as watching videos
除了看视频以外
a really great way is to get down and solve some real problems
一个好方法就是去解决一些真正的问题
And Brilliant does and excellent job at this.
Brilliant网站在这方面就很强
It’s a really cool website and also an app
这个网站和它的应用都很棒
which helps you learn by getting you to solve interesting problems
能通过让你解决有趣的科学 数学
in science, mathematics and computer science.
和计算机科学问题来帮助你学习
And each of the courses starts off kind of easy and fun
每个课程一开始都简单又好玩
and then gets more and more challenging as you master the concepts.
你掌握基本概念后 会愈发具有挑战性
If you want to learn specifically about computer science
如果你只想学习计算机科学
they have got whole courses built around topics in this video
他们针对本视频中的话题开发了系列课程
like logic, algorithms, machine learning, artificial intelligence.
比如 逻辑 算法 机器学习 人工智能
so if you want to check that out just type in brilliant dot org slash dos,
所以想看的话 就输入屏幕上方的网址
or even better click the link in the description below
或从下方简介的链接点进去更好
because that lets them know that you have come from here.
因为这样他们就知道你是从我这儿过去的
So thanks again for watching, and I’ll be back soon with a new video.
感谢观看 下期视频很快来

发表评论

译制信息
视频概述

本视频介绍了计算机的起源,讲解了计算机科学的三大模块: 计算机科学基础理论、计算机工程和应用。

听录译者

收集自网络

翻译译者

YCX

审核员

审核员YY

视频来源

https://www.youtube.com/watch?v=SzJ46YA_RaA

相关推荐