作者:白色蝸牛
來源:蝸牛互聯網
當我們懷著一腔熱忱或者對高薪的渴望,投入到軟件開發這個崗位,成為程序員這個角色后,我們的核心職責就是使用計算機編寫程序,俗稱抱著電腦寫代碼。
只要有一臺電腦連上網,我們就能工作。但寫了那么多代碼,我們有想過編程的本質是什么嗎?
《教父》里說過:花半分鐘就看透事物本質的人,和花一輩子都看不清本質的人,自然是不一樣的人生。
所以我們嘗試思考下編程的本質,或許可以讓我們走的更遠。
對于編程這件事,編寫程序,就字面意思來講,事情的結果是程序。
程序是啥意思呢?
廣義上的程序是指,一系列的動作以相同的方式執行,在相同的環境下,總能得出相同的結果。
你比如開銀行卡賬戶,你需要準備好材料,像身份證,去銀行填表,核身,簽字,最后拿到一張屬于你的銀行卡。
換一個人也要走同樣的程序,同樣要備好材料,填表,核身,簽字,同樣要到銀行辦理,同樣最后拿到了銀行卡。
你會發現,定義里面有三個相同,也就是程序最大的特點就是重復。
只不過上邊例子里的重復,是在銀行這個地方發生的。每天做著相同程序的業務,只是不同的客戶,不同的柜員。
但開卡業務只能在銀行辦理,這就很受局限了。我得花費時間和體力,跑到銀行,還得挑銀行上班的時間。那有沒有辦法,我不去銀行也能把銀行卡開下來呢。
計算機和互聯網的出現,就解決了這個問題。
要交的材料,要走的程序,要拿的卡,都不變,只是整個操作環境,從線下的銀行,變成了線上的某個載體,可以是個 PC 端 Web 網站,也可以是個移動端 App。
線上就是指互聯網,它能夠讓信息的傳遞跨越空間,而操作的載體,無論是 Web 網站 還是 APP,背后都是計算機程序。
從前你要花一個小時坐公交去銀行,如今足不出戶點點手機就能辦理業務。
計算機上的這些程序從哪來的?
就是程序員編寫的。
所以程序員要做的事就是,把線下現實世界的事情,編到線上計算機里來做。
這有點像電影編劇的角色,都要取材于現實。
不同的是,電影編劇會充分虛構,保證藝術源于生活又高于生活,產出物是一兩個小時的影像。
而程序員要充分還原現實,保證程序符合正常邏輯不會錯亂,產出物是電子設備上的應用程序。
那編程的目的就很清晰了,用計算機來解決現實世界的問題。
無論是現實世界還是計算機,我們做一件事,都需要有三個核心要素:輸入(Input)、處理(Process)和輸出(Output),簡稱 IPO。
編程就是把現實世界的問題,映射到計算機的 IPO 中。
那怎么把現實世界的問題映射到計算機的 IPO 中呢?
我理解要通過模型。
什么是模型?模型是指用一個較為簡單的東西來代表另一個東西。
如果要簡單化一個東西,那就需要對這個東西進行分析,然后抽象。
抽象的維度,決定著最后軟件的形式。
如果對計算機本身進行抽象,那軟件就會以機器代碼或匯編語言的形式呈現。
如果對計算處理邏輯進行抽象,那軟件就會以非結構化的高級語言呈現,比如 Basic。
如果對問題領域過程進行抽象,那軟件就會以結構化的高級語言呈現,比如 C。
如果對問題領域元素進行抽象,那軟件就會以面向對象程序設計語言呈現,比如 JAVA。
也就是說,編程語言是現實世界到計算機世界抽象的機制。
所謂的編程,就是使用某種語言,在某個維度,把現實世界抽象成簡單的模型,然后設計和實現出可運行的計算機軟件,也就是完整的 IPO。
這就是我理解的編程本質。如果你也有想法,歡迎和我一起交流~
好啦,本期分享就到這里,如果各位喜歡我的分享,請務必三連,點贊,在看,收藏,關注我,這會對我有非常大的幫助。