根據(jù)我的經(jīng)驗耸序,對初學(xué)者來說,搭建編程的環(huán)境鲁猩,是非常困難的事情坎怪。
所以我們有必要講一點比編程環(huán)境更底層的東西,方便大家之后的工作廓握。
那就是計算機(jī)的基本組成了搅窿。
最基本的東西,就是硬件了隙券,主要包括 CPU男应、內(nèi)存和一系列輸入輸出設(shè)備。
但是只有硬件娱仔,事情是很難辦的沐飘。
我們知道,電子元件接受的都是電信號牲迫。所以硬件直接能理解的薪铜,就是代表高低電壓的 0-1 信號众弓。那就是機(jī)器語言了恩溅。
機(jī)器語言隔箍,當(dāng)然是非常反人類的。誰記得住一串 0-1 代表什么意思啊脚乡。
于是發(fā)展出了匯編語言 (assembly)蜒滩。這其實也沒啥神秘的,基本上就是把 0-1 串翻譯成了一些英文指令和符號奶稠。這樣人們就可以寫出一些互相能看懂的程序了俯艰。為了讓機(jī)器能運(yùn)行,那么又有了叫做 assembler 的程序锌订,用來把匯編語言翻譯成機(jī)器語言竹握。
有了匯編語言吧,大家確實可以操作硬件了辆飘,于是也能寫出一些程序了啦辐。
但這樣開發(fā)程序,存在很大問題蜈项。一方面是因為匯編語言實在太啰嗦芹关;另一方面,則是人們發(fā)現(xiàn)紧卒,每個程序侥衬,為了控制硬件,都得要求程序員懂硬件知識跑芳,而且操縱硬件的代碼轴总,還大同小異。
針對前一個問題博个,后來就有了以 C 為例的一系列高級語言怀樟。
針對后一個問題,人們開發(fā)了一些程序坡倔,專門用來操作硬件漂佩。而新的程序,再想使用硬件的時候罪塔,不必親自寫清楚硬件該怎么運(yùn)作投蝉,而是告訴「操作硬件的程序」要實現(xiàn)什么功能,由「操作硬件的程序」轉(zhuǎn)而實現(xiàn)征堪。
也就是說瘩缆,硬件被抽象出來了。現(xiàn)在佃蚜,程序員們不用關(guān)心具體的硬件了庸娱,而把對應(yīng)的任務(wù)丟給了「操作硬件的程序」着绊。那么這些「操作硬件的程序」,則被稱為操作系統(tǒng)熟尉。
當(dāng)然归露,隨著時代發(fā)展,操作系統(tǒng)也逐漸增加了更多的功能斤儿【绨基本上,凡是被很多軟件共用的功能往果,逐漸都會被添加到操作系統(tǒng)里去疆液。比如說二十年前,操作系統(tǒng)里是沒有網(wǎng)絡(luò)通信功能的陕贮,而隨著互聯(lián)網(wǎng)發(fā)展堕油,操作系統(tǒng)也相應(yīng)地實現(xiàn)了這一功能,解放了更多的程序開發(fā)者肮之。
在操作系統(tǒng)之上掉缺,就是各種各樣的應(yīng)用軟件。
因為操作系統(tǒng)的作用是為應(yīng)用軟件提供功能局骤,所以軟件開發(fā)者們需要了解對應(yīng)的操作系統(tǒng)開放出來的編程接口 (Application programming interface, API)攀圈,而普通用戶,實際上無需了解操作系統(tǒng)峦甩,甚至都不用知道操作系統(tǒng)這個概念赘来。
而蘋果 Mac OS,微軟的 Windows 以及開源的 Linux 這些不同的操作系統(tǒng)凯傲,最大的區(qū)別是在系統(tǒng)機(jī)制和開放的 API 上犬辰,而不是普通用戶所感知到的用戶界面的不同。
我們將采用的編程語言是 Python冰单。
Python 有很多好處幌缝,例如語法跟普通英語一樣易懂,入門門檻低等诫欠。
還有一大好處是涵卵,生態(tài)完備,現(xiàn)成的軟件包到處都是荒叼,并且還在不斷地被開發(fā)出來轿偎。同時管理起來也非常簡單,只要安裝 anaconda被廓,就可以幾乎一鍵安裝各種 python 包坏晦。
但在安裝之前,我們還要補(bǔ)充一些額外的知識。
1st edition: 2017-11-27