首頁>科技>

資訊科技發展趨勢

目前資訊科技主要經歷了網際網路、移動網際網路以及以大資料、雲端計算、物聯網、人工智慧、區塊鏈等為代表的新興技術三個階段。

網際網路網際網路自從20世紀90年代逐漸興起,主要是通過網路連線了世界各地的PC,筆記本以及背後提供各種服務的大型伺服器叢集。其中絕大多數PC 都執行著Windows,macOS作業系統,而伺服器主要是以類Unix(CentOS,Ubuntu)佔據主要市場。依靠網際網路成長起來的公司有Apple、Google、Amazon、Microsoft、Baidu、Alibaba、Tencent。移動網際網路移動網際網路主要從2010開始爆發式增長,主要是通過網路連線了世界各地的移動裝置(最典型的就是手機),它們絕大多數都執行著Android,iOS作業系統。依靠移動網際網路成長起來的公司有位元組跳動、螞蟻金服、小米、美團、滴滴。大資料、雲端計算隨著使用者的爆發式增長,以海量資料為基礎的大資料、雲端計算技術在Google、Amazon、Apple、Baidu、Alibaba、Tencent等大型網際網路公司有著廣泛的商業應用場景。物聯網物聯網會以手機作為中樞,通過物聯網連線所有的智慧裝置,包括智慧家居、汽車、電視等嵌入式裝置,目前國內的小米、華為等在智慧家居、電視、汽車等領域廣泛佈局。人工智慧人工智慧(AI)作為當前最火爆的技術,國內的Baidu、Tencent、Alibaba等網際網路公司逐漸根據自身的核心業務開始佈局,Alibaba最早將人工智慧技術佈局在電商和物流領域,而Baidu開發出了對話式人工智慧作業系統Dueros和自動駕駛平臺Apollo,Tencent則是在遊戲領域應用人工智慧。區塊鏈區塊鏈經歷了數字貨幣、智慧合約和超級賬本三個階段,區塊鏈技術可以廣泛使用在金融、供應鏈、物流、公共服務等領域,解決網際網路的信任問題,目前螞蟻金服、京東已經有大量的區塊鏈應用落地。淺談計算機系統 計算機系統概述

計算機是一種用於高速計算的電子機器,可以進行數值運算、邏輯判斷,還有儲存記憶功能,能夠接收和儲存資訊,並按照儲存在其內部的程式對海量資料進行自動、高速的處理,然後把處理的結果輸出的現代化智慧電子裝置。日常生活中常見的桌上型電腦、筆記本、手機等等都屬於計算機。

計算機系統由硬體(Hardware)系統和軟體(Software)系統兩大部分組成。軟體是執行在硬體之上,而硬體的好壞會直接影響軟體執行的效能。計算機通過軟硬體的共同協作就可以完成日常常見的任務,例如聽歌、看電影、購物、聊天等等。

計算機硬體系統

計算機硬體系統主要由主機和外部裝置組成。主機主要是包含中央處理器和記憶體儲器。中央處理器主要由運算器和控制器組成,實現資料的數值計算、邏輯判斷和其他裝置控制。而記憶體儲器分為RAM和ROM,其中RAM(Random Access Memory)表示隨機儲存記憶體,程式執行時指令和資料都會被載入到記憶體中,這種儲存器在斷電時將會丟失其儲存的內容。而ROM(Read-Only Memory)表示只讀記憶體,是一種只能讀出事先儲存資料的固態半導體儲存器。

外部裝置主要包含外部儲存器、輸入裝置、輸出裝置組成。常見的外儲存器包含行動硬碟U盤等等,外部儲存器通常用於大容量儲存資料,IO效能比記憶體要低的多,但是隻要硬體裝置不壞的情況下能夠永久儲存資料。而常見的輸入裝置包含滑鼠鍵盤等等,常見的輸出裝置包含音效卡、顯示卡等等。網絡卡也是屬於輸入輸出裝置的一種,主要用於網路上的資料接收和傳送。

在後期程式排查錯誤時除了要考慮程式本身的錯誤以外,還要考慮計算機硬體故障,例如記憶體不足,磁碟寫滿,網路不通等問題

每個計算機元件的IO效能也各不相同,CPU、記憶體、磁碟都遵循容量越大、IO效能越差的特點。

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

計算機軟體系統

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

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

系統軟體驅動程式、作業系統、語言處理程式等都是屬於系統軟體。驅動程式是硬體廠商使用程式語言(C/C++)編寫的程式,在使用硬體(例如印表機、顯示卡,音效卡等等)前必須安裝對應的驅動程式。作業系統是負責通過驅動程式管理硬體資源,同時給應用軟體提供執行平臺,目前主流的作業系統有Windows,Linux,macOS,Android,iOS,鴻蒙。語言處理程式是用於將程式語言編寫的源程式編譯或者解釋成對應平臺的機器語言的程式。應用軟體微信、支付寶、淘寶、WPS等等都是屬於應用軟體,它們都是執行在作業系統之上的。執行在不同作業系統之上的軟體互動方式也不一樣,Linux上的軟體通常是使用字元介面的互動方式,執行在Windows,macOS上的軟體通常是以滑鼠、鍵盤操作的互動方式,執行在Android,iOS上的軟體通常是以手勢觸控、語音等互動方式。程式和指令

程式是為了完成某項任務(例如聊天、聽音樂)而使用某種程式語言(例如C/C++)編寫的一組指令序列。而指令是計算機程式控制的最小單位,由操作碼和運算元組成,操作碼是計算機要執行什麼操作,例如加減乘除操作,而運算元具體執行的物件,具體的資料以及資料的位置。所有指令的集合稱為指令系統,常見的PC機指令系統有Intel X86指令集,常見的手機指令系統有ARM,因此手機上的程式不加修改是不能直接在PC機上執行,因為不同的指令集是不相容的。

那麼計算機是如何處理程式的?根據馮諾依曼計算機結構的原理,計算機的工作流程大致如下當用戶從計算機中開啟程式時(通常都是使用滑鼠雙擊擊桌面的快捷方式圖示),程式開始執行。作業系統將程式的指令和相關的資料傳送到記憶體中。CPU根據程式內容從記憶體中讀取指令和資料。CPU分析、處理指令,併為下一條指令做準備,如果有涉及到呼叫硬體資源(例如呼叫音效卡播放音樂)的指令,作業系統會通過呼叫對應的硬體驅動程式來實現呼叫硬體的功能。CPU取下一條指令並分析、處理,如此重複操作,直到執行完程式中的全部指令,最後將計算的結果放到指令指定的儲存器地址中。

淺談計算機程式語言計算機程式語言發展史

計算機已經成為人類大腦的延伸,成為不可或缺的一部分。而演算法是計算機的靈魂,程式語言是塑造計算機靈魂的工具。讓計算機具備"靈魂",可以按照人的意志執行,也就是說如果人想要計算機做某些事情,可以使用程式語言編寫一段程式,當這段程式被執行的時候,計算機就是按照人的意志自動的做那件事情,甚至某天按照計算機自己的意志執行,其核心就是演算法。

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

機器語言計算機發展的最早期,程式設計師編寫程式採用二進位制的指令(010010101)來實現的,而每種CPU都有各自不同的指令系統(SPARC/Intel X86/ARM),因此在不同的機器上使用不同的機器語言實現。其特點是效能特別高效,而面向機器程式設計也就意味著不能移植,需要手動處理底層硬體的差異性,而且二進位制的指令難以理解和維護。組合語言隨著時代和計算機技術的發展,組合語言和編譯器的出現解決了機器語言需要記住非常多的二進位制機器指令的難題,但是還是沒有從根本上解決移植性的問題,只是將機器指令轉換為易懂的英文單詞,然後由編譯器編譯成機器指令,因為計算機終歸揭底只能識別二進位制的0001110100110機器指令,而且組合語言是面向機器的,不同機器(SPARC/Intel X86/ARM)的彙編指令是不相同的。儘管如此組合語言目前仍然在工業電子程式設計、軟體的加密解密和計算機病毒分析等場景廣泛使用。高階程式設計語言高階程式設計語言的高階之處體現在開發人員在編寫程式時無需關心計算機底層硬體差異而只需要專注於業務模組實現即可。而且相對於機器語言、組合語言而言,高階語言學習起來更加容易,因此會有更加充足的人力資源,更容易開發大型商業軟體,例如Windows、macOS、Linux等作業系統都是使用C/C++實現。國內的阿里巴巴在電商、物流、金融、支付領域大量使用Java實現。計算機語言應用場景

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

2019年/11月 tiobe程式語言排行榜

根據Tiobe排行榜得知,Java/C/Python分別排在前三名, 隨後緊跟著C++,C#,JavaScript,PHP,Swift,Ruby,Go等等,每種程式語言都有自己擅長的應用場景。

程式語言及其應用場景

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

程式的編譯和解釋

由於高階程式語言和計算機底層語言是互不相通的,計算機最底層只能識別01010這種二進位制的機器指令,因此需要使用工具進行語言之間的轉換。這個就是程式編譯或者解釋的由來。

為了理解程式編譯和程式解釋,這裡引入兩種語言,分別是高階計算機語言L1,以及低階計算機語言L0。

程式編譯開發人員使用高階程式語言L1編寫的應用程式通過編譯器生成成計算機底層能夠識別的低階語言L0,L0就是計算機實際執行的語言,而編譯器生成的計算機底層識別的二進位制機器指令過程就是程式編譯。常見的編譯型語言有C/C++/Objective-C/Go程式解釋首先使用L0語言實現另外一個程式,也就是直譯器,然後將開發人員使用高階語言L1編寫的應用程式作為輸入,每一句L1編寫的程式都會在L0中作為等價的轉換然後執行,解釋的過程就是由L0編寫的直譯器去解釋L1程式。常見的解釋型語言有PHP,Python,JavaScript。

而Java和C#屬於編譯+解釋型語言,以Java為例子,Java程式在執行之前首先被編譯成Java位元組碼,然後在JVM虛擬機器上解釋執行。

Python概述 Python發展歷史

吉多·範·羅蘇姆

Python是荷蘭的Guido von Rossum(吉多·範·羅蘇姆,中國Python程式設計師都叫他 龜叔)在1991年使用C實現的一門高階程式語言,並且能夠呼叫C語言的庫檔案,介於C和Shell之間功能強大,易學易用,可擴充套件的語言。Python目前(2019/12/1)有兩個版本,分別是Python2.x和Python3.x,Python3.x是不相容Python2.x。

目前企業開發新專案時應該儘量採用Python3.x,因為Python2.x只維護到2020年,而且一些基於Python的框架都逐漸轉移到了Python3.x。目前最新版本的Python3.x是Python3.8,後續所有的Python應用都是基於該版本編寫,而最新版本的Python2.x是Python2.7.16,也是2.x系列最後一個版本。

Python的特點

Python有著簡單易學、開源免費、良好的移植性(支援macOS,Linux,Windows)、擴充套件性強(呼叫C/C++程式碼)、豐富的庫函式,程式碼風格優雅(強制縮排)、解釋型(逐行執行)、開發效率高等優點。但是也存在著和其他解釋型語言一樣的缺點:執行效率慢,但是目前計算機硬體效能的提升彌補了這個缺點。

Python的應用場景

Python目前廣泛用於基於B/S架構的Web應用開發(電商、金融)、自動化運維、自動化測試、網路爬蟲、資料分析、人工智慧、大資料開發等應用場景。

國外Google,Facebook,Dropbox等公司,國內的知乎、春雨醫生、百度、騰訊、阿里巴巴都大量使用了Python。

Python開發環境搭建 Python直譯器概述

在開發Python程式之前,首先要從官網下載Python直譯器,它的作用就是解釋並執行開發人員針對Python直譯器編寫的Python程式。也就意味著如果沒有Python直譯器,Python程式是無法獨立在作業系統上執行。因為計算機無法直接識別開發人員編寫的程式,需要藉助Python直譯器來將源程式翻譯成計算機識別的二進位制指令並逐行解釋執行程式,Python直譯器同時提供了強大的庫函式給開發者呼叫,提高開發效率。Python的直譯器現在有多個語言實現,我們常用的是CPython(官方版本的C語言實現),其他還有Jython(可以執行在Java平臺)、IronPython(可以執行在.NET和Mono平臺)、PyPy(Python實現的,支援JIT即時編譯)

Python直譯器下載

首先去官網下載Python直譯器,由於Python是跨平臺的,官網提供了Windows,Linux,macOS等平臺的直譯器,我這裡選擇Mac OS X

目前最新的Python版本是Python2.7.17和Python3.8.0

這裡選擇基於macOS的Python3.8.0下載

當點選下載連結後瀏覽器會自動下載Python直譯器的安裝檔案python-3.8.0-macosx10.9.pkg,如果官網下載比較慢,可以將下載地址複製到迅雷中下載,其下載速度會比官網快。

Python直譯器的安裝

首先雙擊下載的python-3.8.0-macosx10.9.pkg檔案

此時會開啟安裝Python直譯器的介紹視窗

然後是請先閱讀說明

然後是選擇安裝位置這裡選擇預設路徑即可,此時會提示輸入密碼或者使用TouchID確認

然後是正在執行安裝

最後是顯示安裝摘要安裝完成後系統會提示是否保留安裝檔案還是將安裝檔案丟棄到廢紙簍,這裡根據自己喜好選擇即可。

還可以在終端中輸入命令python3 --version檢視當前的python3版本

liuguangleideMacBook-Pro:~ liuguanglei$ python3 --versionPython 3.8.0

然後還可以輸入python3啟動python的直譯器,使用python3內建的print函式輸出指定的內容

如果想要退出python3直譯器,只需要輸入exit()方法回車即可。

使用Visual Studio Code開發Python程式

Visual Studio Code是微軟推出的一款開源、跨平臺(Windows,Ubuntu,macOS)的編輯器,這裡使用它來編寫Python言的原始碼,當然除了編寫Python程式碼之外,還可以用來編寫C/C++,Go,Java,JavaScript,PHP程式等等。初學者不建議使用類似於Pycharm那樣的整合工具,因為其背後隱藏了許多你需要了解的細節。

在使用Visual Studio Code之前你需要去官網下載最新的可用版本,關於它的詳細使用官網也提供了豐富的文件說明。

當下載完成後會得到一個VSCode-darwin-stable.zip包,我們只需要將其解壓

然後將解壓後的程式Visual Studio Code拖放到macOS的應用程式資料夾即可使用

拖放完成之後便可以在LaunchPad中啟動它

此時會提示尚未開啟資料夾,我們需要在/Users/liuguanglei/Documents目錄下建立一個資料夾來存放原始檔,這裡我建立一個名為vs_code的資料夾,因為後期會涉及到java,go,php,javascript等等語言,因此還需要在vs_code目錄下建立一個名為python的資料夾。

然後再點選Visual Studio Code的開啟資料夾,選擇/Users/liuguanglei/Documents/vs_code/python作為存放python原始檔的目錄

接下來新建原始檔helloworld.py

新建檔案

helloworld.py

原始檔helloworld.py中也只包含列印輸出語句

print("macOS10.15.1 & Visual Studio Code HelloWorld With Python")

如果想要在Visual Studio Code中執行python程式,此時需要在外掛市場中搜索並安裝Python外掛

  • 整治雙十一購物亂象,國家再次出手!該跟這些套路說再見了
  • 信任危機之下:誰來監管水滴籌這樣的網際網路籌款平臺?