1. 編程 到底是什麼詳細解釋
我認為樓上的食譜的比喻不是很恰當。
因為食譜是一種工作流,描述的是先干什麼後干什麼以畝芹襲及所用的迅兄資源和時間,而程序除了可以被看成一種工作流之外,還可以被看成一種生成工作流的邏輯描述,也就是說,除了要安排好食譜中的步驟,還要知道食材和步驟的邏輯關系,比如是先炒後燉還是先燉後炒,是先放油鹽醬醋還是後放油鹽醬醋,什麼東西和什麼東西不能放一起等等。這些是通過編程和程序中的邏輯判斷來實現的,這種邏輯判斷在食譜中是沒有首源的(例如,食譜中是不會出現"如果炒糊了就放點糖"這樣的描述的)。因此,食譜只是單純的流程描述,編程和程序是比食譜更高級和復雜的概念。
其實,編程用大白話來說,就是如何控制計算機利用各種硬體資源來處理數據和信息。因此,編程分為幾個層級。最底層是直接與硬體打交道的,用來控制硬體的執行,一般是匯編編程;最上面的是軟體編程,直接處理數據和信息,編寫的程序直接面向程序的使用者;在他們之間的是操作系統級編程,用來建立連接底層和上層的橋梁。每一層就不展開說了,否則都夠寫幾本書了。
大多數程序員都屬於軟體編程這個層級的,其他的程序員一般都必須非常了解他們使用的硬體,因為他們的程序就是要操作這些硬體的。
說完了編程的分類,再來說說編程到底干什麼。我也來比喻一下,我把編程比喻成教育,計算機就是小孩,綜合起來就是教計算機做什麼以及怎麼做,也就是教育小孩做事情,而編程寫出來的程序,就是一種行為規范。
比如,我要教小孩過馬路,那麼我告訴他一個過馬路的行為規范:"先向左看,如果沒車過來就走到路中央,如果有車就等車過去;到了路中央向右看,如果沒車就過去,如果有車就等一等。"
我把這個過馬路的"行為規范"(程序)告訴我的"小孩"(計算機),他就能嚴格照著去執行。
這個比喻不恰當的地方,就是我的"小孩"的學習能力實在有限,他只會照著我寫好的"行為規范"去做,我沒寫的他就不知道怎麼做了。但是,將來的"小孩"肯定會增強自己的學習能力,通過"行為規范"來產生新的"行為規范",並且新的"教育方法"(編程方法)也在不斷的被研究著。