Talk is cheap. Show me the code. —Linus
提起程序員,人們可能想到的是電影里邋里邋遢,對著電腦狂敲鍵盤,最后改變世界的牛逼人物。提起編程,人們腦子里閃過的可能是滿屏幕跳動的字符,根本看不懂是什么的高大上的東西。
編程,從字面理解就是編寫程序,那我們就先看看什么是程序。當然了,在此我們只討論計算機程序。
不知道大家有沒有想過,當你敲擊鍵盤上的某個鍵的時候,它到底做了什么,為什么電腦屏幕上會有相應(yīng)的反應(yīng)。在這里,我想做一個有意思的解釋。
本來是想從動物以及人類發(fā)展歷程來解釋這個問題,但一想這樣一來又要涉及到信號學(xué)、心理學(xué)等等問題,還是算了,就從一個最簡單的例子開始:電燈。當你打開開關(guān)的時候,電燈會亮,關(guān)掉開關(guān),電燈會滅。這個時候一個電燈可以記錄兩種狀態(tài),我們可以賦予其含義,比如高低、好壞、有無等等。那么如果我想用電燈表示更多的狀態(tài)呢?可以用更多的電燈,兩個可以表示四種狀態(tài),三個可以表示八種狀態(tài),四個十六種,依此類推。學(xué)過數(shù)學(xué)的應(yīng)該知道,n個電燈,就可以表示2的n次方種狀態(tài)。
生活中常用的計數(shù)方式是10進制,從0到9有10個狀態(tài),而四個電燈可以有16種狀態(tài),所以可以用四個電燈來表示這10個數(shù)字,我們把4個電燈排成一排,編號,從右到左分別是1號、2號、3號和4號(為什么從右到左呢?暫且認為是習慣好了。)從1到4為?? ?? ?? ??表示1,?? ?? ?? ??表示2,?? ?? ????表示3,以此類推??墒沁@樣就太麻煩了,要記住很多組狀態(tài)才能識別出是數(shù)字幾。大家過馬路的時候肯定見過紅綠燈的倒數(shù)燈,大概長這個樣子

接下來,我們可以想的大一點,比如將一萬個電燈,擺成一個100*100方陣,然后就可以通過控制開關(guān)來顯示圖案、文字了,哈哈,這不就是屏幕么!不過問題是如果有一萬個電燈,就得需要一萬個開關(guān),按照上邊的想法,需要有2*10000種控制器來控制這么多種可能,不過好在我們需要的并沒有這么多,比如顯示26個英文字母,那我們只需要26個控制器就可以了。不過這樣還是很麻煩,其實我們可以制作一個存儲器,這個存儲器可以存儲26種狀態(tài),然后用一個控制器從這個存儲器中讀取這26種狀態(tài),再將其反應(yīng)到一萬個燈泡上,于是,一個簡單的計算機就問世了(同樣,這個存儲器什么原理,有興趣的可以看看《大話存儲》,還有控制器如何制作以及原理本人就不做解釋了,因為并不熟悉。)
基于以上的想法,再加入更加復(fù)雜的控制器,存儲器,顯示器,就可以制作一個完整的計算機了。O(∩_∩)O哈哈~,當然了,以上純粹只是個人對于計算機的理解,其實計算機的每一個部分都是復(fù)雜的技術(shù),沒有系統(tǒng)學(xué)習,是很難深入的。
好了,現(xiàn)在回到正題,說說開篇提到的編程。
上邊提到了存儲器,我們可以把一系列的狀態(tài)存入存儲器,需要的時候讀取出來反映到屏幕或者其它電子器件上,可是怎么讀取?如何反應(yīng)?這就需要我們?nèi)祟悂碇朴喴惶滓?guī)則,可以這樣理解,這套規(guī)則就是程序,而制定規(guī)則的過程就是編程。比如要計算1+1等于幾,需要向存儲器存入兩個1,然后再讓兩個1相加,最后屏幕上出現(xiàn)結(jié)果2。這一整個過程需要一套規(guī)則來實現(xiàn),我們制定這個規(guī)則的過程,就是編程(上邊這個過程看似簡單,實際上水很深,實在不敢也沒有能力往深了講,不過以后會盡力出文章來講解)現(xiàn)在的高級編程語言已經(jīng)屏蔽了太多的底層實現(xiàn),以至于很多程序員只是機械的搬磚,完全不知道背后發(fā)生了什么,不過這樣也有很大的好處,就是猿們可以將精力放在功能、業(yè)務(wù)的實現(xiàn)上,為用戶打造更好的體驗。
這只是我個人的想法,下面是百度的解釋:
編程是編寫程序的中文簡稱,就是讓計算機為解決某個問題而使用某種程序設(shè)計語言編寫程序代碼,并最終得到相應(yīng)結(jié)果的過程。
為了使計算機能夠理解人的意圖,人類就必須將需解決的問題的思路、方法、和手段通過計算機能夠理解的形式告訴計算機,使得計算機能夠根據(jù)人的指令一步一步去工作,完成某種特定的任務(wù)。這種人和計算機之間交流的過程就是編程。
好了,暫時就到這里吧,如感興趣,請關(guān)注后續(xù)文章。
最后,附上文章開頭引用的出處: https://lkml.org/lkml/2000/8/25/132