字幕列表 影片播放 列印所有字幕 列印翻譯字幕 列印英文字幕 We built computers to expand our brains. Originally scientists build computers to solve arithmetic, 我們建造電腦擴展了我們的大腦 原先科學家建造電腦是為了解決計算問題 but they turned out to be 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 is more computing 電腦已經以難以置信的速度變得更小和更強 你手機裏的計算能力 power in your cell phone then there was in the entire world in the mid 60s. 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 is 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 is 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. 在現今的計算機裏 帶子是記憶體或稱 RAM 讀寫頭是中央處理器 ( CPU) In todays computers the tape is like the working memory or RAM, the head is the central processing 指令列表儲存於記憶體中。 unit 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, and 這些就是現今電腦基本上所做的 this is essentially what all computers do nowadays. Although our computers obviously 我們的電腦還有更多的部件 如永久性的存儲裝置以及其他的部件。 have a few more parts like permanent storage and all the other components. 每個可用一臺圖靈機來計算的問題都使用 Lambda 算法作運算的, 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 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 但有些演算法比其他更有效率,這在O(n) 複雜性裏加以研究。 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 O(n) 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 the information but there are lots 通過互聯網發送而保密信息加密顯然是非常重要的。 of other applications. Related to information theory is coding theory. 有許多不同的加密方法它們通常依賴一些非常複雜的數學把數據擾亂來把 And 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 don'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 difficult because they have to do so many different things. Designers 許多不同種類的問題。 need to try and make sure they are capable of solving many different kinds of problem 即在計算機上運行的每一項任務經過計算機的核心:CPU(中央處理器)。 as optimally as possible. 你在做許多不同的事情的同時,CPU需要在這些工作之間 Every single task that is run on the computer goes through the core of the computer: the 來回切換來確保一切都在一個合理的時間內做完。 CPU. When you are doing lots of different things at the same time, the CPU needs to 這是通過一個調度器,它控制選擇什麼來做,什麽時候試圖以最高效的方式 switch back and forth between these jobs to make sure everything gets done in a reasonable 來做完各項任務,可以是非常困難的問題。 time. This is controlled by a scheduler, which chooses what to do when and tries to get through 多重處理有助於提高速度,因為CPU有可以並行執行多個作業的幾個內核。 the tasks in the most efficient way, which can be very difficult problem. 但是,這使調度器的工作更加複雜。 Multiprocessing helps speed things up because the CPU has several cores that can execute 計算機結構是怎樣設計一個處理器來執行各項任務而不同的結構擅長不同的事情。 multiple jobs in parallel. But this makes the job of the scheduler even more complex. CPU是通用的,GPU被優化作圖形而 Computer architecture is how a processor is designed to perform tasks and different architectures FPGA能夠被編程在一個很窄的範圍內的任務做得非常快。 are good at different things. CPUs are general purpose, GPUs are optimised for graphics and 在原始硬件上有多層由程序員編寫用許多不同的編程語言的軟件, FPGAs can be programmed to be very fast at a very narrow range of task. 一種編程語言是人們告訴一台計算機 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 一直到像像Python或用來編寫網站的JavaScript語言和應用軟件。 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. In general, the closer a language is to the hardware, the more difficult 在這個上下結構的,所有層次結構所有的階段中程序員所編寫的代碼,都需要 it is for humans to use. 變成CPU原始指令,這是由一個或幾個稱為編譯器的程序來完成的。 At all stages of this hierarchy the code that programmers write needs to be turned into 設計的編程語言和編譯器是件大事,因為他們是軟件工程師用來做一切事 raw CPU instructions and this is done by one or several programs called compilers. 的工具,因此需要盡可能方便使用但 Designing programming languages and compilers is a big deal, because they are the tool that 也是足以靈活來讓程序員可以建造他們自己的異想。 software engineers use to make everything and so they need to be as easy to use as possible 操作系統在計算機上是最重要的一份軟件,因為它是和我們直接交往并且它 but also be 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. 可以得到滿足。這是被證明是NP-完全的第一個問題并且 This is related to Boolean Satisfiability where you attempt to work out if a logic formula 被廣泛認為是不可能解決的,但SAT求解新的驚人發展 can be satisfied or not. This was the first problem proved to be NP-complete and and so 意味著巨大的SAT問題今天常規地被解決了特別是在人工智能方面。 widely considered to be impossible to solve, but amazing development of new SAT solvers 計算機擴展我們的大腦倍增我們的認知 能力。計算機科學的前沿是 means that huge SAT problems are solved routinely today 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 to 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 再有就是人機交往是著眼於如何來設計容易和直觀的使用的計算機系統 of 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 從Roomba到有想使有智力的人像些機器人。 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 that 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 and so it is going to be interesting to see where this technology goes 如通常那樣如果你想獲得此地圖作爲挂圖我已做出可供使用,因此 in the next one 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 cover 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. 和計算機科學中的一些有趣的問題來學習。並且每個課程都以輕鬆和樂趣 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 computers science they have got whole 人工智能,所以如果你想查一下brillian.org/dos網站, courses built around topics in this video like logic, algorithms, machine learning, 甚至更好單擊下面說明中的鏈接 因為這讓他們知道你是來自這裡的 artificial intelligence, so if you want to check that out 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.
B1 中級 中文 美國腔 計算機 電腦 科學 軟件 數據 問題 計算機科學地圖 (Map of Computer Science) 219 13 Ian Jyun Li 發佈於 2021 年 01 月 14 日 更多分享 分享 收藏 回報 影片單字