寫給所有程式設計師的對象的一封信

  • 2022 年 8 月 26 日
  • 筆記

 因為本人有一枚可愛的老婆,她經常有很多奇怪的問題(我承認其實是我老想跟她分享),但是有些問題需要有一定的理論支撐,所以我就打算在這裡一併告訴她。就是一些關於編程的前置知識的匯總,如果你也有這種對編程或者程式很感興趣但是又離這個環境很遠的朋友,可以分享給他。因為是想面對小白建立編程模型的文章,所以我必須盡量通俗易懂,如果大家看完還有什麼想知道的也可以說出來。

主要圍繞下面這些講下

  • 程式是什麼
  • 為啥要寫程式
  • 程式的原理

程式是什麼

程式本質上就是提前寫好的固定邏輯,比如你喊『嘿siri』,手機就回你一句,這就是一段程式發揮的作用。

下面就是一個啟動後就會在螢幕顯示hello,world的入門程式,你仔細看下可能都能看懂,很多程式設計師寫的第一段程式碼可能就是這個。

編輯

 

所以所有的程式都是一樣的,小到空調里的程式收到了你按空調的開關就啟動,大到火箭到了預定的高度就加速。程式就是一段固定的邏輯,這段邏輯一般是,你預設一個前提條件並預設滿足條件後就去做的事情。

如果按照這個角度去看,在沒有電腦程式之前就已經有很多程式了。水如果在高處就會往低處流,蘋果在樹上成熟了就會往下掉。。。這些可以理解為自然存在的程式,我們可以直接利用但是沒辦法改變。這也是人造電腦程式(下面默認討論的都是這個)出現的意義,可以滿足我們想要的需求,比如在遊戲類程式里你就可以寫好有人按了攻擊鍵血條就會減少。

為啥要寫程式

為啥要寫這個程式,這個問題在程式設計師的角度就是,公司發現了一個需求,再通過一些人(一般是產品經理)的轉換翻譯成了程式設計師能聽懂的工作,然後程式設計師就被通知說這個要做了。所以程式就是為了解決人的需求產生的,大家都想更方便的購物,所以一定會出現了淘寶,拼多多這樣的程式。

當然也有人說程式解決的是重複性的工作,這個就屬於從結果得到的好處的角度思考為啥要寫程式了。那我們就來聊一下程式的好處。現在假設一下沒有電腦程式,大家還是需要更方便的購物,那會發生什麼呢?就是會有一家公司提供這樣的服務,你可以打電話給他說你要買意見衣服,說下要求,他再緊急的打電話問提供衣服的這些賣家,有符合要求的衣服嗎,多少錢。再轉述給你,以上只是電商網站的搜索商品功能而已,單純改成讓人去做這些事情會非常麻煩,就像三體中秦始皇的人體電腦。機器取代的重複工作是沒有數量限制的,就像如果人力去滿足客戶的購物需求,那每增加客戶就需要多加一個人服務他,換成程式就剛好相反,一個淘寶開發完了,那一個人用和1億個人用基本成本不變(增加的很少)。簡而言之,程式可以替換所有能重複的工作而且不會因為重複次數的增加而增加成本。所以思考一下,有些重複的工作還沒有換成程式可能只是因為他的次數不夠多或者重複次數更多的還沒被程式替換完。現在程式正在替換的工作都是有著很大的次數的這樣的重複工作,但是不要以為程式只能替換簡單的工作,其實理論上只要人類能夠描述出來讓別人理解的工作程式都可以完成,舉個例子人知道怎麼開飛機,他就可以描述給程式設計師,程式設計師就可以按照描述的內容開發程式出來自動開飛機了,那有人會問為什麼現在沒有這樣的程式呢?大概就是首先這樣的程式開發起來非常複雜(比如自動駕駛全行業搞了幾十年還沒搞出來),其次就算開發完了也就只是替換了全世界所有機長的工作而已,有點得不償失。但是等程式把所有重複次數高的工作都替換完了(這要很久很久),程式設計師接下來又該幹什麼呢?

程式的原理

程式的原理主要分為兩部分,第一如何讓程式的載體(下面就用電腦代替,一般人只要理解為電腦就可以了)理解我們的意思,第二是如何讓電腦進行邏輯處理

如何讓電腦理解我們的意思

看上面我的截圖就知道程式都是用英語寫的,可能有人會問為啥程式基本都是用英語寫的,這是因為第一批寫程式的人用的是英語,後面我們為了學習和溝通就也這樣做,再後面用英語做的事情有點多,如果要把在寫程式中用英語做的事情用中文再做一遍那就太麻煩了,而且做出來也很難在人類中達到共識,就是大家再一起換成用中文寫程式碼。所有其實非英語母語的人在寫程式上確實難度更高一點。

言歸正傳,電腦要如何才能理解英語寫的程式呢?這一塊叫編碼,簡單講就是把所有需要用到的字母用數字進行對應,下面是一個最基礎的編碼表,可以看到大寫A在電腦中對應的就是65,小寫a就是97,當然大家可能還知道電腦中是只有0和1的(為啥呢?馬上要講),所以還要轉換成2進位的數字,所以在所有的電腦中大寫A對應的表示方法都是1000001。

編輯

如何讓電腦進行邏輯處理

這裡我只講最基礎的一些東西,也希望所有人都能理解。

上面說到了為什麼電腦中只有0和1,其實是因為電腦晶片所採用的材料剛好只有兩種狀態,就跟0和1對應上了。那如何計算呢?舉個簡單的例子,如果你想計算0和1相乘的情況,用到的就是與門,簡單說假如有一個電路是由兩個開關和一個燈泡組成,這三個組件簡單的串聯在一起,就組成了一個情況,只有兩個開關都閉合燈泡才能亮起。現在假設開關閉合和燈泡亮起代表1,反之就是0,現在就能計算0*0 = 0,0*1 = 0,1*0 = 0,1*1 = 1這四種0和1的乘法計算了,這就是電腦晶片中最基礎的一組與門,當然除了與門還有其他兩種或門和非門,有了這三種門在進行相互組合就能進行所有的計算了,當然實際情況複雜的多,現在主流的晶片的門結構的個數都在百萬級到千萬級。這就是電腦進行邏輯處理的原理了,關於電腦邏輯處理原理詳細點的可以參考【小白科普】為什麼電腦只認識0和1?_積體電路