IT人如何修煉編程的內功[2]
ok了,這我們是不是可以理解到,計算機編程,其實(shí)首先是人的工作,當我們遇到一個(gè)服務(wù)需求,我們人來(lái)做一次,嗯,獲得一個(gè)比較滿(mǎn)意的結果,然后我們覺(jué)得這個(gè)動(dòng)作可以重復,下次遇到類(lèi)似的問(wèn)題,照做就好了。于是,我們就安排計算機來(lái)做這件事了。是不是這樣?
這是不是說(shuō)明,程序,其實(shí)是在講一件事應該怎么做,這個(gè)做的過(guò)程,以及這個(gè)過(guò)程的含義,其實(shí)是人定義出來(lái)的,然后通過(guò)編程,教給計算機來(lái)做而已。
我以前經(jīng)常有種感覺(jué),計算機編程,是兩層意思,一層,是程序本身的含義,就是怎么做事,另一層,是隱含在程序下面的邏輯含義,就是做事的意義,程序只是字面上的意思,而邏輯,是程序段落組合起來(lái),共同表述的一層意思,F在想想,其實(shí)就是這個(gè)道理。
嗯,既然我們知道,編程,就是把做一件事情的步驟,分拆開(kāi)來(lái),教計算機去做,但,分拆到什么粒度呢?這個(gè)很重要。如果分拆的粒度太細,白白浪費程序員的時(shí)間和精力,這些都是成本。而分拆得太粗,計算機還是弄不明白,做事不對,就是bug了。
這說(shuō)明,編程有個(gè)很重要的概念,就是粒度,也就是我們對問(wèn)題描述的精細程度。
最開(kāi)始的計算機是最笨的,學(xué)過(guò)計算機組成原理的同學(xué)大概知道,只要有個(gè)累加器,其實(shí)已經(jīng)可以算一臺計算機了,只會(huì )做加法計算。因為從數學(xué)上,我們可以知道,任何計算,最終都可以演化成加法計算,事實(shí)上,現在的CPU,在最底層核心的部分,也還是這個(gè)加法邏輯。
這樣做當然沒(méi)什么不好,不過(guò),有個(gè)小小的問(wèn)題,就是粒度太細了。如果每件事情,都要程序員去拆解成很細的加法計算,這個(gè)工作就幾乎不是人干的事情了。難道就無(wú)解了嗎?
呵呵,前面我們說(shuō)過(guò),計算機的特點(diǎn)是什么?無(wú)限重復,大家就發(fā)現,一個(gè)事情,比如7*24,這是乘法計算,但是,我們最終要拆解為加法計算去實(shí)現,但是,不是說(shuō)我們每次都要這么拆解,乘法計算也是一個(gè)工作,有規律的,因此,當我們拆解一次之后,我們當然可以把這次拆解過(guò)程本身,編訂為程序,下次遇到類(lèi)似問(wèn)題,讓計算機把這個(gè)程序再跑一遍就ok了。呵呵,大家以為Intel的CPU里面的乘法計算指令是怎么實(shí)現的?大家又以為AMD的CPU內部的微代碼體系是怎么實(shí)現的?
就是這么一個(gè)思維,解決了所有的問(wèn)題,遇到需求,首先拆分,然后不斷檢索我們以前是不是以前拆分過(guò)了,遇到能套用的程序段落,就直接用,不用每次都拆分那么細,減少工作量,當然,遇到新問(wèn)題,還是需要自己拆解的',不過(guò),拆解后,最好把拆解本身,也寫(xiě)成程序,下次重用。
大家玩各種語(yǔ)言,一般都提供基本庫,這個(gè)基本庫,其實(shí)就是前人已經(jīng)拆解過(guò)的結果,軟件公司覺(jué)得有代表性,可以滿(mǎn)足大多數應用場(chǎng)合,就編訂到基本庫里面,以后程序員直接用,不用自己重復了,大家說(shuō)是不是這樣?
現在,大家知道怎么看待C的stdio.h,stdlib.h這些基本庫了吧?C++的iostream是什么含義,知道了不?MFC知道了不?Java的運行時(shí)庫是什么意思,也知道了吧?
不過(guò)呢,這個(gè)世界的需求總是很多的,并且,計算機的能力也是不斷在進(jìn)步,以前不適合計算機做的事情,現在也慢慢變得適合了。因此,大家總能遇到一些新問(wèn)題,需要自己重新拆解,基本庫中沒(méi)有提供,這就是程序員這個(gè)職業(yè)存在的真實(shí)含義。幫助用戶(hù)不斷拆解新需求,解決新問(wèn)題。當然,庫本身也在進(jìn)步,不斷把已經(jīng)被證明拆解成功的問(wèn)題,修補到庫中,避免以后的程序員做重復工作。就這么簡(jiǎn)單。
【IT人如何修煉編程的內功[2]】相關(guān)文章:
太極拳內功修煉方法09-19
accp如何學(xué)習編程11-02
如何修煉領(lǐng)導力08-08
如何修煉你的領(lǐng)導力09-18
楊式太極拳內功如何練習10-04
如何修煉成超級廣告模特08-07
形體舞蹈如何修煉自身氣質(zhì)09-04