又回到最初的起点:软件和程序
1. 軟件和程序
每每提到“編程”這個詞,大家都會覺得這是件高端、神秘的事,或者會皺皺眉頭,覺得這肯定是個挺難的事兒吧?
基本所有與編程沒有打過交道的人,都認為編程似乎被一群禿頭的程序員壟斷了,是一種旁人無法介入的專屬行為。
而就在這一兩年里,“少兒編程”的概念又伴隨著素質教育、stem 教育迅速崛起。好像一時之間,連小學生、幼兒園小朋友都開始學編程了。而且還有不少幼兒型選手拿了不少編程大獎!
所以,編程到底是個啥玩意兒?是不是真的有這么難呀?
2. 軟件是什么
要說編程,首先就要先說一說計算機。
計算機大家都不陌生吧,就算是一個完全不懂編程的人,也每天會用到——工作中用來處理資料、文檔的臺式機、筆記本,看劇的 pad ,日常不離身的智能手機,這些其實都是計算機。
如果我們把計算機拆開,看到的是若干電路和電子元件。把這些東西組合起來,通電開機,就可以用來讀新聞、刷抖音、聽歌、 寫文章、P照片、打游戲、看 idol ,發微博/微信……了。
你有沒有想過,計算機能做這么多事,僅僅是因為有那些電子器件嗎?當然不是!
我們新買來一個智能手機,上面的 App 少得可憐,最初的時候啥也干不了。需要我們自己去下載各式各樣的 App 。
這些 App 又被稱作應用軟件,這些 App 正是通過編程制作出來的。
手機 App 是軟件,臺式機上的各種應用(瀏覽器、文本編輯器、圖像處理工具等)是軟件,嵌入式系統中的應用(汽車的防鎖死剎車系統、核磁共振成像設備、大型固定裝置如交通燈、工廠控制器,以及在非智能手機時代曾紅極一時的 mp3 機中的播放器和手持 PDA 中的應用等)也是軟件。
軟件可以簡單的被認為是一組程序,這組程序相互配合,通過接受輸入、產生輸出,來為我們每一個人解決問題或完成任務。
2.1 互聯網軟件
日常生活中,你打開微信,在朋友圈發了一張自拍,并精心配上準備好的文案 ”今天也要做個精致的豬豬男孩/女孩“ 這樣的文字,然后點擊 “發表” 按鈕。
你的朋友圈里就顯示出了你剛發的圖和文字,你的朋友刷到了你的朋友圈順手給你點贊評論一條龍。
這幾個步驟對你而言可能只要幾秒鐘,但是在這樣一個簡單的過程背后,卻有多個程序在為你提供服務。
首先你點擊 “微信” 的綠色圖標,然后點 “發現”->“朋友圈”->朋友圈右上角的小相機圖標,到相機選擇照片,輸入文字,最后點擊“發表”。
這個過程看起來是你在干活,其實微信軟件也沒閑著:
在你點擊了“發表“之后,微信前端將之前的輸入打一個數據包,注明這是你新發的朋友圈內容,通過互聯網發送給后端程序。
后端程序接收到了前端的發來的 “發朋友圈” 請求之后,會讀取數據包,從中取出你的照片和配圖文字,把它們記錄(存儲)下來。
當你點完 “發表“ 返回到朋友圈之后,看起來你并沒有再做什么事情,然而這個 ”進入朋友圈“ 的動作就表示了你要閱讀朋友圈內容。微信又會有一系列動作:
后端收到這個命令后,會把最新的朋友圈內容打一個數據包發送回來。
前端接收到這個數據包后,會將其中的內容(圖片、文字)按特定的格式顯示出來。你通過手機屏幕看到的,就是這種顯示的結果。
上述過程其實經過了簡化,實際情況要復雜得多。
目前,我們暫時掌握前端、后端和通訊的概念就好。幾乎所有的互聯網應用都涉及到這幾個概念。
我們手機上的 App 經常要更新,每次我們更新的都只是前端程序而已,更新前端后,經常會發現新的版本顯示文字、圖片的樣式不同的,新的版本又加入了新的功能(比如新的頁面、新的按鈕)等變化。
實際上,一般互聯網軟件后端程序更新得往往比前端更頻繁。只不過后端程序部署在開發軟件的公司或個人自己的服務器上(或者第三方的云服務器上),更新的過程不被用戶察覺而已。
因為內容來自于后端,所以,就算你的手機上有前端程序,如果網絡不通,或者后臺宕機,也無法使用該軟件。
這是我們現在日常用到最多的互聯網軟件,大概就是這樣運作的了。
2.2 單機版軟件
在互聯網時代到來之前,我們用的軟件基本是單機版軟件,比如常用的 Word , PowerPoint , Photoshop 等——當然現在這些工具也互聯網化了。
單機版軟件需要專門的安裝程序(還記得光盤、軟盤嗎)一次只能安裝到一臺機器上(單機版軟件流行的時候大家基本都在用臺式機),軟件中所有的程序都在一臺機器上運行。
那個時候,軟件是要錢的,一張光盤理論上只能安裝一臺機器,因為你買的是 license(安裝許可證)——一張光盤都好貴的,當年微軟的辦公套件一套就要成千上萬的。
所以當初在學校和普通家庭里,流行的是盜版和破解版……回首看好像是很久以前了,其實也不過就十來年前而已。
3. 程序又是什么?
到底什么是程序呢?
程序接受輸入,根據輸入完成某些特定任務后產生輸出——你有沒有發現,這么聽起來和軟件不是一樣嘛?
確實,無論程序還是軟件,都會接受輸入,產生輸出。
軟件是由若干程序組成的,在多個程序組成的軟件中,具體某一個程序都有輸入和輸出。但往往這個程序接受的不是全部用戶輸入,或者產生的輸出也不是全部用戶輸出,而是輸入或輸出某些中間結果,經過幾個程序的共同努力,才將原始輸入轉化成了最終成果展示出來。
打個比方,軟件就像一條完整的流水線,能夠把原材料加工成最終產品,一個個程序則像其中的一道道工序,這些工序的聯合協作,完成了整個生產過程。
如果軟件的功能非常簡單,一個軟件也可以只有一個程序。
理論上講,其實很多全部功能都安裝部署在一臺機器上的軟件(單機版軟件),都可以把所有功能寫在一個程序里。
但是在現實當中我們會故意不這樣做。原因是,復雜軟件的功能太多,如果所有功能都用一個程序來實現,會導致這個程序的源代碼過多,程序結構很難清晰,管理和維護起來的成本太高。
等等,這里怎么又出來了一個“程序的源代碼“,它和程序不是一回事嘛?且聽下回分解啦!
4. 分享交流
我們為系列讀者創建了微信交流群,以方便更有針對性地討論專欄相關問題。入群方式請關注公眾號:AI悅創「博客文章右邊二維碼哦!」加小編好友,小編拉你入群!(記得備注來意哦!)。
閱讀文章過程中有任何疑問隨時可以跟其他小伙伴討論,或者直接向作者提問(作者看到后抽空回復)。你的分享不僅幫助他人,更會提升自己。
總結
以上是生活随笔為你收集整理的又回到最初的起点:软件和程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 离线翻译android开发,有道翻译官推
- 下一篇: Unity学习资源(超全)汇总 基础+项