電腦 程 式 編 寫
個 編 程 員 要 分析 吓要解 啲乜嘢問題 ,可 以睇吓需求分析 [3];- 佢
需要 度 好 要用 邊 啲演算 法 ,中途 要 諗吓用 啲演算法 夠唔夠效率 ; - 佢要揀返
隻 程 式 語 言 ,用 隻語 言 寫 好 程 式 嘅源 碼; 打 後編 程 員 仲 要 做測 試 、debug、保存 程 式 嘅源碼同埋 管理 編 程 過程 出 嘅產物 ... 呀噉。
喺編
喺廿
抽象 概念
[演算 法
[![](https://upload.wikimedia.org/wikipedia/commons/thumb/b/bf/LampFlowchartCantonese.svg/270px-LampFlowchartCantonese.svg.png)
要 解 嘅問題 :家 吓俾若干 個 正數 (input)你,假設 呢個列 唔係一 個 空列 ,同 我 搵呢啲數入 面 最大 嗰個出 嚟
用 嘅演算法 嘅步驟:
諗演
資料 類型
[整數 (int
),指 件 資料 表示 緊一 個 整數 、- 浮點
數 (float
),指 件 資料 表示 緊一 個 可 以係小數 嘅實數 、 字 符 (char
),指 件 資料 表示 緊一 個 文字 等 非 數字 嘅符號 、布 林 (bool
)指 件 資料 表示 緊一 個 真 (1;True
)假 (0;False
)值
...
舉個簡化int
bool
max
呢個
max = 0.005
(將 max
呢件數 據 設 做 0.005)
( | |||
浮點 |
程 式 語 言
[# Input:一 列 冧巴 L。
# Output:L 入 面 最大 嘅冧巴 。
def wan2_max (L): # 定義 乜嘢係 "wan2_max"。
max = 0 # 設 max 做 0。
for x in L: # 同 每 個 喺 L 入 面 嘅 x,做...
if x > max: # 如果 x 大過 max,
max = x # 設 max 做 x。
return max # 俾返 max 個 值出嚟。
唔同
雖然
- Input:
由 鍵盤 、檔案或 者 部 電腦 駁住嘅第啲架生 [註 2]嗰度攞資 訊。 - Output:
將 自己 攞到或 者 處理 過 嘅資訊喺熒光幕 上面 顯示 出 嚟,又 或 者 將 呢啲資 訊傳去 某 個 檔案或 者 第 件 架 生 [註 3]嗰度。 算術 :做一啲基本嘅算術運算,好 似 係 加 同 減 呀噉。條件 執行 :檢 查吓某 啲狀態 ,並 且根據 狀況 決定 做邊樣 嘢好。重 覆 :係 噉重覆 做某樣 作業 做若干 次 ,通常 次次 做親嗰樣作業 都會 有 些少 唔同。
高級 低級
[![](https://upload.wikimedia.org/wikipedia/commons/thumb/c/c0/W65C816S_Machine_Code_Monitor.jpeg/300px-W65C816S_Machine_Code_Monitor.jpeg)
低級 嘅語言 (好 似 係 機械 語 言 噉)差 唔多完全 係 由 1同 0等 嘅數字 組成 嘅,一般人冇乜可能會睇得明,但 電腦 就係基 於呢啲語言 嚟行嘅-機械 語 言 冇將電腦 嘅運算 抽象 化 ;高級 啲嘅語 言 (好 似 係 頭 先 提 過 嘅 Python 噉)就係電腦 科學 家 為 咗令寫 程 式 呢家嘢容易 啲而設計 出 嚟嘅,呢啲語 言 比較 似 自然 語 言 ,例 如上 面 嗰串 Python 碼就有 if
等 嘅英文字 ,所以 對 於一般人嚟講比較易明,但 就同電腦 實際 處理 緊嘅訊號(有 電 冇電)好 唔同,所以 用 高級 語 言 寫 程 式 嗰陣,吓吓寫 完 段 源 碼之後 都 要 搵編 譯 器 將 段 源 碼轉化成 機械 語 言 ,或 者 搵直譯 器 將 段 源 碼實時 處理 ;但 係 即 使 係 用 編 譯 器 ,編 出 嚟嘅機械 碼行起 上 嚟可能會 慢少少 [17]。
喺廿
...
編 程 範式
[舉個
一 個個 嘅類別 (class
),每 個 類別 會 有 若干 個 實例 (instance
),每 個物 件 都 係 一 個 實例 ,會 有 若干 份資料 ,每 件 同 類別 嘅物件 ,有 嘅變數 都 一 樣 。
class Car { // "Car" 係 一 個 類別 。
public: // Car 嘅每一 個 實例 (每 件 屬 於 Car 嘅物件 )都會 有 以下 呢啲變數 ...
string brand; // 牌 子
string model; // 型 號
int year; // 年 份
};
呢種做法喺好class
,class
instance
instance
」呢樣嘢做instance
」嘅碼[22]。
![](https://upload.wikimedia.org/wikipedia/commons/thumb/7/75/CPT-Class-Object-Modification.svg/540px-CPT-Class-Object-Modification.svg.png)
class
嘅Debug
[![](https://upload.wikimedia.org/wikipedia/commons/thumb/f/ff/First_Computer_Bug%2C_1945.jpg/300px-First_Computer_Bug%2C_1945.jpg)
Debug(粵拼:di6 bak1)
Debug 嘅一種常見方法係俾個程式行幾次,睇吓佢 output 嗰啲
Bug 種類
[Bug
句法 錯誤 :句法 係 指 一隻程式語言有嘅一啲法則,負 責 指定 「邊 啲符號 (包括 數字 同 字母 )嘅組合算 係 有 意思 」,例 如喺 C程 式 語 言 入 面 ,printf("xxx");
呢行碼會教 部 電腦 顯示 出 xxx
噉嘅字 ,因 為 C語 言 嘅句法 指 明 咗printf
嘅陳述 式 係 教 部 電腦 做「顯示 段 字 或 者 變數 嘅數值出嚟」嘅作業 ,而如果 一個編程員打錯字,將 段 碼打咗做(例 如)prinf("xxx");
(少 噉咗個 t
),就會搞到個 程 式 因 為 句法 問題 而出錯。句法 上 嘅錯誤 係 咁多種 錯誤 當 中 最 易 搵到嘅:喺編 譯 器 將 段 源 碼轉換 成 機械 碼嗰陣,實 會 捉到句法 上 嘅錯誤 [26]。算術 上 嘅錯誤 :就算一個程式句法冇錯、而且亦 冇打錯字,個 程 式 都 有 可能 喺算術 上出 錯,好 似 係 除 以 0 就會搞到個 程 式 行 行 吓出錯(行 吓行吓,段 碼叫部 電腦 將 個 變數 嘅數值除 0,跟手部 電腦 就出錯),亦 都 反映 個 編 程 員 寫 個 程 式 嗰陣考慮 得 唔夠周 詳 ,冇諗到個 程 式 行 到 呢個位 有可 能會 出現 個 噉嘅數 值。要 應 付 呢種錯誤 ,編 程 界 嘅一 種 常見 做法係 叫 個 程 式 定時 定 候 將 啲變數 嘅數值顯示 出 嚟(可 以睇返 C程 式 語 言 嘅printf
),等 編 程 員 可 以一路睇到個程式行嗰陣每個變數嘅數值點樣變,即 係 個 程 式 會 出 好 似 以下 噉嘅輸出 [27]:t=0: wai_zi = 0 cuk_dou = 0 // 喺時
間 點 (t)0 嗰陣,wai_zi 嘅值係 0,cuk_dou 嘅值係 0 t=1: wai_zi = 0 cuk_dou = 10 // 喺時間 點 (t)1 嗰陣,wai_zi 嘅值係 0,cuk_dou 嘅值係 10 t=2: wai_zi= 10 cuk_dou = 20 // ... 如此類推 。 t=3: wai_zi = 30 cuk_dou = 30 t=4: wai_zi = 60 cuk_dou = 40 t=5: wai_zi = 100 cuk_dou = 50
- 迴圈
同 遞歸上 嘅錯誤 :迴圈係 一種好常用嘅編程技術;一個迴圈會掕住若干句陳述式同埋重複條件,個 程 式 會 按住條 重複 條件 ,重複 噉行掕住嗰柞陳述 式 若干 次 ,直 至 重複 條件 達 到 為 止 ,例 子 有 while 迴圈同 for 迴圈都 係 噉。有 陣 時 ,編 程 員 可能 打 錯字,搞到個 程 式 出現 無限 迴圈或 者 無限 遞歸等 嘅問題 ,令 到 個 程 式 係 噉行同 一段碼永遠都唔停[28][29]。 資源 上 嘅錯誤 :有 返 咁上下 複雜 嘅程式 基本 上 實 會 用 到 多 件 資源 ,包括 用 部 電腦 嘅記憶 體 記 住 處理 緊嗰啲變數 嘅數值;呢個過程 可 以引起 好 多 錯誤 ,例 如係編 程 員 喺初 始 化 嗰陣唔記得 咗要設定 某 個 變數 嘅數值,然 後 個 程 式 要 攞個變數 做運算 ,跟住搞到部 電腦 因 為 個 變數 冇數值而出 錯[30]。
...
質素 要求
[![](https://upload.wikimedia.org/wikipedia/commons/thumb/d/d6/NIST_Testing_standard_interfaces.jpg/300px-NIST_Testing_standard_interfaces.jpg)
可 靠 度 :指 個 程 式 有 幾 常會 俾到啱嘅結果 ,一個完美可靠嘅程式每次行嗰陣都會成功俾到正確輸出;可 靠 度 取 決 於啲演算 法 喺概念 上 係 咪正確 同 埋 寫 程 式 嘅過程 當 中有 冇出錯,靠 唔住嘅程式 成 日 會 有 競爭 危害 (指 個 程 式 嘅最終 輸出 會 受一啲唔受控制嘅時間差影響)或 者 緩衝 區 溢位等 嘅問題 -如果有 呢類問題 出現 ,噉通常 表示 個 程 式 寫 得 唔好[31]。頑健 度 :指 個 程 式 有 幾 能 夠預測 同 應對 一啲佢自身以外嘅差錯,包括 輸入 嘅資料 唔啱款(例 如係輸入 需要 係 浮點數 但 用 家 俾咗個 字 符 )、要用 嘅資源 (好 似 係 記憶 體 )唔夠用 以及係 用 家 方面 嘅出錯... 呀噉。一 個 頑健 嘅程式能 夠喺佢自己 以外 嘅嘢出 錯嗰陣 有 方法 應對 -簡單 講 可 以想像 成 - 「
if
有 問題 ,then
用 噉噉噉嘅步 驟嚟應對 」,
- 「
可 移植 度 :指 個 程 式 嘅源碼可以喺幾 廣 泛嘅電腦 硬 件 同 作業 系統 上面 行 ,一個有完美可移植度嘅程式能夠喺任何電腦(無論 係 個人 電腦 定 係 手 機 等 )上面 行 。可 移植 度 由 好 多 因 素話 事 ,例 如係有 啲程式 可能 用 咗一啲比較專業嘅指令,而呢啲指令 專業 得 滯 ,未必 部 部 電腦 都 有 裝 呢啲指令 -噉就會 搞到個 程 式 喺某啲電腦 上面 行 唔到[33]。可 維護度 :指 嗰個程 式 有 幾 易 可 以俾現時 或 者 將來 嘅編程 員 攞去改良 、執 錯或者 調 較。高 嘅可維護度 對 於普通 嘅用家 嚟講重要 性 唔係咁明顯 ,但 就對一個程式長遠嘅命運同價值嚟講就好緊要-具有 高 可 維護度 嘅程式 往往 會 俾人攞去改 完 又 改 ,因 而有一個更活躍嘅用家群[34][35]。
...
可讀 度
[喺程
令 人 容易 攞去用 、將 段 碼用落去喺第啲機上 (可 移植 )同 埋 執 呢段碼(可 維護);
另一
用 一貫 嘅程 式 碼風格 ;用 好 嘅縮 排 風格 (喺每行 陳述 式 前面 加 適量 嘅空格 );- 落
注釋 (comment
;一啲會俾個程式忽略嘅文字碼,可 以用嚟向睇嘅人 講 解 每 行 陳述 式 用 嚟做乜); 分解 ,指 將 一件複雜嘅工作分做好多件細啲嘅工作,等 想 改 段 源 碼嗰個人 能 夠直接 飛 去 佢想改 嗰部份[38],例 如係喺編寫 遊戲 程 式 嗰陣,啲編程 員 好 興 俾唔同 嘅人物 同 關 卡各 有 自己 嘅檔案,等 啲人玩起改 檔上 嚟易搞啲;
...
冇縮 |
|
---|---|
def wan2_max (L):
max = 0
for x in L:
if x > max:
max = x
return max
|
# Input: |
簡史
[![](https://upload.wikimedia.org/wikipedia/commons/thumb/0/0f/Ada_lovelace.jpg/240px-Ada_lovelace.jpg)
喺
睇埋
[電腦 編 程 嘅大綱 :列 出 編 程 上 用 嘅概念 。- 哈佬呀,
世界 !:最 基本 最 入門 級 嗰種電腦 程 式 。 - 軟件
畫 則 :指 寫 電腦 軟件之 前 嘅圖則 ,講 解 軟件嘅各部 份、有 乜特性 同 細 節 以及係 呢啲部 份之間 嘅關係 [41]。 - 軟件維護:
指 喺一隻電腦軟件出咗街之後執同改良隻軟件[42]。 電腦 網 絡 人工 智能 遊戲 編 程 電子 工程
詞 彙
[演算 法 / jin2 syun3 faat3 / algorithm源 碼 / jyun4 maa5 / source code編 譯 器 / pin1 jik6 hei3 / compiler- AI /
可 以作 ei1 aai1 運算 理論 / wan6 syun3 lei5 leon6 / theory of computation運算 複雜 度 / wan6 syun3 fuk1 zaap6 dou6 / computational complexity資料 類型 / zi1 liu2 leoi6 jing4 / data type程 式 語 言 / cing4 sik1 jyu5 jin4 / programming language陳述 式 / can4 seot6 sik1 / statement高級 程 式 語 言 / gou1 kap1 cing4 sik1 jyu5 jin4 / high-level programming language低級 程 式 語 言 / dai1 kap1 cing4 sik1 jyu5 jin4 / low-level programming language機械 語 言 / gei1 haai6 jyu5 jin4 / machine language組合 語 言 / zou2 hap6 jyu5 jin4 / assembly language編 程 範式 / pin1 cing4 faan6 sik1 / programming paradigm物件 導 向 編 程 / mat6 gin2 dou6 hoeng3 pin1 cing4 / object-oriented programming句法 / geoi3 faat3 / syntax- 迴圈 / wui4 hyun1 / loop
無限 迴圈 / mou4 haan6 wui4 hyun1 / infinite loop- 遞歸 / dai6 gwai1 / recursion
初 始 化 / co1 ci2 faa3 / initialize可 靠 度 / ho2 kaau3 dou6 / reliability頑健 度 / waan4 gin6 dou6 / robustness可 移植 度 / ho2 ji4 zik6 dou6 / portability可 維護度 / ho2 wai4 wu6 dou6 / maintainability可讀 度 / ho2 duk6 dou6 / readability分析 機 / fan1 sik1 gei1 / Analytical Engine
註釋
[引咗
[- ↑ 1.0 1.1 Knuth, D. E. (1997). The art of computer programming (Vol. 3). Pearson Education.
- ↑ Computer Programming.
- ↑ Kotonya, Gerald; Sommerville, Ian (1998). Requirements Engineering: Processes and Techniques. Chichester, UK: John Wiley and Sons.
- ↑ Fishbein, M. (1972). Appraising information in machine language form. The American Archivist, 35(1), 35-43.
- ↑ Manuel Carro; José F. Morales; Henk L. Muller; G. Puebla; M. Hermenegildo (2006). "High-level languages for small devices: a case study". Proceedings of the 2006 International Conference on Compilers, Architecture and Synthesis for Embedded Systems. ACM.
- ↑ Hoare, C. A. R. (1969). An axiomatic basis for computer programming. Communications of the ACM, 12(10), 576-580.
- ↑ "Single pixel change fools AI programs". BBC News. 3 November 2017.
- ↑ McShaffry, M. (2014). Game coding complete. Nelson Education.
- ↑ 9.0 9.1 Why Coding Is Still The Most Important Job Skill Of The Future. fastcompany.com.
- ↑ Bell, C. Gordon and Newell, Allen (1971), Computer Structures: Readings and Examples, McGraw–Hill Book Company, New York.
- ↑ 11.0 11.1 11.2 Background: Algorithms. 互聯
網 檔案館 嘅歸 檔,歸 檔日期 2018年 7月 3號 ,.. - ↑ Harel, David, Feldman, Yishai (2004). Algorithmics: The Spirit of Computing. Addison-Wesley.
- ↑ Aho, Alfred V.; Sethi, Ravi; Ullman, Jeffrey D. (1986). Compilers: Principles, Techniques, and Tools (1st ed.). Addison-Wesley.
- ↑ Shaffer, C. A. (2011). Data Structures & Algorithm Analysis in C++ (3rd ed.). Mineola, NY: Dover. 1.2.
- ↑ Cleaveland, J. Craig (1986). An Introduction to Data Types. Addison-Wesley.
- ↑ Downey, A., Wentworth, P., Elkner, J., & Meyers, C. (2016). How To Think Like A Computer Scientist: Learning with Python 3.
- ↑ Hennessy, John L.; Patterson, David A. Computer Organization and Design. The Hardware/Software Interface. Morgan Kaufmann Publishers.
- ↑ 10 Most Popular Programming Languages Today
- ↑ Programming Paradigms (PDF).
- ↑ Kindler, E.; Krivy, I. (2011). "Object-Oriented Simulation of systems with sophisticated control". International Journal of General Systems: 313-343.
- ↑ Lewis, John; Loftus, William (2008). Java Software Solutions Foundations of Programming Design (6th ed). Pearson Education Inc. ISBN 978-0-321-53205-3., section 1.6 "Object-Oriented Programming".
- ↑ Quick Tip: Intro to Object-Oriented Programming for Game Development.
- ↑ Jacobson, Ivar (1992). Object-Oriented Software Engineering: A Use Case-Driven Approach. Addison-Wesley.
- ↑ Thorsten Grötker, Ulrich Holtmann, Holger Keding, Markus Wloka, The Developer's Guide to Debugging, Second Edition, Createspace, 2012.
- ↑ Agans, David J. (2002). Debugging: The Nine Indispensable Rules for Finding Even the Most Elusive Software and Hardware Problems. AMACOM.
- ↑ Friedman, Daniel P.; Mitchell Wand; Christopher T. Haynes (1992). Essentials of Programming Languages (1st ed.). The MIT Press.
- ↑ Pomonis, M., Petsios, T., Jee, K., Polychronakis, M., & Keromytis, A. D. (2014, December). IntFlow: improving the accuracy of arithmetic error detection using information flow tracking. In Proceedings of the 30th Annual Computer Security Applications Conference (pp. 416-425).
- ↑ Charlesworth, A. (1979). Infinite Loops in Computer Programs. Mathematics Magazine, 52(5), 284-291.
- ↑ Carbin, M., Misailovic, S., Kling, M., & Rinard, M. C. (2011, July). Detecting and escaping infinite loops with Jolt. In European Conference on Object-Oriented Programming (pp. 609-633). Springer, Berlin, Heidelberg.
- ↑ Zeller, A. (2009). Why programs fail: a guide to systematic debugging. Elsevier. 7.5.1 Reading Uninitialized Variables.
- ↑ Institute of Electrical and Electronics Engineers (1990) IEEE Standard Computer Dictionary: A Compilation of IEEE Standard Computer Glossaries. New York, NY.
- ↑ 1990. IEEE Standard Glossary of Software Engineering Terminology, IEEE Std 610.12-1990 defines robustness as "The degree to which a system or component can function correctly in the presence of invalid inputs or stressful environmental conditions".
- ↑ Mooney, J. D. (2004). Developing portable software. In Information Technology (pp. 55-84). Springer, Boston, MA.
- ↑ Foreman, John T.; Gross, Jon; Rosenstein, Robert; Fisher, David; Brune, Kimberly (January 1997). "Maintainability Index Technique for Measuring Program Maintainability". C4 Software Technology Reference Guide: A Prototype (PDF). Software Engineering Institute. p. 231.
- ↑ "Programming 101: Tips to become a good programmer - Wisdom Geek". Wisdom Geek.
- ↑ 36.0 36.1 James L. Elshoff, Michael Marcotty, Improving computer program readability to aid modification (PDF), Communications of the ACM, v.25 n.8, p.512-521, Aug 1982.
- ↑ Toward Developing Good Programming Style.
- ↑ Tom DeMarco (1978). Structured Analysis and System Specification. New York, NY: Yourdon, 1978.
- ↑ Fuegi, J.; Francis, J. (2003). "Lovelace & Babbage and the Creation of the 1843 'notes'". IEEE Annals of the History of Computing. 25 (4): 16.
- ↑ Backus, John (October–December 1998). "The History of Fortran I, II, and III". IEEE Annals of the History of Computing. 20 (4): 68–78.
- ↑ Clements, Paul; Felix Bachmann; Len Bass; David Garlan; James Ivers; Reed Little; Paulo Merson; Robert Nord; Judith Stafford (2010). Documenting Software Architectures: Views and Beyond, Second Edition. Boston: Addison-Wesley.
- ↑ Pigoski, Thomas M., 1997: Practical software maintenance: Best practices for managing your software investment. Wiley Computer Pub. (New York).
文獻
[- A. K. Hartmann, Practical Guide to Computer Simulations, Singapore: World Scientific (2009).
- A. Hunt, D. Thomas, and W. Cunningham, The Pragmatic Programmer. From Journeyman to Master, Amsterdam: Addison-Wesley Longman (1999).
- Brian W. Kernighan, The Practice of Programming, Pearson (1999).
- Weinberg, Gerald M., The Psychology of Computer Programming, New York: Van Nostrand Reinhold (1971).
- Edsger W. Dijkstra, A Discipline of Programming, Prentice-Hall (1976).
- O.-J. Dahl, E.W. Dijkstra, C.A.R. Hoare, Structured Pogramming, Academic Press (1972).
- David Gries, The Science of Programming, Springer-Verlag (1981).
- Donald Knuth. The Art of Computer Programming, Volumes 1-4A Boxed Set. Third Edition (Reading, Massachusetts: Addison-Wesley, 2011), 3168pp. ISBN 978-0-321-75104-1, 0-321-75104-3
- Volume 1: Fundamental Algorithms. Third Edition (Reading, Massachusetts: Addison-Wesley, 1997), xx+650pp. ISBN 978-0-201-89683-1, 0-201-89683-4. Errata: [1] (2011-01-08), [2] (2017-09-18, 27th printing). Addenda: [3] (2011).
- Volume 2: Seminumerical Algorithms. Third Edition (Reading, Massachusetts: Addison-Wesley, 1997), xiv+762pp. ISBN 978-0-201-89684-8, 0-201-89684-2. Errata: [4] (2011-01-08), [5] (2017-09-18, 26th printing). Addenda: [6] (2011).
- Volume 3: Sorting and Searching. Second Edition (Reading, Massachusetts: Addison-Wesley, 1998), xiv+780pp.+foldout. ISBN 978-0-201-89685-5, 0-201-89685-0. Errata: [7] (2011-01-08), [8] (2017-09-18, 27th printing). Addenda: [9] (2011).
- Volume 4A: Combinatorial Algorithms, Part 1. First Edition (Reading, Massachusetts: Addison-Wesley, 2011), xv+883pp. ISBN 978-0-201-03804-0, 0-201-03804-8. Errata: [10] (2017-09-18, ? printing).
- Volume 1, Fascicle 1: MMIX – A RISC Computer for the New Millennium. (Addison-Wesley, 2005-02-14) ISBN 0-201-85392-2 (will be in the fourth edition of volume 1). Errata: [11] (2016-08-02).
- Volume 4, Fascicle 5: Mathematical Preliminaries Redux; Backtracking; Dancing Links. (Addison-Wesley, 2018-10-18) 320pp, ISBN 978-0-13-467179-6 (will become part of volume 4B).
- Volume 4, Fascicle 6: Satisfiability. (Addison-Wesley, 2015-12-08) xiii+310pp, ISBN 978-0-13-439760-3. Errata: [12] (2017-06-01) (will become part of volume 4B).
外 拎
[![](https://upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Wikibooks-logo.svg/40px-Wikibooks-logo.svg.png)
![](https://upload.wikimedia.org/wikipedia/commons/thumb/f/fa/Wikibooks-logo.svg/40px-Wikibooks-logo.svg.png)
![](https://upload.wikimedia.org/wikipedia/commons/thumb/9/91/Wikiversity-logo.svg/40px-Wikiversity-logo.svg.png)
- (
英文 ) GitHub,程 式 設計 者 常用 嘅協作 網 站 - (
英文 ) StackExchange,程 式 設計 者 成 日用 嘅網上 討論 區 - (
英文 ) CodeForces,程 式 設計 比 試 網 站 - (
英文 ) TopCoder,都 係 程 式 設計 比 試 網 站 - (
英文 ) Leetcode,都 係 程 式 設計 比 試 網 站