近期很多朋友都開始學習軟體編程了(常被教育機構宣傳為「編程學習」,「計算機編程」等),而且大部分報名學習的價格不菲。對於許多沒有接觸過電腦的讀者們來說可能感覺很陌生,那麼這個軟體編程到底是學習些什麼內容,是否可以自學呢?筆者作為以一名以軟體編程為工作的工程師,就這個問題來向大家大概介紹一下。
先向大家介紹下軟體(英語:Software)的概念,是相對於硬體(英語:Hardware)翻譯過來的。硬體的概念就是我們看得見摸得著的東西,比如電腦顯示器,手機,打字用的鍵盤,操作電腦的滑鼠,平板電腦等等。而軟體則是看不見摸不著的一段數據的內容,比如一個優盤裡面的一些文件,手機裡面下載安裝的APP,以及遊戲程序等等。打個大概的比喻,硬體相當於我們聽歌用的手機,而軟體則是手機裡面的歌曲內容,或者手機裡面安裝的遊戲的文件內容;再打個不是很恰當的比喻,硬體相當於一個人,而軟體則是這個人腦子裡面的思想,控制力。
所以光有硬體,電腦和手機等電子產品是無法為我們工作的,只是一堆冰冷的塑料殼,電路板和線材。必須要由硬體裡面安裝運行的軟體來指揮這些硬體,按照預先設置的流程和條件去接受外部的輸入命令,經過運算之後把結果反饋給我們。而軟體編程,就是根據需要電腦和手機等要實現的功能,來編寫裡面需要的程序,來接收我們從手機觸控螢幕的輸入,或者電腦打字輸入的內容,進行內部的計算和處理,再把結果顯示到屏幕上,通過喇叭把聲音播放出來,或者把手機震動一下讓我們知道結果。比如編寫了一個打坦克的遊戲軟體,遊戲程序啟動之後會在屏幕上顯示幾臺坦克。玩家在屏幕上觸摸的時候,程序會感知到玩家手指觸摸的位置,這樣軟體內部計算坦克需要移動的距離,然後更新下坦克的位置再刷新顯示出來,這樣就實現了和玩家的互動。
要學習軟體編程,首先需要選擇一門程式語言。常用的高級語言有Python和Java等。程式語言就是用來把人可以容易看懂的語句,轉換為電腦,手機可以執行的機器語言(就是一堆的數字)。其次絕大部分程式語言都是使用英語作為基礎語言的,對於最入門的初學者只需要記住幾個以下三個簡單的英語單詞(英語/中文):
if / 如果
then / 那麼
else / 否則
程序裡面都是使用上面三個單詞組成的語句進行條件判斷來進行處理數據。類似於人在對外界的事情做出反應的時候,會根據自身的條件來選擇下一步執行的動作。比如一個人到了一個路口,如果他看到綠燈,那麼就通過路口,否則就停下來。程序運行的時候也是一樣的,比如有這樣一個流程:如果當前手機電池不足百分之五,那麼就彈出電量不足的提示。
有了基本的了解之後一般可以在一個星期左右的時間內,對著例子編寫幾個簡單的算數字,列印結果的小程序。如果要再進一步學習編程,達到可以編寫一個小的軟體的水平(比如一個記事本,計算器軟體或者APP等),則需要進一步學習作業系統相關的圖形顯示,文件保存等編程接口等。再進一步編寫更加複雜的軟體的話,就需要學習數據結構,面向對象等知識,這些內容是大學一年級的課程。所以如果是兒童要完全從零學習編程,最好還是需要有經驗的老師入門指導下,然後循序漸進地根據年齡來選擇深度。因為編程是與數學,邏輯方面密切相關的,年齡太小很多地方(如算法)是無法理解的。成人如果從零自學,可以慢慢從基礎簡單的Python語言開始練習,一定要多在電腦上實際操作,這樣才能逐步提高。