<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          計算機科班比其它專業(yè)有多少優(yōu)勢呢?

          共 3047字,需瀏覽 7分鐘

           ·

          2021-10-13 01:13


          導讀:什么是計算機系統(tǒng)?


          作者 / 來源:編程指北(ID:cs_dev)





          經(jīng)常會有小伙伴問:“現(xiàn)在生化環(huán)材、機械這些專業(yè)自學 Java等語言后都可以找軟件開發(fā)相關(guān)工作,那么計算機科班的學生學了這些課程又有什么優(yōu)勢呢?”


          個人覺得就是系統(tǒng)學習過計算機課程的,應該建立起計算機系統(tǒng)能力,也就是在寫代碼、設計程序的時候會站在系統(tǒng)的角度考慮,怎么樣才更加高效,或者說符合計算機的思維方式。


          那么我們常說的計算機系統(tǒng)又是什么東西呢?


          我看過很多同學將?計算機系統(tǒng)?和?操作系統(tǒng)?劃等號,尤其是網(wǎng)上很多同學推薦操作系統(tǒng)書籍,竟然把《深入理解計算機系統(tǒng)》這本書放在首位,盡管 CSAPP 這本書內(nèi)有部分 OS 內(nèi)容,但是我仍然覺得它更是偏向“計算機系統(tǒng)”而非“操作系統(tǒng)”。


          我理解中的計算機系統(tǒng)應該是包括計算機組成、存儲層次、IO、高級語言程序及其實現(xiàn)機制、指令集、操作系統(tǒng)、編譯器、鏈接器、加載等。


          匯總起來就是:


          一個程序在計算機中到底是如何運行的。


          學習這些東西個人覺得并不是說就能讓你怎么牛,這肯定不行,只是這些系統(tǒng)的知識能夠在學習其它應用知識的時候幫助我們快速遷移學習,比如時空開銷、緩存與局部性、分治、并發(fā)和并行、遠程過程調(diào)用、同步異步、吞吐率和時延等概念,在實際項目中也經(jīng)常會涉及到。


          但是呢,國內(nèi)大部分高校比較缺乏“計算機系統(tǒng)”方面的課程,只有少數(shù)高校有開設相關(guān)課程,比如南大計算機系統(tǒng)、交大等。


          我們學校從 CMU 引進過 ICS(Introduction to Computer System),我們這叫做系統(tǒng)級編程:System Programming,教材就是使用的 CSAPP,不過有一些章節(jié)也沒有上,也是靠自學。


          到底什么叫系統(tǒng)編程呢?


          系統(tǒng)編程真的和好的軟件工程是不同的嗎?這不一定。但是問題在于,軟件工程和底層編程通常是孤立地教授的。雖然大部分的軟件工程課程是以 Java 為中心的 “書寫良好的接口和測試”,但我們也應該教給學生如何設計有重大資源限制的系統(tǒng)?;蛟S我們將底層編程叫做“系統(tǒng)編程”,是因為很多有趣的軟件系統(tǒng)是底層的(如數(shù)據(jù)庫、網(wǎng)絡、操作系統(tǒng)等等)。由于底層系統(tǒng)有很多的限制,因此需要設計者進行創(chuàng)造性的思考。


          把系統(tǒng)編程叫做底層編程可能更好理解,就是直接面對各種底層機器細節(jié)。


          如果你大學沒有相關(guān)課程的話,建議可以去看看 CSAPP,國外也有幾門不錯的這方面課程,大家感興趣的話可以去了解下:



          01 麻省理工


          麻省理工電子工程與計算機課程系下面的 EE (electrical engineering) 和 CS (com- puter science) 都開設的基礎課程:


          • MIT 6.004 計算結(jié)構(gòu) (com- putation structures)


          這是一門貫穿整個計算機系統(tǒng)的課程。這門課包括硬件方面的門電路、功能 部件、單周期和流水線 CPU 之間的核心內(nèi)容。


          其次是軟件方面的 C 語言、匯編語言、機器指令之間的基本內(nèi)容,還涉及到過程調(diào)用、系統(tǒng)調(diào)用、進程、并行、性能評估等一些重要概念。


          整體約等于 = 計組 + C ?+ 匯編 + 一些操作系統(tǒng)概念


          教材是《計算機系統(tǒng)設計原理導論》


          可以直接在瀏覽器搜索相關(guān)課程資源學習,B 站也有視頻。



          02 卡耐基梅隆 & 斯坦福


          CMU 計算機學院與斯坦福計算機科學系比較類似,多個專業(yè)培養(yǎng)方案都有計算機系統(tǒng)或計算機工程。


          這兩所學校都有一門為計算機科學=專業(yè)學生開設的貫穿整個計算機系統(tǒng)的基礎課。


          其中 CMU 是 CS 213,斯坦佛是 CS 107,CS 107 我完整的看完了,不過是很早以前的視頻,當時還叫做 Programming Paradigms 編程范式,這門課我在星球也多次推薦過了,真的對你理解整個計算機、底層非常有幫助。


          但是現(xiàn)在似乎叫計算機系統(tǒng),這門課的重點在于計算機的基礎設計和構(gòu)建,尤其是學習軟件編譯的時候,運行一個程序會發(fā)生什么,以及程序是如何在內(nèi)存中運行的。


          課程官網(wǎng):

          http://web.stanford.edu/class/cs107/



          兩所學校用的教材都是大名鼎鼎的 《深入理解計算機系統(tǒng)》,課程內(nèi)容和實驗內(nèi)容差不多,都是通過一組精心設計的 C 語言編程實驗, 讓我們能夠更好地了解高級語言程序轉(zhuǎn)換為機器代碼的過程,深刻理解底層機器的系統(tǒng)結(jié)構(gòu)。


          也算是為后續(xù)的體系結(jié)構(gòu)、編譯原理、操作系統(tǒng)等課程打下良好的基礎。



          這個課程,配套的實驗是精華,CMU 的總共 7 個實驗,涉及數(shù)據(jù)的表 示、Cache、緩沖區(qū)溢出、 過程調(diào)用及棧的構(gòu)成與使用、堆內(nèi)存分配器、webproxy 等,我記得我們當時還做過一個給 C 寫一個垃圾回收器,就是自己把 malloc 和 free 包起來做內(nèi)存管理,好像是用的可達性分析,反正是最簡單的做法,當時還寫了個報告:



          但是說實話,在國外都是在大一階段上的課程,但是我們學校安排在了大三哈哈哈,現(xiàn)在回過去看,大一讓我去上這個課,似乎也看不懂。。。


          除了這三個學校,還有加州伯克利的 Computer Architecture 也挺不錯的,總體來說這些課程內(nèi)容都是比較接近的,主要涵蓋以下主題:


          C語言→匯編→指令 →微體系結(jié)構(gòu);編譯 →鏈接→裝入→執(zhí) 行

          程序性能優(yōu)化、 存儲器結(jié)構(gòu)與管理、 并發(fā)和多線程、網(wǎng)絡 編程

          應 用級并行→數(shù)據(jù)級并行→ 線程級并行→指令級并行


          大家在學校有時間的話,可以去找相關(guān)資料來學習,美國 CS 四大名校的課程體系都很不錯, 非常注重計算機系統(tǒng)能力的培養(yǎng)。


          并且,在課程內(nèi)容橫跨整個計算機系統(tǒng),形成一條縱向的主線,把計算機里的每一層都串起來,而國內(nèi)的課程體系更傾向于分層講解。


          比如自底向上的計組、數(shù)字邏輯、匯編語言、高級語言程序設計、操作系統(tǒng)、計算機網(wǎng)絡、編譯原理等,課程之間的聯(lián)系比較少,這也導致了學生對 整個計算機系統(tǒng)的認識過程就像 “瞎子摸象”一樣,很難形成一個完整的認識。


          這也正是知乎上這個問題的解決方法:




          延伸閱讀??

          延伸閱讀《深入理解計算機系統(tǒng)(原書第3版)

          推薦語:本書是一本將計算機軟件和硬件理論結(jié)合講述的經(jīng)典教程,內(nèi)容覆蓋計算機導論、體系結(jié)構(gòu)和處理器設計等多門課程。卡內(nèi)基-梅隆大學、北京大學、上海交大等國內(nèi)外眾多知名高校選用指定教材。本書的最大優(yōu)點是為程序員描述計算機系統(tǒng)的實現(xiàn)細節(jié),通過描述程序是如何映射到系統(tǒng)上,以及程序是如何執(zhí)行的,使讀者更好地理解程序的行為,以及造成效率低下的原因。



          計算機系統(tǒng)解密:從理解計算機到編寫高效代碼

          推薦語:算機程序硬件軟件從底層實現(xiàn)到高層展現(xiàn)原理講解,對底層知識的多個主題進行了公平的覆蓋。


          干貨直達??


          更多精彩??

          在公眾號對話框輸入以下關(guān)鍵詞
          查看更多優(yōu)質(zhì)內(nèi)容!

          讀書?|?書單?|?干貨?|?講明白?|?神操作?|?手把手
          大數(shù)據(jù)?|?云計算?|?數(shù)據(jù)庫?|?Python?|?爬蟲?|?可視化
          AI?|?人工智能?|?機器學習?|?深度學習?|?NLP
          5G?|?中臺?|?用戶畫像?|?數(shù)學?|?算法?|?數(shù)字孿生

          據(jù)統(tǒng)計,99%的大咖都關(guān)注了這個公眾號
          ??
          瀏覽 20
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美久久久久久成人片 | 99视频在线播放观看精品 | 欧洲亚洲中文字幕 | 在线观看亚州视频 | 樱桃性爱视频 |