今天柴信,越來越多的工作是借助電腦完成的了套啤。
在這種情況下,學(xué)習(xí)更多的計(jì)算機(jī)知識(shí),無疑是有益的潜沦。
比如萄涯,了解硬件和操作系統(tǒng)的知識(shí),可以在購(gòu)買數(shù)碼產(chǎn)品的時(shí)候做出更好的選擇唆鸡。而會(huì)寫一些基本的程序涝影,可以避免許多重復(fù)性的工作。
很多人把這些東西看得很深?yuàn)W争占,其實(shí)不是燃逻。你未必非得成為專家,才能解決很多問題臂痕。因?yàn)椴螅谟?jì)算機(jī)科學(xué)里,有一個(gè)重要的概念握童,叫做「抽象」 (abstraction)姆怪。
所謂抽象,實(shí)際上就是這樣的思考方式澡绩,當(dāng)我們考察一個(gè)物體(或者對(duì)象稽揭、系統(tǒng))A 時(shí),我們不關(guān)心 A 的內(nèi)部組成(或者原理)肥卡,只關(guān)心它的功能溪掀。
其實(shí)日常生活中,充滿了抽象的思維方式步鉴。使用手機(jī)的時(shí)候揪胃,你只在乎能用它開微信,而不在乎它里面是什么處理器唠叛,多大的內(nèi)存只嚣,或者多少像素的攝像頭。又比如開車的時(shí)候艺沼,司機(jī)不會(huì)關(guān)心輪子什么材質(zhì)或者發(fā)動(dòng)機(jī)多少功率册舞。
在計(jì)算機(jī)科學(xué)里,和「抽象」非常相關(guān)的一個(gè)詞障般,是「模塊化」调鲸。這兩種思想,簡(jiǎn)直無處不在挽荡。
無論是開發(fā)一個(gè)普通的軟件藐石,或者是操作系統(tǒng),又或者是網(wǎng)絡(luò)協(xié)議定拟,我們都不希望所研究的東西是一團(tuán)亂麻于微。因?yàn)檫@樣太復(fù)雜了。
通常,我們會(huì)將研究對(duì)象株依,拆分為多個(gè)相互獨(dú)立的模塊驱证,分別進(jìn)行研究。這樣一來恋腕,當(dāng)我研究某個(gè)模塊的時(shí)候抹锄,只要關(guān)心該模塊怎么組成;對(duì)于其他模塊荠藤,則只需知道提供了什么功能即可伙单,并不用知道它們是怎么實(shí)現(xiàn) (implement) 的。
舉一些例子:
- 開發(fā)軟件的時(shí)候哈肖,通常都是在一開始想好整體架構(gòu)吻育,然后將各個(gè)模塊分別實(shí)現(xiàn)。
- TCP-IP 網(wǎng)絡(luò)協(xié)議牡彻,分為五層扫沼。每一層都在上一層的基礎(chǔ)上,實(shí)現(xiàn)相對(duì)獨(dú)立的一部分功能庄吼。加起來就保證了可靠的網(wǎng)絡(luò)通信。
有了這些認(rèn)識(shí)严就,其實(shí)就不難想到总寻,寫程序并不是一件很困難的事情。很多該有的東西梢为,別人已經(jīng)給你造好了渐行。你以為你需要成為一個(gè)木匠,其實(shí)你要做的就是搭積木铸董。