一、計算機基礎概念
1、什么是計算機
很多老一輩的人,管下面這個叫做計算機。然而,它只是?“計算器”,和計算機是有很大區別的。
現在我們所說的計算機,不光能進行算術運算,還能進行邏輯判斷、數據存儲、網絡通信等等功能,以至于可以自動的完成非常復雜的工作。以下這些都可以稱為?“計算機”:
- CPU - 中央處理器,處理算術運算、邏輯運算等
- 存儲器(內存,硬盤等存儲數據)
- 輸入設備(鍵盤,鼠標,麥克風等負責和用戶進行交互)
- 輸出設備(顯示器,音響,耳機,打印機等負責和用戶進行交互)
CPU 是目前人類科技的巔峰之作,科技含量能和 CPU 相提并論的,只有氫彈了。美國限制向中國出口 “芯片”,這里的芯片主要指的就是 CPU。目前國內雖然有自主研發 CPU 的能力,但是整體的水平相比于國際一線的 Intel,AMD 等廠商相比,還是有一定的差距的。
重要的硬件不是還有顯卡嗎?但是太貴了。
內存與外存(硬盤等)的區別:
- 內存的存儲空間較小,外存的存儲空間較大。
- 內存的訪問速度快,外存的訪問速度慢。
- 內存比外存成本更高。
- 內存上的數據容易丟失(斷電,數據就沒了),外存上的數據能夠持久化存儲(相對于內存來說可以存的更長久,一般機械硬盤存儲數據的時間是幾年到十幾年)(斷電數據也在)。
有的設備既是輸入設備,又是輸出設備,比如觸摸屏、網卡等。
- 顯卡并沒有被歸納到上面,其實顯卡(GPU)是和 CPU 類似的計算芯片,CPU 是 “通用計算芯片”,可以處理各種場景下的各種問題(類比大學畢業生)。而?GPU 是 “專用計算芯片”,特別擅長處理浮點數運算(類比計算機專業學生)。
以上的組成結構稱為 “馮諾依曼體系結構”,馮諾依曼可以稱為計算機的祖師爺。
馮諾依曼除了是計算機祖師爺之外,還是一位數學家、物理學家、化學家、“博弈論”?的創始人,參與過曼哈頓計劃(擔任原子彈制造顧問)。據傳聞,馮諾依曼大佬六歲心算八位數除法,八歲掌握微積分,十歲通讀了世界史,十七歲發表了第一篇數學方面的論文。
計算機的祖師爺除了馮諾依曼之外,還有一位圖靈大佬,也在二戰中發揮了至關重要的作用。
2、什么是編程
計算機需要硬件賦予之軀體,也需要軟件賦予之靈魂。
“軟件”(或者叫做程序),指揮了計算機要按照什么樣的規則來執行任務。
軟件不是憑空出現的,是要被 “開發” / “設計” 出來的。制作軟件就是在明確這個軟件要完成什么樣的任務,這個過程就稱為?“編程”,或者也可以叫做 “軟件開發”。
例如,媽媽讓我去買兩個面包,如果遇到賣西瓜的就買一個(這句話很明顯存在歧義,計算機會直接 “擺爛”)。那么這個交代任務的過程就是 “編程”,只不過執行這個程序的是我,不是計算機。再進一步展開來說,就是由人來告訴計算機,接下來要做什么任務。
換個角度看,人腦也能算術運算,能邏輯判斷,能數據存儲,能輸入輸出.....,也可以視為是一個廣義的計算機。
編程本身并不是一件很容易的事情,它是一件比較嚴謹、復雜的事情,因此就衍生出了一個專門負責編程的職業,也就是程序員。程序員進行編程的過程中,需要使用一個專門的方式和計算機溝通,就是?“編程語言”。使用編程語言編寫軟件的具體過程就稱為?“軟件開發”,俗稱?“敲代碼”。
3、編程語言
- 機器語言
- 匯編語言
- 高級語言
其中機器語言和匯編語言都是更貼近計算機的,人類理解起來并不容易。因此目前程序員使用的編程語言主要是高級語言。
高級語言的種類有很多很多,以下列出的都是實際開發中常用的編程語言:
二、Python 背景知識
1、Python 是如何來的
吉多·范羅蘇姆(Guido van Rossum)是一個荷蘭程序員(人稱龜叔,因為他名字前三個字母是 Gui)。
龜叔在 1989 年圣誕節的時候(當時 33 歲),因為在家里待著無聊,為了打發時間,開始了 Python 的開發。第一個正式版本發布于 1991 年,1991 年是一個神奇的年份。Python、萬維網、Linux、Vim、Qt、第一臺筆記本電腦,都誕生于 1991 年。
2、Python 能干什么
經歷了多年的發展,Python 目前是一個應用場景非常廣泛的編程語言。
- 科學計算&數據分析
- Web 開發(搭建網站)
- 自動化運維
- 人工智能
- 爬蟲程序
- 自動化測試
三、Python 的優缺點
1、優點
- 語法言簡意賅,容易上手。
- 功能強大,用途廣泛。
- 生態豐富,具有海量的成熟第三方庫。
- 方便調用 C/C++ 編寫的代碼進行高性能/系統級操作。
2、缺點
- 執行效率比較弱。
- 對于多核心并發程序支持偏弱。
- 動態類型系統對于大型項目不太友好。
四、Python 的前景
雖然 Python 的應用場景很多,但是純粹使用 Python 的崗位是比較少見的。
以知名互聯網招聘網站拉鉤網為例,設置工作地點為北京,工作年限為?3?年以下。
- 搜索 Python 關鍵字得到的崗位個數為?500+?個。
- 搜索 C 關鍵字得到的崗位個數為?83?個。
- 搜索 C++?關鍵字得到的崗位個數為?77?個。
- 搜索 Java 關鍵字得到的崗位個數為 158?個。
上述數據只是簡單采樣,并不能精確反應崗位的整體情況。
更常見到的情況是,把 Python 作為一個輔助性質的語言。
在工作中,Python 更像是一個工具,需要用到的時候隨手拿起來就用,能夠方便的解決不少問題。Python 和其他的編程語言本質上并沒有啥區別,并不存在某個場景是 “非得 Python 才能做,而其他語言做不了”?這樣的情況。編程語言只是工具,作為一名程序員,要做到十八般兵器都能樣樣精通。