程式語言

程式語言(粵拼:cing4 sik1 jyu5 jin4;英文:programming language),又叫編程語言,係一種畀電腦執行嘅人工語言,用嚟定義電腦程式嘅文法規則,並可以向電腦發出指令。

程式語言
程式語言嘅例子,用到C程式語言去展示「Hello, World!」字句

程式語言嘅描述一般可以分為語法英文Syntax (programming languages)語義。語法係說明編程語言入面,邊啲符號或文字嘅組合方式係啱嘅,而語義係對於程式嘅解釋。有啲語言係用規格檔案定義,例如C語言嘅規格檔案係ISO標準嘅一部份,2011年後嘅版本為ISO/IEC 9899:2011,而其他語言(好似Perl)有一份主要程式嘅語言實現檔案,視為係參考實現。

語言比較

唔同程式語言支援唔同風格嘅程式編寫。喺搞清楚要用乜嘢演算法解決個問題之後,個編程員就需要諗吓用邊一隻程式語言將個程式寫出嚟。揀用邊隻語言取決於好多因素,例如係隻語言有幾啱用、公司政策、有冇啱用嘅編譯器同埋係個編程員自己嘅習慣呀噉。最理想嘅情況係個編程員揀用最啱用嗰種語言。

雖然話唔同程式語言有咁大嘅差異,但有一啲嘢係多人用嘅程式語言冚唪唥都會有嘅。美國電腦科學家亞倫·當尼(Allen B. Downey)喺佢本著作《How To Think Like A Computer Scientist》(粵譯:點樣好似電腦科學家噉思考)入面指出,所有程式語言都有以下呢啲功能:

  • 輸入:由鍵盤、檔案或者部電腦駁住嘅第啲架生嗰度攞資訊。
  • 輸出:將自己攞到或者處理過嘅資訊喺個熒光幕上面顯示出嚟,再唔係就將呢啲資訊傳去某個檔案或者第件架生嗰度。
  • 算術:做一啲基本嘅算術運算,好似係等等。
  • 條件性執行:檢查吓某啲狀態,並且根據狀況決定做邊樣嘢好。
  • 重覆:係噉重覆做某樣作業做若干次,通常次次做親嗰樣作業都會有些少唔同。

高階低階

程式語言 
顯示緊機械語言同監督程式反組合出來嘅組合語言嘅熒幕;機械語言完全唔似自然語言,通常都會用反組合器睇,就算係咁,唔熟都唔會睇得明。

程式語言可以分做高階(high-level)同低階(low-level)兩大種。呢種分級唔係話唔同程式語言有啲勁啲有啲渣啲,而且基於抽象層次。

喺最低嘅層次,電腦實際處理緊嘅訊號係由有電冇電控制,所謂抽象層次就係指你有幾 「抽離」:7 呢種最低嘅層次。但係就算係最低級嘅機械語言用數字表達命令,其實已經抽離咗呢個層次,所以我哋講嘅高級係指抽離咗命令集嘅層面,即係話,你越唔使微觀管理部電腦,越可以容易表達宏觀嘅概念,語言就越高級,高低級亦都其實唔係一個二元嘅分別,而係構成一個光譜。

舉個實例,淨係講 「條件性執行」。例如你想話 「如果乜乜等如乜乜乜,就噉噉,唔係就噉噉噉」,如果你用嘅係最低階嘅機械語言(machine language),你會要注意好多細節,例如位址、暫存器、點樣做比較、字節數量等等,你打入去嘅亦都全部係數字;上一級,組合語言(assembly language),你已經係寫英文簡寫,亦唔使操心啲嘢位址喺邊,要跳幾多個字節等等;再上一級,去到高階語言,用 if else 之類嘅字,雖然仍然係一種特別嘅語言,基本上已經係類似人話。

實例一:如果乜乜等如乜乜乜,就噉噉,唔係就噉噉噉
機械語言
(6502)
組合語言
(6502)
高階語言
(C)
行動碼 運算值 意思 標籤 行動碼 運算值 注釋
AD 00 30 將喺位址 $3000 嘅字節載入暫存器A LDA VAL1 ; 將 VAL1 載入暫存器A if (val1 == val2) {
CD 01 30 暫存器A同喺位址 $3001 嘅字節比較 CMP VAL2 ; 暫存器A同 VAL2 比較
D0 06 唔同就向前跳 6 個字節 BNE SKIPA ; 唔同就跳去 SKIPA
20 00 31 呼叫喺位址 $3100 嘅嘢 JSR TASKA ; 呼叫 TASKA  taska();
18 進位設做 0 CLC ; 進位設做 0 } else {
6D 03 進位係 0 就向前跳 3 個字節 BCC SKIPB ; 進位係 0 就跳去 SKIPB
20 00 32 呼叫喺位址 $3200 嘅嘢 SKIPA: JSR TASKB ; 呼叫 TASKB  taskb();
SKIPB: }

高階語言唔係單純因為佢用英文字就高階(啱啱個例子入面嘅組合語言其實都有 if,只係減咗筆,冇寫出來),更加係因為你用呢個 if 就可以表達例如係 「如果乜乜,就噉噉」 嘅概念,而唔使好似個例子入便噉要寫反話或者用其他唔自然嘅表達方法。高階語言就係啲電腦科學家為咗令寫程式呢家嘢容易啲而設計出嚟嘅,對於一般人嚟講比較易明:7–10

高階點轉低階

任何高於機械語言層次嘅語言都唔可能喺電腦上面直接行:8,尤其係高階語言所表達嘅嘢唔喺命令集嘅層次,同機械語言冇直接對應。要行高階語言寫嘅程式,視乎語言,通常有兩種做法⸺一就係用編譯器(compiler)將段源碼直接或者間接轉化成機械語言,唔係就用直譯器(interpreter)直接處理,連轉化都唔做。(混合情況都會有,例如 Java 嘅編譯器通常係將源碼譯成一種虛擬機嘅機械語言,但係咁即係呢種機械語言仍然唔可能喺電腦上面直接行,要再用直譯器處理。)

有人會認為編譯出來嘅機械語言行起上嚟會慢少少,但係其實演算法同數據結構亦都會影響快慢;另外,行得快但係唔常用,或者行得快但係睇唔明所以改唔到亦都係冇用:10

常見嘅高階語言

廿一世紀頭,比較多人用嘅高階程式語言包括咗:

... 等等。

程式語言理論

程式語言理論(programming language theory,PLT)係研究程式語言應該點樣設計、執行、分析同分類嘅一套理論。廿一世紀初嘅電腦界有好多唔同嘅程式語言,每款程式語言都有獨特嘅功能,程式語言理論上嘅研究會嘗試比較唔同嘅程式語言,會用邏輯等形式化(formalized)-即係每個符號都有清晰定義,唔似得自然語言咁多歧義-嘅語言表達唔同嘅程式語言,剖析唔同程式語言彼此之間喺解難能力上有乜差異,例如係某隻程式語言會唔會比起第啲程式語言更加擅長解決(需要冇咁多行碼)某啲類型嘅問題等嘅課題。程式語言理論呢個領域會同數學、軟件工程、語言學同認知科學等嘅領域互相影響,而且對應用電腦科學-例如係新程式語言嘅設計等-嚟講相當緊要。

參考

Tags:

程式語言 語言比較程式語言 高階低階程式語言 理論程式語言 參考程式語言Wikipedia:粵文拼音人工語言英文電腦電腦程式

🔥 Trending searches on Wiki 粵語:

蓮花安士余香凝港元黃于喬王菲大灣區航空錢 (重)駱駝李琳琳Lolly Talk馬蹄 (植物)YouTube大眼雞嘉利大廈大火陳紀澄填詞L田北辰英文施氏食獅史龍珠陳朝琴馮寶寶丁彥均黃梓賢黑社會 (電影)今天只做一「健」事蔣中正家族新鴻基地產痔瘡冒號時辰臥底服務團彝族2024年花蓮地震尼日利亞蘇菲瑪素攬炒巴黎明國產凌凌漆4羅振峰愛是不保留英屬香港曾美欣果子狸黃鶴樓深圳亞洲冠軍盃樊沛珈伊隆馬斯克衾棉胎涼粉沙維辛偉誠烏頭卡塔爾石門 (香港)謝霆鋒頂包案蜜獾肺癆筆畫鱷魚千克番茄英國沈貞巧邱意濃高圓圓副詞奧米嘉儀光合作用基佬黃綺琳宋靄齡處女膜瑪嘉烈與大衛系列 絲絲🡆 More