跳至主內容

【入行指南】我應該學習哪種 Programming Language?

【入行指南】我應該學習哪種 Programming Language?
Alex Lau 劉光曆
2022-08-16

前言

不知不覺間,開辦編程課程已經近五年了,親身培訓及提攜投身科技界的畢業生都超過 500 人,回想起每一個同學在最初學習階段,對一些常見的問題都一頭霧水,同事建議我寫幾篇關於新手入門的文章,讓有意投身業界的朋友先找到一個正確方向。

我應該學習哪種 Programming Language?

近年來人工智能、數據科學等領域變得街知巷問,大多數人即使沒有學過 Programming,也會聽聞過 Python 這個語言,於是,很多打算學習 Programming 的朋友,最先發問的多數是:我應該學習 Python 嗎?而在編程課程市場百家爭鳴下,賣花自然讚花香,總會總結 Python 有數項優點,例如「易學、用途廣泛、對工作有益」等等。不過,事實又是否如此呢?只能說是「部份正確」!其實很多語言都對新手入門十分友善,反而,學習什麼語言應該按你的需要出發,那到底應該學習什麼語言呢?

其實,大家若對「程式」產生興趣,理應是你心目中有些東西想做得到吧!所以這篇文章從學習動機出發,看看以下邊一樣是你心中想做到的事,然後我們便分析各種 Language 的入門方式、技能樹及相似程度,讓大家有一個初步了解!

希望做到 WhatsApp, Foodpanda 之類的程式

有不少朋友見到一些科技初創,隨隨便便都估值過億,自己都心思思想憑一己之力做一間初創。撇除成功初創所需要的創業知識,單單從技術角度,又應該如何入手呢?很多人以為做一個 Mobile App 就可以,還需要知道什麼嗎?

首先,這類型的應用程式不單單止用戶看到的一面,除了要考慮你會發布在哪些平台(網頁、iOS 或 Android),技術上還涉及 後端 (Backend)、資料庫 (Database)、雲端服務 (Cloud Computing) 等知識。一下子那麼多術語,到底要學什麼呢?老實說,每種技術都各有不同選擇⋯⋯資料庫有幾套、雲端服務有幾套、後端有幾套⋯⋯不過,作為入門初哥,其實我們只要學習其中一套,都可以做出一個心目中的應用程式,日後希望再開發或開拓新專案時,要學習其他工具也會相當快上手!

那麼每種技術有什麼選擇呢?可以看看以下列表(只列出常用的語言,基本上每個平台有更多語言可以有很多很多):

網站iOSAndroid後端資料庫雲端服務
JavaScriptJavaScriptJavaScriptJavaScriptMySQL (SQL)Amazon Web Services
TypeScriptTypeScriptTypeScriptTypeScriptPostgreSQL (SQL)Google Cloud Platform
DartDartPythonMongoDB (JavaScript)Microsoft Azure
C#C#C#
SwiftKotlinJava
Objective-CJavaPHP

從上表可見,除了資料庫共同是需要學習 SQL 外,每個範疇各有不同技術要學懂,幸好有部份的技術範疇是有重覆的,例如先學好 JavaScript,已經可以大概明白 網頁、iOS、Android 和 Backend 的語言,不過每個範疇除了語言外,還有工具需要學習。至於雲端服務,三個平台對新手來說分別不大,在香港來說,AWS 的市場份額暫時是最大的,所以可以選擇在 AWS 上建設你的程式。

我一般建議初學者先從 JavaScript 入手,方便專心學懂一種語言後,理解各平台的工具。然後有了基礎編程和平台相關知識,便可更上一步,學習較複雜、或平台專用的語言如 TypeScript、Swift、Kotlin 等等。

要做好一個應用程式,需要的技術可算不少,難怪初創企業不易做吧!

希望做到 Candy Crush 之類的遊戲

看來製作程式的路程還很遙遠,不如做些有趣事情吧?遊戲又如何呢?

其實製作遊戲又是另一個範疇!一個遊戲涉及 2D/3D畫面、圖像、音效、物理、遊戲邏輯、特效等等,還未說到編程,以個人之力完成一個大作實在是有難度。當然,這些範疇亦有「懶人包」輔助,在行業內之中,製作遊戲經常會用到 遊戲引擎 (Game Engine) 開始製作,遊戲引擎多數已內置畫面、圖像、音效、物理等功能,而我們的工作就主要集中在遊戲邏輯和一些額外功能方面,新手入們都能夠製作出簡單的遊戲。

最著名的遊戲引擎有兩款,一款是 Unity,另一款是 Unreal Enging。我個人主力推介 Unity,因為他比較容易學會,而且很多大作如 Cities Skylines、Fall Guys 等都是基於 Unity 而製作的。Unity 的編程語言主要是 C#,通常在學習使用 Unity 的過程時一併學會,學會 C# 後便可以製作一些簡單遊戲邏輯。Unity 亦有一個 Unity Asset Store,可以讓不懂音效或 3D 的你下載一些高手們製作好的工具包。

當你完全掌握做好一個簡單遊戲後,可以透過編程慢慢為你的遊戲編寫更具個性的遊戲方式。不過有一點需要先提醒,如果你希望做到一些多人對戰的遊戲,或許你需要更多網絡和資料庫知識,才能做得到啊!

希望寫程式買到演唱會門票

上述兩項目標雖然常見,但複雜程度都甚為頗大,所以難度都不小(亦所以行業中長期人手不足,培訓自學亦需時呢!),學會後的確有機會能找到一份 Programmer 工作。不過如果你心目中只想做些炒賣、搶到心儀的演唱會門票、下載一些公開數據,這個卻沒有你想像中那麼難。

其實搶門票還是下載數據,在編程中都是「網路爬蟲」的工作,幾乎大部份能夠在網頁中看到的數據,都能夠透過程式下載,或者透過程式去遞交表格。如果你有看到上述的列表,可以得知網頁中常用的 Programming Language 就是 JavaScript,而除了 Programming Language 外,針對網頁還需要學會 HTML 和 CSS,這兩款是架構網站的 Language (但不是 Programming),若然要進行爬蟲工作,其實就有如「知己知彼」,你需要先學會網站是如何組成,才能分析和爬到數據。

我亦個人推介學會 JavaScript、HTML、CSS 後,可以試試 Chrome/Edge 的外掛 TamperMonkey,透過在這工具編寫一些簡單 JavaScript,已經能夠令你快人一步,買到心儀的門票或波鞋!

希望協助日常 Office 工作

說到想用 Programming 協助日常 Office 工作,通常你對 Word、Excel 等文書軟件已經有一定認識,但往往想更進一步學會更多自動化也會碰壁。大多人都知道學會 VBA 可於 Excel 中作自動化,但令人痛恨的是 VBA 是上世代的產物,來到 2022 年還在學習 VBA 好像有點過時,而且學會後亦未必能夠轉移至其他平台發揮。

如果你的辦公環境對資訊安全是非常嚴謹,或許你也需要依賴公司的政策去決定,如果除了 Excel 外什麼工具都不允許,遺憾的是 VBA 的確是你唯一選擇。

如果你是做決策的一位,或者公司有一些工具給你做自動化,那麼便恭喜你!現今的確有不少常見的工具輔助工具,我們更會稱呼能夠簡單開發工具的同事為「公民開發者」(Citizen Developer),與專業開發者不同,公民開發者的正職可能是 HR、會計、文員,但他們具有比一般文員更強的 Programming 開發知識,於日常工作在不違反公司資訊安全政策下,編寫出方便工作的工具。

常見的公民開發者工具有很多,甚至有人說 Google Form 也是工具之一。但如果你希望在工作上有些自動化,公民開發者中其中有 Business Process Automation (BPA) 和 Robotic Process Automation (RPA) 都是近年備受注目的。著名的有 AgilePoint、UIPath、Microsoft Power Automate 等等,這些工具好像有一個神來之手幫你一把,把一些 流程複雜 或 流程重覆 的工序變得自動化,由電腦機械人幫你完成,而且更符合企業的安全標準,不怕員工們把資料外洩。

那「公民開發者」需要知道什麼語言呢?答案是沒有!很多「公民開發者」工具都是 低代碼 (Low Code) 或 無代碼 (No Code),用家不需要編寫一句句的語言,而是只需要學會 Computational Thinking,安排好程序和邏輯,就可以把工作自動化起來⋯⋯如果希望學會像「電腦般的思考」,我個人建議學習 JavaScript 或 C#,因為這個跟大部份 辦公室或 RPA BPA 軟件 都相容。

希望做出有如 AlphaGo 一樣的人工智能

最後最後,終於來到用得著 Python 的用途,就是如果你希望透過 Programming 製造人工智能相關的程式,那麼 Python 可算是最佳的選擇。

約十年前,數據分析、數據科學 的主流其實集中在 R 這個語言上,大部份的工具都以 R 編寫。但後來人們發現 R 和其他語言不太相同,名氣不太高,然後 Python 本身雖然不算是最著名,卻有不少高手為 Python 寫了人工智能和數據科學相關的程式,如 Pandas、scikit-learn 等等,令整個社群忽然注視在 Python 身上,而且在近年越做越成功。

所以如果你的興趣集中在 AI, Machine Learning, Data Science 之上,我絕對建議先從 Python 入手,但由於 R 仍然有著非常悠久的數據相關歷史,Python 之後學習 R 也是不錯的選擇!

我有決定了,怎樣學?

如果你看完以上的文章,對自己的發展有一定了解,又想知道怎樣學到相關語言,請留意我的下一篇入行指南!

留言

閱讀更多

如何成為 Programmer (二):其實入行不難

如何成為 Programmer (二):其實入行不難

如何成為 Programmer (二):其實入行不難
Alex Lau 劉光曆
2018-11-02

續上一篇講及 Programmer 前景不錯之後,可能你也心思思想投身這個行業,但倘若你本來不是 CS Degree 畢業,也不是理科生,你還以為 Programmer 或 Coding 都與你無緣了。不過,根據很多的調查發現,原來這種種背景都絕對不是問題!


軟件工程師成長手冊

軟件工程師成長手冊

軟件工程師成長手冊
Gordon Lau 劉偉中
2019-04-29

筆者經常都强調軟件工程師有高下之分,不論技術或是解難能力都可以隨時日改善,亦曾大力鞭撻專家級初學者的無知,對軟件開發造成破壞。 初出茅蘆的軟件工程師及編程初學者想要改善自己技術,在茁壯成長的話,對自己技術層面有一個準確評價是至關重要,以免墮入「識少少,扮代表」的認知偏差。


回應業界部份人士對 Coding Bootcamp 常見之質疑

回應業界部份人士對 Coding Bootcamp 常見之質疑

回應業界部份人士對 Coding Bootcamp 常見之質疑
Gordon Lau 劉偉中
2020-11-06

筆者由開始在Coding Bootcamp一行創業以來,固然在教學上得到不少滿足感,始終這一行是為了幫助同學轉行而存在的,因此當同學成功找到一份軟件工程師的工作,滿足感的確是無與倫比。 然而,在這趟旅程之上,常常都收到不少質疑,絕大多數更是來自於業界同行。 因此,本文就集中回應一下,解答一下大家的疑惑。


一技傍身,世界通行:Programming為何全球通行?

一技傍身,世界通行:Programming為何全球通行?

一技傍身,世界通行:Programming為何全球通行?
Gordon Lau 劉偉中
2021-02-23

近一兩年由於政治局勢、肺炎疫情,大家閒賦在家,不知是否因為在家工作的緣故,很多人都乘勢進修學習新技能。筆者認為,學習新技能,當然要以個人興趣為最大前題,因為學習源自於興趣,人只有在學習自己最有興趣的事情上,才會有動力去不斷改善。


索取課程大綱
提交後, 請檢查你的電郵
hello@tecky.iot.me/TeckyAcademy
+852 9725 6400+44 07570 549084+1 (647) 556-3084
商界展關懷 2019-2022
英國頒證機構 TQUK 認可中心
aws_partner
薯片叔叔共創社 重塑教育挑戰大獎
© 2022 Tecky Academy Limited