"

1.1 信息技術發展趨勢

目前信息技術主要經歷了互聯網、移動互聯網以及以大數據、雲計算、物聯網、人工智能區塊為代表的新興技術三個階段。

  • 互聯網

互聯網自從20世紀90年代逐漸興起,主要是通過網絡連接了世界各地的PC機,筆記本以及背後提供數據服務的大型服務器集群。

其中絕大多數PC機都運行著Windows,macOS操作系統,而服務器主要是以類Unix(CentOS,Ubuntu)佔據主要市場。

依靠互聯網成長起來的公司有Apple、Google、Amazon、Microsoft、Baidu、Alibaba、Tencent。

  • 移動互聯網

移動互聯網主要從2010開始爆發式增長,主要是通過網絡連接了世界各地的移動設備(最典型的就是手機),它們絕大多數都運行著Android,iOS操作系統。

依靠移動互聯網成長起來的公司有小米、美團、滴滴、螞蟻金服。

  • 大數據、雲計算

隨著用戶的爆發式增長,以海量數據為基礎的大數據、雲計算技術在Badu、Alibaba、Tencent等大型互聯網公司有著廣泛的商業應用場景。

  • 物聯網

物聯網會以手機作為中樞,通過物聯網連接所有的智能設備,包括智能家居、汽車、電視等嵌入式設備,目前小米、華為等在智能家居、電視、汽車等領域廣泛佈局,2019年8月華為發佈了鴻蒙系統。

  • 人工智能

人工智能(AI)作為當前最火爆的技術,國內的Baidu、Tencent、Alibaba等互聯網公司逐漸根據自身的核心業務開始佈局,Alibaba最早將人工智能技術佈局在電商和物流領域,而Baidu開發出了對話式人工智能操作系統Dueros和自動駕駛平臺Apollo,Tencent則是在遊戲領域應用人工智能。

  • 區塊鏈

區塊鏈經歷了數字貨幣、智能合約和超級賬本三個階段,區塊鏈技術可以廣泛使用在金融、供應鏈、物流、公共服務等領域,解決互聯網的信任問題,目前螞蟻金服、京東已經有大量的區塊鏈應用落地。

1.2 淺談計算機系統架構

1.2.1 計算機系統架構概述

計算機系統由硬件系統和軟件系統組成,由軟硬件協作完成人們日常生活和工作中的各種任務,例如聽歌、看電影、購物、寫博客等等。

微信聊天:微信監聽鍵盤輸入的數據,並放到內存,然後傳給網卡,通過網絡傳遞給另外一個網卡,再從網卡傳遞到內存,顯示在顯示器上。

QQ音樂:QQ音樂將音樂數據加載到內存上,然後寫到聲卡上。

騰訊視頻:應用程序將視頻數據加載到內存,然後寫到顯卡上。

Office寫文檔:Office將內存中的數據寫入到磁盤上。

Office讀文檔:Offcice將磁盤的數據加載到內存,然後顯示在屏幕上。

1.2.2 計算機硬件系統

現在計算機是由運算器、控制器、存儲器、輸入設備和輸出設備五大部分組成,它們各司其職,完成了數據的計算、存儲、傳輸。

  • CPU

CPU也就是中央處理器,由運算器和控制器所組成,其作用是從內存中獲取指令並執行後將結果返回給內存或寫入磁盤和控制其他設備協同工作。

  • 內存

內存是採用編址存儲,其主要作用是作為程序的工作區,程序運行時會將指令和數據都加載到內存,內存中的數據斷電後會丟失。

  • 硬盤

硬盤是用於存儲海量數據,分為機械硬盤和固態硬盤兩大類。

  • IO設備

IO設備用於數據的輸入和輸出,其中常見的IO設備包含鼠標、鍵盤,常見的輸出設備包括聲卡、顯卡。

網卡也是屬於IO設備的一種,主要用於網路上的數據接收和發送。

在後期程序排查錯誤時除了要考慮程序本身的錯誤以外,還要考慮計算機硬件故障,例如磁盤寫滿,網絡不通等問題

每個計算機組件的IO性能也各不相同,CPU、內存、磁盤都遵循容量越大、IO性能越差的特點。

"

1.1 信息技術發展趨勢

目前信息技術主要經歷了互聯網、移動互聯網以及以大數據、雲計算、物聯網、人工智能區塊為代表的新興技術三個階段。

  • 互聯網

互聯網自從20世紀90年代逐漸興起,主要是通過網絡連接了世界各地的PC機,筆記本以及背後提供數據服務的大型服務器集群。

其中絕大多數PC機都運行著Windows,macOS操作系統,而服務器主要是以類Unix(CentOS,Ubuntu)佔據主要市場。

依靠互聯網成長起來的公司有Apple、Google、Amazon、Microsoft、Baidu、Alibaba、Tencent。

  • 移動互聯網

移動互聯網主要從2010開始爆發式增長,主要是通過網絡連接了世界各地的移動設備(最典型的就是手機),它們絕大多數都運行著Android,iOS操作系統。

依靠移動互聯網成長起來的公司有小米、美團、滴滴、螞蟻金服。

  • 大數據、雲計算

隨著用戶的爆發式增長,以海量數據為基礎的大數據、雲計算技術在Badu、Alibaba、Tencent等大型互聯網公司有著廣泛的商業應用場景。

  • 物聯網

物聯網會以手機作為中樞,通過物聯網連接所有的智能設備,包括智能家居、汽車、電視等嵌入式設備,目前小米、華為等在智能家居、電視、汽車等領域廣泛佈局,2019年8月華為發佈了鴻蒙系統。

  • 人工智能

人工智能(AI)作為當前最火爆的技術,國內的Baidu、Tencent、Alibaba等互聯網公司逐漸根據自身的核心業務開始佈局,Alibaba最早將人工智能技術佈局在電商和物流領域,而Baidu開發出了對話式人工智能操作系統Dueros和自動駕駛平臺Apollo,Tencent則是在遊戲領域應用人工智能。

  • 區塊鏈

區塊鏈經歷了數字貨幣、智能合約和超級賬本三個階段,區塊鏈技術可以廣泛使用在金融、供應鏈、物流、公共服務等領域,解決互聯網的信任問題,目前螞蟻金服、京東已經有大量的區塊鏈應用落地。

1.2 淺談計算機系統架構

1.2.1 計算機系統架構概述

計算機系統由硬件系統和軟件系統組成,由軟硬件協作完成人們日常生活和工作中的各種任務,例如聽歌、看電影、購物、寫博客等等。

微信聊天:微信監聽鍵盤輸入的數據,並放到內存,然後傳給網卡,通過網絡傳遞給另外一個網卡,再從網卡傳遞到內存,顯示在顯示器上。

QQ音樂:QQ音樂將音樂數據加載到內存上,然後寫到聲卡上。

騰訊視頻:應用程序將視頻數據加載到內存,然後寫到顯卡上。

Office寫文檔:Office將內存中的數據寫入到磁盤上。

Office讀文檔:Offcice將磁盤的數據加載到內存,然後顯示在屏幕上。

1.2.2 計算機硬件系統

現在計算機是由運算器、控制器、存儲器、輸入設備和輸出設備五大部分組成,它們各司其職,完成了數據的計算、存儲、傳輸。

  • CPU

CPU也就是中央處理器,由運算器和控制器所組成,其作用是從內存中獲取指令並執行後將結果返回給內存或寫入磁盤和控制其他設備協同工作。

  • 內存

內存是採用編址存儲,其主要作用是作為程序的工作區,程序運行時會將指令和數據都加載到內存,內存中的數據斷電後會丟失。

  • 硬盤

硬盤是用於存儲海量數據,分為機械硬盤和固態硬盤兩大類。

  • IO設備

IO設備用於數據的輸入和輸出,其中常見的IO設備包含鼠標、鍵盤,常見的輸出設備包括聲卡、顯卡。

網卡也是屬於IO設備的一種,主要用於網路上的數據接收和發送。

在後期程序排查錯誤時除了要考慮程序本身的錯誤以外,還要考慮計算機硬件故障,例如磁盤寫滿,網絡不通等問題

每個計算機組件的IO性能也各不相同,CPU、內存、磁盤都遵循容量越大、IO性能越差的特點。

我的全棧之路-C語言基礎之C語言概述

在後期優化程序時需要考慮程序時間複雜度和空間複雜度的問題。

1.2.2 計算機軟件系統

軟件的出現實現了人和計算機更好的交互,它是由開發人員採用某種編程語言(C/C++/Java等等)編寫的一系列指令以及不同業務場景產生的數據組成。

通常將軟件分為系統軟件和應用軟件

系統軟件:驅動、操作系統、編譯器、數據庫等都是屬於系統軟件,操作系統是負責管理硬件資源

,同時給應用軟件提供運行平臺,目前主流的操作系統有Windows,Linux,macOS,Android,iOS。

應用軟件:微信、支付寶、淘寶、Office都是屬於應用軟件,它們都是運行在操作系統之上的。

運行在不同操作系統之上的軟件交互方式也不一樣,Linux上的軟件通常是使用字符界面的交互方式,運行在Windows,macOS上的軟件通常是以鼠標、鍵盤操作的交互方式,運行在Android,iOS上的軟件通常是以手勢觸控、語音等交互方式。

1.3 程序和指令

程序是為了完成某項任務(例如聊天、聽音樂)而使用某種編程語言(例如C/C++)編寫的一組指令序列。

而指令是計算機程序控制的最小單位,由操作碼和操作數組成,操作碼是計算機要執行什麼操作,例如加減乘除操作,而操作數具體執行的對象,具體的數據以及數據的位置。

所有指令的集合稱為指令系統,常見的PC機指令系統有Intel X86指令集,常見的手機指令系統有ARM,因此手機上的程序不加修改是不能直接在PC機上運行,因為不同的指令集是不兼容的。

1.4 編程語言發展史

任何事物都是從無到有,逐步發展壯大起來的,編程語言也是一樣。

計算機程序設計語言經歷了機器語言到彙編語言和高級程序設計語言三個階段,其特點是使得程序員用編程語言開發、測試、部署應用程序越來越方便、高效。但是是以犧牲效率為代價,但是隨著計算機硬件的發展,絕大多數應用場景的效率損失可以忽略不計。

  • 機器語言

計算機發展的最早期,程序員編寫程序採用二進制的指令(010010101)來實現的,而每種CPU都有各自不同的指令系統(Ultra SPARC/Intel X86/ARM),因此在不同的機器上使用不同的機器語言實現。其特點是性能特別高效,而面向機器編程也就意味著不能移植,需要手動處理底層硬件的差異性,而且二進制的指令難以理解和維護。

  • 彙編語言

隨著時代和計算機技術的發展,彙編語言和編譯器的出現解決了機器語言需要記住非常多的二進制機器指令的難題,但是還是沒有從根本上解決移植性的問題,只是將機器指令轉換為易懂的英文單詞,然後由編譯器編譯成機器指令,因為計算機終歸揭底只能識別二進制的0001110100110機器指令,而且彙編語言是面向機器的,不同機器(SPARC/Intel X86/ARM)的彙編指令是不相同的。

  • 高級程序設計語言

高級程序設計語言的高級之處體現在開發人員在編寫程序時無需關心計算機底層硬件差異而只需要專注於業務模塊實現即可。甚至是可以實現 一次編譯,到處運行,這裡以Java為例子:通過實現不同平臺的JVM,編譯生成的字節碼文件可以在任意的JVM上運行。

高級語言通常都需要編譯器或者是解釋器將源碼編譯或者解釋後執行。

高級語言主要分為面向過程和麵向對象兩種,其中典型的面向過程編程語言就是C,面向對象的編程語言有Java,C++等等。

1.5 計算機語言應用場景

如果想知道目前主流的編程語言有哪些,可以訪問tiobe 首頁獲取編程語言排行榜。

2019年8月編程語言排行榜Top20

"

1.1 信息技術發展趨勢

目前信息技術主要經歷了互聯網、移動互聯網以及以大數據、雲計算、物聯網、人工智能區塊為代表的新興技術三個階段。

  • 互聯網

互聯網自從20世紀90年代逐漸興起,主要是通過網絡連接了世界各地的PC機,筆記本以及背後提供數據服務的大型服務器集群。

其中絕大多數PC機都運行著Windows,macOS操作系統,而服務器主要是以類Unix(CentOS,Ubuntu)佔據主要市場。

依靠互聯網成長起來的公司有Apple、Google、Amazon、Microsoft、Baidu、Alibaba、Tencent。

  • 移動互聯網

移動互聯網主要從2010開始爆發式增長,主要是通過網絡連接了世界各地的移動設備(最典型的就是手機),它們絕大多數都運行著Android,iOS操作系統。

依靠移動互聯網成長起來的公司有小米、美團、滴滴、螞蟻金服。

  • 大數據、雲計算

隨著用戶的爆發式增長,以海量數據為基礎的大數據、雲計算技術在Badu、Alibaba、Tencent等大型互聯網公司有著廣泛的商業應用場景。

  • 物聯網

物聯網會以手機作為中樞,通過物聯網連接所有的智能設備,包括智能家居、汽車、電視等嵌入式設備,目前小米、華為等在智能家居、電視、汽車等領域廣泛佈局,2019年8月華為發佈了鴻蒙系統。

  • 人工智能

人工智能(AI)作為當前最火爆的技術,國內的Baidu、Tencent、Alibaba等互聯網公司逐漸根據自身的核心業務開始佈局,Alibaba最早將人工智能技術佈局在電商和物流領域,而Baidu開發出了對話式人工智能操作系統Dueros和自動駕駛平臺Apollo,Tencent則是在遊戲領域應用人工智能。

  • 區塊鏈

區塊鏈經歷了數字貨幣、智能合約和超級賬本三個階段,區塊鏈技術可以廣泛使用在金融、供應鏈、物流、公共服務等領域,解決互聯網的信任問題,目前螞蟻金服、京東已經有大量的區塊鏈應用落地。

1.2 淺談計算機系統架構

1.2.1 計算機系統架構概述

計算機系統由硬件系統和軟件系統組成,由軟硬件協作完成人們日常生活和工作中的各種任務,例如聽歌、看電影、購物、寫博客等等。

微信聊天:微信監聽鍵盤輸入的數據,並放到內存,然後傳給網卡,通過網絡傳遞給另外一個網卡,再從網卡傳遞到內存,顯示在顯示器上。

QQ音樂:QQ音樂將音樂數據加載到內存上,然後寫到聲卡上。

騰訊視頻:應用程序將視頻數據加載到內存,然後寫到顯卡上。

Office寫文檔:Office將內存中的數據寫入到磁盤上。

Office讀文檔:Offcice將磁盤的數據加載到內存,然後顯示在屏幕上。

1.2.2 計算機硬件系統

現在計算機是由運算器、控制器、存儲器、輸入設備和輸出設備五大部分組成,它們各司其職,完成了數據的計算、存儲、傳輸。

  • CPU

CPU也就是中央處理器,由運算器和控制器所組成,其作用是從內存中獲取指令並執行後將結果返回給內存或寫入磁盤和控制其他設備協同工作。

  • 內存

內存是採用編址存儲,其主要作用是作為程序的工作區,程序運行時會將指令和數據都加載到內存,內存中的數據斷電後會丟失。

  • 硬盤

硬盤是用於存儲海量數據,分為機械硬盤和固態硬盤兩大類。

  • IO設備

IO設備用於數據的輸入和輸出,其中常見的IO設備包含鼠標、鍵盤,常見的輸出設備包括聲卡、顯卡。

網卡也是屬於IO設備的一種,主要用於網路上的數據接收和發送。

在後期程序排查錯誤時除了要考慮程序本身的錯誤以外,還要考慮計算機硬件故障,例如磁盤寫滿,網絡不通等問題

每個計算機組件的IO性能也各不相同,CPU、內存、磁盤都遵循容量越大、IO性能越差的特點。

我的全棧之路-C語言基礎之C語言概述

在後期優化程序時需要考慮程序時間複雜度和空間複雜度的問題。

1.2.2 計算機軟件系統

軟件的出現實現了人和計算機更好的交互,它是由開發人員採用某種編程語言(C/C++/Java等等)編寫的一系列指令以及不同業務場景產生的數據組成。

通常將軟件分為系統軟件和應用軟件

系統軟件:驅動、操作系統、編譯器、數據庫等都是屬於系統軟件,操作系統是負責管理硬件資源

,同時給應用軟件提供運行平臺,目前主流的操作系統有Windows,Linux,macOS,Android,iOS。

應用軟件:微信、支付寶、淘寶、Office都是屬於應用軟件,它們都是運行在操作系統之上的。

運行在不同操作系統之上的軟件交互方式也不一樣,Linux上的軟件通常是使用字符界面的交互方式,運行在Windows,macOS上的軟件通常是以鼠標、鍵盤操作的交互方式,運行在Android,iOS上的軟件通常是以手勢觸控、語音等交互方式。

1.3 程序和指令

程序是為了完成某項任務(例如聊天、聽音樂)而使用某種編程語言(例如C/C++)編寫的一組指令序列。

而指令是計算機程序控制的最小單位,由操作碼和操作數組成,操作碼是計算機要執行什麼操作,例如加減乘除操作,而操作數具體執行的對象,具體的數據以及數據的位置。

所有指令的集合稱為指令系統,常見的PC機指令系統有Intel X86指令集,常見的手機指令系統有ARM,因此手機上的程序不加修改是不能直接在PC機上運行,因為不同的指令集是不兼容的。

1.4 編程語言發展史

任何事物都是從無到有,逐步發展壯大起來的,編程語言也是一樣。

計算機程序設計語言經歷了機器語言到彙編語言和高級程序設計語言三個階段,其特點是使得程序員用編程語言開發、測試、部署應用程序越來越方便、高效。但是是以犧牲效率為代價,但是隨著計算機硬件的發展,絕大多數應用場景的效率損失可以忽略不計。

  • 機器語言

計算機發展的最早期,程序員編寫程序採用二進制的指令(010010101)來實現的,而每種CPU都有各自不同的指令系統(Ultra SPARC/Intel X86/ARM),因此在不同的機器上使用不同的機器語言實現。其特點是性能特別高效,而面向機器編程也就意味著不能移植,需要手動處理底層硬件的差異性,而且二進制的指令難以理解和維護。

  • 彙編語言

隨著時代和計算機技術的發展,彙編語言和編譯器的出現解決了機器語言需要記住非常多的二進制機器指令的難題,但是還是沒有從根本上解決移植性的問題,只是將機器指令轉換為易懂的英文單詞,然後由編譯器編譯成機器指令,因為計算機終歸揭底只能識別二進制的0001110100110機器指令,而且彙編語言是面向機器的,不同機器(SPARC/Intel X86/ARM)的彙編指令是不相同的。

  • 高級程序設計語言

高級程序設計語言的高級之處體現在開發人員在編寫程序時無需關心計算機底層硬件差異而只需要專注於業務模塊實現即可。甚至是可以實現 一次編譯,到處運行,這裡以Java為例子:通過實現不同平臺的JVM,編譯生成的字節碼文件可以在任意的JVM上運行。

高級語言通常都需要編譯器或者是解釋器將源碼編譯或者解釋後執行。

高級語言主要分為面向過程和麵向對象兩種,其中典型的面向過程編程語言就是C,面向對象的編程語言有Java,C++等等。

1.5 計算機語言應用場景

如果想知道目前主流的編程語言有哪些,可以訪問tiobe 首頁獲取編程語言排行榜。

2019年8月編程語言排行榜Top20

我的全棧之路-C語言基礎之C語言概述

根據Tiobe排行榜得知,Java/C/Python分別排在前三名, 隨後緊跟著C++,C#等等。

"

1.1 信息技術發展趨勢

目前信息技術主要經歷了互聯網、移動互聯網以及以大數據、雲計算、物聯網、人工智能區塊為代表的新興技術三個階段。

  • 互聯網

互聯網自從20世紀90年代逐漸興起,主要是通過網絡連接了世界各地的PC機,筆記本以及背後提供數據服務的大型服務器集群。

其中絕大多數PC機都運行著Windows,macOS操作系統,而服務器主要是以類Unix(CentOS,Ubuntu)佔據主要市場。

依靠互聯網成長起來的公司有Apple、Google、Amazon、Microsoft、Baidu、Alibaba、Tencent。

  • 移動互聯網

移動互聯網主要從2010開始爆發式增長,主要是通過網絡連接了世界各地的移動設備(最典型的就是手機),它們絕大多數都運行著Android,iOS操作系統。

依靠移動互聯網成長起來的公司有小米、美團、滴滴、螞蟻金服。

  • 大數據、雲計算

隨著用戶的爆發式增長,以海量數據為基礎的大數據、雲計算技術在Badu、Alibaba、Tencent等大型互聯網公司有著廣泛的商業應用場景。

  • 物聯網

物聯網會以手機作為中樞,通過物聯網連接所有的智能設備,包括智能家居、汽車、電視等嵌入式設備,目前小米、華為等在智能家居、電視、汽車等領域廣泛佈局,2019年8月華為發佈了鴻蒙系統。

  • 人工智能

人工智能(AI)作為當前最火爆的技術,國內的Baidu、Tencent、Alibaba等互聯網公司逐漸根據自身的核心業務開始佈局,Alibaba最早將人工智能技術佈局在電商和物流領域,而Baidu開發出了對話式人工智能操作系統Dueros和自動駕駛平臺Apollo,Tencent則是在遊戲領域應用人工智能。

  • 區塊鏈

區塊鏈經歷了數字貨幣、智能合約和超級賬本三個階段,區塊鏈技術可以廣泛使用在金融、供應鏈、物流、公共服務等領域,解決互聯網的信任問題,目前螞蟻金服、京東已經有大量的區塊鏈應用落地。

1.2 淺談計算機系統架構

1.2.1 計算機系統架構概述

計算機系統由硬件系統和軟件系統組成,由軟硬件協作完成人們日常生活和工作中的各種任務,例如聽歌、看電影、購物、寫博客等等。

微信聊天:微信監聽鍵盤輸入的數據,並放到內存,然後傳給網卡,通過網絡傳遞給另外一個網卡,再從網卡傳遞到內存,顯示在顯示器上。

QQ音樂:QQ音樂將音樂數據加載到內存上,然後寫到聲卡上。

騰訊視頻:應用程序將視頻數據加載到內存,然後寫到顯卡上。

Office寫文檔:Office將內存中的數據寫入到磁盤上。

Office讀文檔:Offcice將磁盤的數據加載到內存,然後顯示在屏幕上。

1.2.2 計算機硬件系統

現在計算機是由運算器、控制器、存儲器、輸入設備和輸出設備五大部分組成,它們各司其職,完成了數據的計算、存儲、傳輸。

  • CPU

CPU也就是中央處理器,由運算器和控制器所組成,其作用是從內存中獲取指令並執行後將結果返回給內存或寫入磁盤和控制其他設備協同工作。

  • 內存

內存是採用編址存儲,其主要作用是作為程序的工作區,程序運行時會將指令和數據都加載到內存,內存中的數據斷電後會丟失。

  • 硬盤

硬盤是用於存儲海量數據,分為機械硬盤和固態硬盤兩大類。

  • IO設備

IO設備用於數據的輸入和輸出,其中常見的IO設備包含鼠標、鍵盤,常見的輸出設備包括聲卡、顯卡。

網卡也是屬於IO設備的一種,主要用於網路上的數據接收和發送。

在後期程序排查錯誤時除了要考慮程序本身的錯誤以外,還要考慮計算機硬件故障,例如磁盤寫滿,網絡不通等問題

每個計算機組件的IO性能也各不相同,CPU、內存、磁盤都遵循容量越大、IO性能越差的特點。

我的全棧之路-C語言基礎之C語言概述

在後期優化程序時需要考慮程序時間複雜度和空間複雜度的問題。

1.2.2 計算機軟件系統

軟件的出現實現了人和計算機更好的交互,它是由開發人員採用某種編程語言(C/C++/Java等等)編寫的一系列指令以及不同業務場景產生的數據組成。

通常將軟件分為系統軟件和應用軟件

系統軟件:驅動、操作系統、編譯器、數據庫等都是屬於系統軟件,操作系統是負責管理硬件資源

,同時給應用軟件提供運行平臺,目前主流的操作系統有Windows,Linux,macOS,Android,iOS。

應用軟件:微信、支付寶、淘寶、Office都是屬於應用軟件,它們都是運行在操作系統之上的。

運行在不同操作系統之上的軟件交互方式也不一樣,Linux上的軟件通常是使用字符界面的交互方式,運行在Windows,macOS上的軟件通常是以鼠標、鍵盤操作的交互方式,運行在Android,iOS上的軟件通常是以手勢觸控、語音等交互方式。

1.3 程序和指令

程序是為了完成某項任務(例如聊天、聽音樂)而使用某種編程語言(例如C/C++)編寫的一組指令序列。

而指令是計算機程序控制的最小單位,由操作碼和操作數組成,操作碼是計算機要執行什麼操作,例如加減乘除操作,而操作數具體執行的對象,具體的數據以及數據的位置。

所有指令的集合稱為指令系統,常見的PC機指令系統有Intel X86指令集,常見的手機指令系統有ARM,因此手機上的程序不加修改是不能直接在PC機上運行,因為不同的指令集是不兼容的。

1.4 編程語言發展史

任何事物都是從無到有,逐步發展壯大起來的,編程語言也是一樣。

計算機程序設計語言經歷了機器語言到彙編語言和高級程序設計語言三個階段,其特點是使得程序員用編程語言開發、測試、部署應用程序越來越方便、高效。但是是以犧牲效率為代價,但是隨著計算機硬件的發展,絕大多數應用場景的效率損失可以忽略不計。

  • 機器語言

計算機發展的最早期,程序員編寫程序採用二進制的指令(010010101)來實現的,而每種CPU都有各自不同的指令系統(Ultra SPARC/Intel X86/ARM),因此在不同的機器上使用不同的機器語言實現。其特點是性能特別高效,而面向機器編程也就意味著不能移植,需要手動處理底層硬件的差異性,而且二進制的指令難以理解和維護。

  • 彙編語言

隨著時代和計算機技術的發展,彙編語言和編譯器的出現解決了機器語言需要記住非常多的二進制機器指令的難題,但是還是沒有從根本上解決移植性的問題,只是將機器指令轉換為易懂的英文單詞,然後由編譯器編譯成機器指令,因為計算機終歸揭底只能識別二進制的0001110100110機器指令,而且彙編語言是面向機器的,不同機器(SPARC/Intel X86/ARM)的彙編指令是不相同的。

  • 高級程序設計語言

高級程序設計語言的高級之處體現在開發人員在編寫程序時無需關心計算機底層硬件差異而只需要專注於業務模塊實現即可。甚至是可以實現 一次編譯,到處運行,這裡以Java為例子:通過實現不同平臺的JVM,編譯生成的字節碼文件可以在任意的JVM上運行。

高級語言通常都需要編譯器或者是解釋器將源碼編譯或者解釋後執行。

高級語言主要分為面向過程和麵向對象兩種,其中典型的面向過程編程語言就是C,面向對象的編程語言有Java,C++等等。

1.5 計算機語言應用場景

如果想知道目前主流的編程語言有哪些,可以訪問tiobe 首頁獲取編程語言排行榜。

2019年8月編程語言排行榜Top20

我的全棧之路-C語言基礎之C語言概述

根據Tiobe排行榜得知,Java/C/Python分別排在前三名, 隨後緊跟著C++,C#等等。

我的全棧之路-C語言基礎之C語言概述

那麼如果你作為初學者,面對如此之多的編程語言,到底應該先從哪門語言上車呢?如果你想深入的學習其他語言和架構相關的知識之前建議熟練掌握C語言。因為C++/Java/C#等編程語言都模仿了C語言。無論哪種語言,都是實現目標的工具,而不是目標本身。

而不出意外的話,我的全棧之路系列會覆蓋上述的十種編程語言,實現全平臺開發。

1.6 C語言概覽

1.6.1 C語言發展簡史


"

1.1 信息技術發展趨勢

目前信息技術主要經歷了互聯網、移動互聯網以及以大數據、雲計算、物聯網、人工智能區塊為代表的新興技術三個階段。

  • 互聯網

互聯網自從20世紀90年代逐漸興起,主要是通過網絡連接了世界各地的PC機,筆記本以及背後提供數據服務的大型服務器集群。

其中絕大多數PC機都運行著Windows,macOS操作系統,而服務器主要是以類Unix(CentOS,Ubuntu)佔據主要市場。

依靠互聯網成長起來的公司有Apple、Google、Amazon、Microsoft、Baidu、Alibaba、Tencent。

  • 移動互聯網

移動互聯網主要從2010開始爆發式增長,主要是通過網絡連接了世界各地的移動設備(最典型的就是手機),它們絕大多數都運行著Android,iOS操作系統。

依靠移動互聯網成長起來的公司有小米、美團、滴滴、螞蟻金服。

  • 大數據、雲計算

隨著用戶的爆發式增長,以海量數據為基礎的大數據、雲計算技術在Badu、Alibaba、Tencent等大型互聯網公司有著廣泛的商業應用場景。

  • 物聯網

物聯網會以手機作為中樞,通過物聯網連接所有的智能設備,包括智能家居、汽車、電視等嵌入式設備,目前小米、華為等在智能家居、電視、汽車等領域廣泛佈局,2019年8月華為發佈了鴻蒙系統。

  • 人工智能

人工智能(AI)作為當前最火爆的技術,國內的Baidu、Tencent、Alibaba等互聯網公司逐漸根據自身的核心業務開始佈局,Alibaba最早將人工智能技術佈局在電商和物流領域,而Baidu開發出了對話式人工智能操作系統Dueros和自動駕駛平臺Apollo,Tencent則是在遊戲領域應用人工智能。

  • 區塊鏈

區塊鏈經歷了數字貨幣、智能合約和超級賬本三個階段,區塊鏈技術可以廣泛使用在金融、供應鏈、物流、公共服務等領域,解決互聯網的信任問題,目前螞蟻金服、京東已經有大量的區塊鏈應用落地。

1.2 淺談計算機系統架構

1.2.1 計算機系統架構概述

計算機系統由硬件系統和軟件系統組成,由軟硬件協作完成人們日常生活和工作中的各種任務,例如聽歌、看電影、購物、寫博客等等。

微信聊天:微信監聽鍵盤輸入的數據,並放到內存,然後傳給網卡,通過網絡傳遞給另外一個網卡,再從網卡傳遞到內存,顯示在顯示器上。

QQ音樂:QQ音樂將音樂數據加載到內存上,然後寫到聲卡上。

騰訊視頻:應用程序將視頻數據加載到內存,然後寫到顯卡上。

Office寫文檔:Office將內存中的數據寫入到磁盤上。

Office讀文檔:Offcice將磁盤的數據加載到內存,然後顯示在屏幕上。

1.2.2 計算機硬件系統

現在計算機是由運算器、控制器、存儲器、輸入設備和輸出設備五大部分組成,它們各司其職,完成了數據的計算、存儲、傳輸。

  • CPU

CPU也就是中央處理器,由運算器和控制器所組成,其作用是從內存中獲取指令並執行後將結果返回給內存或寫入磁盤和控制其他設備協同工作。

  • 內存

內存是採用編址存儲,其主要作用是作為程序的工作區,程序運行時會將指令和數據都加載到內存,內存中的數據斷電後會丟失。

  • 硬盤

硬盤是用於存儲海量數據,分為機械硬盤和固態硬盤兩大類。

  • IO設備

IO設備用於數據的輸入和輸出,其中常見的IO設備包含鼠標、鍵盤,常見的輸出設備包括聲卡、顯卡。

網卡也是屬於IO設備的一種,主要用於網路上的數據接收和發送。

在後期程序排查錯誤時除了要考慮程序本身的錯誤以外,還要考慮計算機硬件故障,例如磁盤寫滿,網絡不通等問題

每個計算機組件的IO性能也各不相同,CPU、內存、磁盤都遵循容量越大、IO性能越差的特點。

我的全棧之路-C語言基礎之C語言概述

在後期優化程序時需要考慮程序時間複雜度和空間複雜度的問題。

1.2.2 計算機軟件系統

軟件的出現實現了人和計算機更好的交互,它是由開發人員採用某種編程語言(C/C++/Java等等)編寫的一系列指令以及不同業務場景產生的數據組成。

通常將軟件分為系統軟件和應用軟件

系統軟件:驅動、操作系統、編譯器、數據庫等都是屬於系統軟件,操作系統是負責管理硬件資源

,同時給應用軟件提供運行平臺,目前主流的操作系統有Windows,Linux,macOS,Android,iOS。

應用軟件:微信、支付寶、淘寶、Office都是屬於應用軟件,它們都是運行在操作系統之上的。

運行在不同操作系統之上的軟件交互方式也不一樣,Linux上的軟件通常是使用字符界面的交互方式,運行在Windows,macOS上的軟件通常是以鼠標、鍵盤操作的交互方式,運行在Android,iOS上的軟件通常是以手勢觸控、語音等交互方式。

1.3 程序和指令

程序是為了完成某項任務(例如聊天、聽音樂)而使用某種編程語言(例如C/C++)編寫的一組指令序列。

而指令是計算機程序控制的最小單位,由操作碼和操作數組成,操作碼是計算機要執行什麼操作,例如加減乘除操作,而操作數具體執行的對象,具體的數據以及數據的位置。

所有指令的集合稱為指令系統,常見的PC機指令系統有Intel X86指令集,常見的手機指令系統有ARM,因此手機上的程序不加修改是不能直接在PC機上運行,因為不同的指令集是不兼容的。

1.4 編程語言發展史

任何事物都是從無到有,逐步發展壯大起來的,編程語言也是一樣。

計算機程序設計語言經歷了機器語言到彙編語言和高級程序設計語言三個階段,其特點是使得程序員用編程語言開發、測試、部署應用程序越來越方便、高效。但是是以犧牲效率為代價,但是隨著計算機硬件的發展,絕大多數應用場景的效率損失可以忽略不計。

  • 機器語言

計算機發展的最早期,程序員編寫程序採用二進制的指令(010010101)來實現的,而每種CPU都有各自不同的指令系統(Ultra SPARC/Intel X86/ARM),因此在不同的機器上使用不同的機器語言實現。其特點是性能特別高效,而面向機器編程也就意味著不能移植,需要手動處理底層硬件的差異性,而且二進制的指令難以理解和維護。

  • 彙編語言

隨著時代和計算機技術的發展,彙編語言和編譯器的出現解決了機器語言需要記住非常多的二進制機器指令的難題,但是還是沒有從根本上解決移植性的問題,只是將機器指令轉換為易懂的英文單詞,然後由編譯器編譯成機器指令,因為計算機終歸揭底只能識別二進制的0001110100110機器指令,而且彙編語言是面向機器的,不同機器(SPARC/Intel X86/ARM)的彙編指令是不相同的。

  • 高級程序設計語言

高級程序設計語言的高級之處體現在開發人員在編寫程序時無需關心計算機底層硬件差異而只需要專注於業務模塊實現即可。甚至是可以實現 一次編譯,到處運行,這裡以Java為例子:通過實現不同平臺的JVM,編譯生成的字節碼文件可以在任意的JVM上運行。

高級語言通常都需要編譯器或者是解釋器將源碼編譯或者解釋後執行。

高級語言主要分為面向過程和麵向對象兩種,其中典型的面向過程編程語言就是C,面向對象的編程語言有Java,C++等等。

1.5 計算機語言應用場景

如果想知道目前主流的編程語言有哪些,可以訪問tiobe 首頁獲取編程語言排行榜。

2019年8月編程語言排行榜Top20

我的全棧之路-C語言基礎之C語言概述

根據Tiobe排行榜得知,Java/C/Python分別排在前三名, 隨後緊跟著C++,C#等等。

我的全棧之路-C語言基礎之C語言概述

那麼如果你作為初學者,面對如此之多的編程語言,到底應該先從哪門語言上車呢?如果你想深入的學習其他語言和架構相關的知識之前建議熟練掌握C語言。因為C++/Java/C#等編程語言都模仿了C語言。無論哪種語言,都是實現目標的工具,而不是目標本身。

而不出意外的話,我的全棧之路系列會覆蓋上述的十種編程語言,實現全平臺開發。

1.6 C語言概覽

1.6.1 C語言發展簡史


我的全棧之路-C語言基礎之C語言概述

Dennis Ritchie


C語言憑藉其高效率、良好的移植性、功能強大的特性在操作系統、硬件驅動以及系統應用開發佔據廣闊的市場。

  • 起源

1972年,貝爾實驗室的Dennis Ritchie和Ken Thompson在開發Unix操作系統時設計了C語言,該操作系統的90%以上的代碼都是由C語言實現,後期的Linux,MacOS,Android,IOS都是基於Unix發展而來的。

  • 標準

1987年Dennis Ritchie和Brian Kernighan編寫了The C Programming Language第一版是公認的C標準實現,而沒有定義C庫。

而後期ANSI/ISO先後於1990年、1999年和2011年發佈了C90標準、C99標準和C11標準,該標準定義了C語言和C標準庫。

1.6.2 C語言特性

C語言作為面向過程的高級程序設計語言,能夠輕鬆的實現自頂向下的規劃、結構化編程和模塊化設計,這樣使得程序結構更加簡潔,可擴展性強以及更加容易維護。

而且C語言有著高效(執行速度快)、功能強大(嵌套匯編)以及可移植性(標準庫可移植)、功能強大等優點,而且也存在著對系統平臺庫依賴嚴重,由於編程風格自由,經驗不足也會容易導致出錯,編寫代碼實現週期長,同樣的代碼在不同的操作系統(或者編譯器)下可能會有不同的表現等缺點。

1.6.3 C語言應用場景

C語言偏向操作系統、硬件驅動、底層應用(數據庫、編譯器)、嵌入式應用開發、遊戲引擎等應用場景。

硬件驅動的絕大部分實現是由C語言和彙編語言實現的。

主流操作系統(Unix,Linxu,MacOS,Windows,Android,iOS)的底層實現都是由C語言和部分彙編實現的。

C++,Java,Python,Swift的編譯器或者解釋器都是由C語言實現的。

Git,Nginx,Redis,MySQL都是使用C語言實現的,而且都是開放源代碼的,可以在GitHub中獲取到,可以通過閱讀源碼提升自己的設計和編碼能力。

"

相關推薦

推薦中...