程式語言的三個基本特性

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

Let's learn 3 properties of programming language.


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

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

循序,是程式語言的基礎

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

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

選擇,是各種條件的判斷

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

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

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

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

迴圈,是自動重複的選擇

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

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

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

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

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

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

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

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

avatar-img
16會員
61內容數
WarrenLo's 軟體設計武功祕笈
留言1
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
AI平台的開發通常會使用多種程式語言,具體取決於平台的設計目標和功能需求。 一般來說,像GrokAI系統(例如Grok,由xAI打造),背後的技術棧可能包括以 下幾種常見語言: Python:這是最受歡迎的AI開發語言之一,因為它有豐富的庫和框架,比如TensorFlow、PyTorch和N
Thumbnail
Python 是一種非常優秀的程式語言,但它是否是「最好」的語言,取決於具體的使用場景和需求。 以下是 Python 的優勢與限制: Python 的優勢 1. 簡潔易學 • 語法接近自然語言,適合初學者,能快速上手並實現想法。 • 程式碼可讀性高,減少了開發和維護成本。 2. 豐
1. 低估大語言模型對學術研究的深遠影響: - 許多碩博士生可能認為大語言模型僅僅是處理文字的工具,沒有意識到它們在學術研究中的潛力。例如,這些模型能協助快速整理文獻、生成初步的研究報告,甚至提供語言上的支持來幫助撰寫論文。如果未能充分了解大語言模型的強大功能,就可能錯過使用這些工具來提升研
Thumbnail
這節課的學習目標是了解 CSS 的基本語法結構和使用方法。
Thumbnail
如果你也是從事軟體相關工作的人,一定會遭遇突然需要你去學習一套你不熟悉的程式語言狀況吧,此時你會怎麼做呢? 是趕快去買書來看嗎? 還是趕快找一門程式課來上? 又或者乾脆去找會的同事來教學?
Thumbnail
在本章節中,我們將學習JavaScript的基本語法,包括如何註解代碼和如何聲明變數。瞭解這些基礎知識對於進一步學習和使用JavaScript來編寫代碼是非常重要的。
Thumbnail
JavaScript是一種具有動態型別、弱型別、原型繼承等特性的高級腳本語言,應用範圍廣泛,包括前端開發、後端開發、移動應用等。它被各種公司和開源社區廣泛使用。學習JavaScript需要掌握ECMAScript標準、異步編程、模塊系統等知識。
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
關於程式語言的學習,只要掌握住幾個基本特性要熟悉幾種程式語言也不困難,這三個基本特性就是…
Thumbnail
AI平台的開發通常會使用多種程式語言,具體取決於平台的設計目標和功能需求。 一般來說,像GrokAI系統(例如Grok,由xAI打造),背後的技術棧可能包括以 下幾種常見語言: Python:這是最受歡迎的AI開發語言之一,因為它有豐富的庫和框架,比如TensorFlow、PyTorch和N
Thumbnail
Python 是一種非常優秀的程式語言,但它是否是「最好」的語言,取決於具體的使用場景和需求。 以下是 Python 的優勢與限制: Python 的優勢 1. 簡潔易學 • 語法接近自然語言,適合初學者,能快速上手並實現想法。 • 程式碼可讀性高,減少了開發和維護成本。 2. 豐
1. 低估大語言模型對學術研究的深遠影響: - 許多碩博士生可能認為大語言模型僅僅是處理文字的工具,沒有意識到它們在學術研究中的潛力。例如,這些模型能協助快速整理文獻、生成初步的研究報告,甚至提供語言上的支持來幫助撰寫論文。如果未能充分了解大語言模型的強大功能,就可能錯過使用這些工具來提升研
Thumbnail
這節課的學習目標是了解 CSS 的基本語法結構和使用方法。
Thumbnail
如果你也是從事軟體相關工作的人,一定會遭遇突然需要你去學習一套你不熟悉的程式語言狀況吧,此時你會怎麼做呢? 是趕快去買書來看嗎? 還是趕快找一門程式課來上? 又或者乾脆去找會的同事來教學?
Thumbnail
在本章節中,我們將學習JavaScript的基本語法,包括如何註解代碼和如何聲明變數。瞭解這些基礎知識對於進一步學習和使用JavaScript來編寫代碼是非常重要的。
Thumbnail
JavaScript是一種具有動態型別、弱型別、原型繼承等特性的高級腳本語言,應用範圍廣泛,包括前端開發、後端開發、移動應用等。它被各種公司和開源社區廣泛使用。學習JavaScript需要掌握ECMAScript標準、異步編程、模塊系統等知識。
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
關於程式語言的學習,只要掌握住幾個基本特性要熟悉幾種程式語言也不困難,這三個基本特性就是…