程式語言的三個基本特性

更新於 發佈於 閱讀時間約 3 分鐘

Let's learn 3 properties of programming language.


自 1970 年代電腦被發明盛行多年後的今天,大部分人早已熟悉「程式語言」這個專有名詞,也知道它是被設計來控制電腦的一種知識工具,現今世界上有大一群人仰賴它來養家活口,重要性不言而喻。世界上出現的程式語言已經有上千種之多,每個都有其應用目的、設計邏輯跟一套非常相似文字符號系統,而且越近代的程式語言也越來越像自然語言,這點新手學習門檻降低不少,儘管如此仍然沒有一個人要敢說自己精通世上所有程式語言(也沒必要)。

關於程式語言的學習,只要掌握住幾個基本特性要熟悉幾種程式語言也不困難,這三個基本特性就是「循序、選擇、迴圈」。

循序,是程式語言的基礎

循序如同字面所言,就是從頭到尾按照順序。電腦最強大的地方在於聽取指令快速做出行動且 100% 執行。軟體工程師要做的事就是把需要電腦做的複雜任務拆解成單一步驟組合成一個流程,再用程式語言「翻譯」來寫入到文本裡變成程式碼。

換句話說,循序就是按照順序來,怎麼說就怎麼做(電腦完全符合誠信正直法則)。

選擇,是各種條件的判斷

了解循序概念跟一些簡單的語法,就能夠寫出一些規模小的腳本,簡單的程式,例如排程。通常看似簡單的行為需要的處理流程往往比想像的還複雜,舉個例子你就更明白了,小時候學過「過馬路要紅燈停綠燈行」,感覺很簡單,如果交給電腦來做用近代一點的程式語言來處理就會變成

「過馬路,如果看到有斑馬線且紅綠燈顯示紅燈,就原地等待;如果看到有斑馬線且紅綠燈顯示綠燈,就往前走」

如果 A 就 B 這種表達方式就是選擇,A 叫做判斷條件,B 為 A 條件符合後電腦接下來要執行的動作指令。

所有電腦的選擇行為都是軟體工程師預先寫好再被動等待觸發的,狀況覆蓋率取決於設計它的軟體工程師對問題的認知程度,覆蓋率高的程式「看起來」會更聰明。另外,無限制地加入各種判斷條件,等價、冗余的判斷條件也會影響執行效率。

迴圈,是自動重複的選擇

迴圈是基於選擇的一種應用,被用來連續處理一連串相同或相似的狀況,直到某個特殊條件成立。

繼續來用過馬路為例,前面說「過馬路,如果看到有斑馬線且紅綠燈顯示紅燈,就原地等待;如果看到有斑馬線且紅綠燈顯示綠燈,就往前走」,如果程式真的這樣寫,你會發現自己永遠等在斑馬線前面過不了馬路!因為紅燈是需要讀秒的,必須等到讀秒結束才會變綠燈,所以原本的判斷綠燈的程式碼等同沒有作用!

改善的方式就是使用第三個特性「迴圈」,讓程式每隔一小段時間就去檢查燈號再來決定要不要開始往前走,所以可以改成

「過馬路,如果看到有斑馬線且紅綠燈顯示紅燈,就原地等待;每隔一秒鐘就看一次燈號,如果看到有斑馬線且紅綠燈顯示綠燈,就不等待開始往前走,否則繼續等」

假設紅燈等待的時間是 30 秒,那麼這段程式判斷綠燈的動作就會被執行 30 次,而判斷綠燈的這段程式碼只要寫一次就可以了。

試著學習一個新的程式語言

「循序、選擇、迴圈」這三個程式語言基本原則是我自己在軟體這行運用多年的觀念,工作上我也用它來學會不少程式語言,每當有新的任務需求或是轉換工作有新的程式語言需求,我就能直奔主題只要稍微注意一下新的程式語言遇舊的差異點就可以差不多準備開工了,因此節省不少學習時間。

不過隨著物件導向語言的發展,顯然只用三個基本特性顯然已經不夠了,應該加入第四個特性「物件導向」來與時俱進,後續我打算來聊聊物件導向這個主題。

avatar-img
16會員
61內容數
WarrenLo's 軟體設計武功祕笈
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Warren Lo的沙龍 的其他內容
IDE 升級後出現了一樣的錯誤,手上程式碼沒有 pylint black-format 檢查上不了 gitlab,我又點開了那個很小很小的 x 符號,裡面 logs 提示的解決方式是升級..
在網路上查找可以發現有很多類別圖的 6 種關係的說明與示例,通常不太容易難取得共鳴。主要有兩個原因: 1. 對於這些關係線的定義混淆,導致無法判斷滿足條件與使用時機 2. 缺少生活相關的具體案例,很難理解這些關係所對應的抽象概念
UART 轉換完成的 Serial 訊號已經可以用來傳輸通訊了,那為什麼還要把 UART 轉出來的訊號再轉換成成其他的 Serial 介面,像是 RS232/RS485 再進行傳輸呢?原因是 UART 的 Serial 訊號傳輸的距離實在太短了
Serial 通訊數據必須先在 UART 元件把 Parallel 轉成 Serial,EIA Driver 會把 Serial 轉成特定的 Serial 訊號。UART 數據轉換要考慮兩個關鍵點,如何讓資料從直行變橫列(躺平)的方法,還要考慮如何控制 Serial 訊號輸出
聊到 Serial 通訊就一定會提到 COM Port,它是微軟定義的一個經典 Serial 通訊實作。COM Port 在筆電還不普及的年代可以很輕鬆在 PC(桌機)的主機板上找到有標示 COM1 或者 COM2 的通訊接口,這些就是最常見的 COM Port 通常搭載的都是 R232 的通訊規格
問題來了,如果在一組 Master-Slave 在通訊過程中出現其他的裝置「插嘴」的狀況會怎麼樣?因為迴路只有一條,所以只要在同一個通訊迴路上同時有兩台裝置發出訊號,結果就是兩個資料封包互相對撞雙雙損毀…
IDE 升級後出現了一樣的錯誤,手上程式碼沒有 pylint black-format 檢查上不了 gitlab,我又點開了那個很小很小的 x 符號,裡面 logs 提示的解決方式是升級..
在網路上查找可以發現有很多類別圖的 6 種關係的說明與示例,通常不太容易難取得共鳴。主要有兩個原因: 1. 對於這些關係線的定義混淆,導致無法判斷滿足條件與使用時機 2. 缺少生活相關的具體案例,很難理解這些關係所對應的抽象概念
UART 轉換完成的 Serial 訊號已經可以用來傳輸通訊了,那為什麼還要把 UART 轉出來的訊號再轉換成成其他的 Serial 介面,像是 RS232/RS485 再進行傳輸呢?原因是 UART 的 Serial 訊號傳輸的距離實在太短了
Serial 通訊數據必須先在 UART 元件把 Parallel 轉成 Serial,EIA Driver 會把 Serial 轉成特定的 Serial 訊號。UART 數據轉換要考慮兩個關鍵點,如何讓資料從直行變橫列(躺平)的方法,還要考慮如何控制 Serial 訊號輸出
聊到 Serial 通訊就一定會提到 COM Port,它是微軟定義的一個經典 Serial 通訊實作。COM Port 在筆電還不普及的年代可以很輕鬆在 PC(桌機)的主機板上找到有標示 COM1 或者 COM2 的通訊接口,這些就是最常見的 COM Port 通常搭載的都是 R232 的通訊規格
問題來了,如果在一組 Master-Slave 在通訊過程中出現其他的裝置「插嘴」的狀況會怎麼樣?因為迴路只有一條,所以只要在同一個通訊迴路上同時有兩台裝置發出訊號,結果就是兩個資料封包互相對撞雙雙損毀…
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這節課的學習目標是了解 CSS 的基本語法結構和使用方法。
Thumbnail
在本章節中,我們將學習JavaScript的基本語法,包括如何註解代碼和如何聲明變數。瞭解這些基礎知識對於進一步學習和使用JavaScript來編寫代碼是非常重要的。
Thumbnail
JavaScript是一種具有動態型別、弱型別、原型繼承等特性的高級腳本語言,應用範圍廣泛,包括前端開發、後端開發、移動應用等。它被各種公司和開源社區廣泛使用。學習JavaScript需要掌握ECMAScript標準、異步編程、模塊系統等知識。
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
學習程式語言是一個不容易的過程,但有效的學習方法可以幫助你克服挫折,這篇文章分享了一個程式設計師的學習心得以及一些建議,包括課後實作、短期學習、跟別人比較等注意事項,同時提供了一些相關的教學資源。
Thumbnail
程式設計中不可或缺的一部分 介面是使用者與程式互動的媒介,因此介面的設計會影響使用者的體驗和感受。一個清晰明白、易懂的介面,可以讓使用者輕鬆地使用程式,並獲得良好的使用體驗。 需要與程式設計師密切溝通 設計師需要了解程式的功能和需求,並根據使用者的習慣和需求進行設計。設計師和程式設計師之間的溝
Thumbnail
編輯的基本功,是對文字的敏感度。
Thumbnail
介紹C++ 語法 資料型態,架構說明 程式語言為人類與電腦溝通的工具 程式設計流程: 定義問題 -> 問題分析 -> 撰寫演算法 ->程式撰寫 -> 程式執行及維護
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
這節課的學習目標是了解 CSS 的基本語法結構和使用方法。
Thumbnail
在本章節中,我們將學習JavaScript的基本語法,包括如何註解代碼和如何聲明變數。瞭解這些基礎知識對於進一步學習和使用JavaScript來編寫代碼是非常重要的。
Thumbnail
JavaScript是一種具有動態型別、弱型別、原型繼承等特性的高級腳本語言,應用範圍廣泛,包括前端開發、後端開發、移動應用等。它被各種公司和開源社區廣泛使用。學習JavaScript需要掌握ECMAScript標準、異步編程、模塊系統等知識。
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
學習程式語言是一個不容易的過程,但有效的學習方法可以幫助你克服挫折,這篇文章分享了一個程式設計師的學習心得以及一些建議,包括課後實作、短期學習、跟別人比較等注意事項,同時提供了一些相關的教學資源。
Thumbnail
程式設計中不可或缺的一部分 介面是使用者與程式互動的媒介,因此介面的設計會影響使用者的體驗和感受。一個清晰明白、易懂的介面,可以讓使用者輕鬆地使用程式,並獲得良好的使用體驗。 需要與程式設計師密切溝通 設計師需要了解程式的功能和需求,並根據使用者的習慣和需求進行設計。設計師和程式設計師之間的溝
Thumbnail
編輯的基本功,是對文字的敏感度。
Thumbnail
介紹C++ 語法 資料型態,架構說明 程式語言為人類與電腦溝通的工具 程式設計流程: 定義問題 -> 問題分析 -> 撰寫演算法 ->程式撰寫 -> 程式執行及維護