[程式教育] 該學哪一種程式語言才好?你必須先了解程式語言的7個應用領域

圖片出處:https://www.watelectronics.com/types-of-programming-languages-with-differences/

之前一再強調,學習程式語言不完全是為了將來當工程師而學的。但對初學者來說,在這麼多種程式語言中,究竟要選哪一種程式語言做學習呢?

在這之前,我們要先了解,程式語言的應用,大概有哪些領域。先看看自己對哪一個領域有興趣,不妨從該領域下手,學習一種該領域會用到的程式語言,並透過學習去完成一個小作品。

以下是依照應用領域的分類,列出該領域的幾個主要採用的程式語言。


一、網頁開發 (Web Development)

網頁(網站)開發是最普遍的一種應用,幾乎每個人每天會接觸到的,都脫離不了網頁開發的相關產品。在這裡我要特別說明,「開發」網站跟「架設」網站是兩回事,如果只是要「架設」網站,那是可以不需要學會寫程式就能做到的,因為有太多現成工具就可以達到「架設」網站這件事。關於「架設」網站的工具,我們有機會再另外寫一篇文章說明。但不論如何,網頁(網站)的基本運作原理還是要懂的。

網頁開發的部分,一般來說還區分「前端」和「後端」的開發與維護。前端開發專注於設計和構建用戶直接交互的部分,如網頁的結構、佈局和動態效果。後端開發則負責伺服器端邏輯、資料庫管理和應用程式的整合,確保網站能夠有效地處理請求和回應資料。

  • 前端開發 (Frontend Development)
    • HTML (HyperText Markup Language): 用於建立網頁的結構和內容。
    • CSS (Cascading Style Sheets): 用於設計網頁的外觀和佈局。
    • JavaScript: 用於增加網頁的互動性和動態效果。
    • TypeScript: 可以視為JavaScript 的演進版,增加了靜態類型檢查功能。
  • 後端開發 (Backend Development)
    • Java: 跨平台的物件導向程式語言,廣泛運用在各領域,包括網頁後端。
    • Python: 目前最熱門、應用最廣的程式語言。
    • Ruby: 網頁後端開發中,也是主要被選擇使用的一種。
    • PHP: 廣泛應用於網頁伺服器端開發,像最常見的架站工具WordPress,主要就是PHP開發的。
    • Node.js: Node.js不是一種程式語言,而是開發「框架」,使用JavaScript搭配該框架,是後端開發最常用的一種方式

(註:關於「程式語言」與「開發框架」的關係,之後再寫一篇文章說明)

二、資料分析和機器學習 (Data Analysis and Machine Learning)

資料分析旨在處理和解釋大量數據,找出趨勢、模式和洞見。機器學習則利用統計技術和演算法訓練模型,使其能夠進行預測和決策,應用於各種領域如金融、醫療和市場行銷。從資料中提取有價值的信息,並使用演算法來預測和優化結果。

這兩年火紅的AI工具,如ChatGPT,就是透過資料分析與機器學習,搭配自然語言的呈現結果。

  • Python: 擁有豐富的資料分析和機器學習庫,如 NumPy、Pandas、Scikit-Learn、TensorFlow、Keras。
  • R: 專門用於統計分析和資料視覺化。
  • SQL (Structured Query Language): 嚴格來說,SQL其實不算是一種程式語言,它是用於資料庫查詢和操作的特定語言。

三、行動應用程式開發 (Mobile App Development)

簡單來說,就是智慧型手機上的App開發,包括 iOS跟 Android兩大主要系統。廣泛一點的話,包括平板、智慧型穿戴裝置,都屬於這個範疇。

  • Swift: 用於 iOS 應用開發,是Apple官方設計的語言。
  • Kotlin: 用於 Android 應用開發,是Google官方設計的語言。
  • Java: 也是 Android 應用開發的主要語言,於Kotlin問世之前的Android開發所使用。
  • React Native: React Native是一種使用 JavaScript 開發的「框架」,讓開發者可以用相同的程式碼構建 iOS 和 Android 應用。

四、遊戲開發 (Game Development)

遊戲開發包括遊戲設計、圖形創作、音效設計和程式編寫。開發者需要考慮遊戲的互動性、畫面渲染和物理引擎,以提供流暢且吸引人的玩家體驗。此領域也包括跨平台遊戲的開發和測試。

  • C++: 在一些高效能的遊戲引擎,如 Unreal Engine,是採用C++語言開發的。
  • C#: 著名的Unity 遊戲引擎,在開發上是主要透過C#。
  • JavaScript: 應用廣泛的JavaScript,可以用於簡單的網頁遊戲開發。

五、嵌入式系統 (Embedded Systems)

嵌入式系統是一種專門設計用來控制電子設備的計算系統,廣泛應用於家電、醫療設備、汽車和工業機器。這些系統通常具有硬體上的資源與效能限制,需要高效的程式碼和即時反應能力。

  • C: C語言著重於記憶體管理,適合用於底層硬體控制和嵌入式系統開發。
  • C++: 相較於C語言,C++提供更高階的抽象層概念,也同樣適用於嵌入式系統。

六、自動化和腳本語言 (Automation and Scripting)

自動化和腳本語言旨在通過編寫簡單的程式或腳本來自動化日常任務,從而提高效率和減少人工錯誤。例如,系統管理員可以編寫腳本來自動備份數據,開發者可以自動化測試和部署過程。

  • Python: 在自動化測試的領域,Python是最常用被於各種自動化腳本和系統管理。
  • Bash: 用於 Unix/Linux 系統的腳本語言,也被廣泛用於自動化流程的操作配置。
  • PowerShell: 用於 Windows 系統管理和自動化。

七、系統程式設計 (Systems Programming)

系統程式設計涉及底層軟體的開發,這些軟體直接與硬體進行交互,提供其他應用程式運行的基礎。這些程式需要高度的效能和穩定性,並且經常涉及到記憶體管理和多執行緒處理。

  • C: 用於作業系統、驅動程式和高效能應用程式的開發。
  • Rust: Rust是較新的程式語言,設計用來解決C/C++中較複雜的記憶體管理在開發上可能造成的缺失,提供記憶體安全的系統程式設計選項。

呼應開頭提到的,以上僅列出程式語言的7個應用領域,和分類中相應的常用程式語言,不表示該領域中只能用這些程式語言。希望這篇文章能夠幫助初學者的你,根據自己的興趣甚至職業目標選擇合適的程式語言學習。

Read more

聽說 AI 都能寫程式了,那我還需要學程式語言嗎?

自從ChatGPT橫空問世,人們在獲取知識的方式,發生很大的改變。很多既有的知識或疑問,可以不用在透過Google等搜尋引擎,搭配正確的關鍵字,從中找到相符的結果。 有了ChatGPT,只要用聊天的方式,用人類自然語言詢問,就能在短時間統整出邏輯清晰且條理分明的結果。不論是知識的學習、文章的統整、甚至程式的撰寫,都能透過AI工具快速產生具有一定水準的成品。 那,既然AI都能幫忙寫程式,而且也寫得不錯,我還需要學習程式語言嗎?答案是「肯定」的。 AI是輔助工具,不是程式設計師 沒錯!AI能寫出不錯的程式碼,但如果你本身不懂程式設計,你如何判斷它寫出的結果,是否符合你所想要的?對懂程式的人來說,他會比較清楚該如何對AI工具「下指令」,程式設計師可以利用AI工具的輔助,節省掉實際開發與除錯的時間。 再者,要寫出一個可以應用的程式,並非如此簡單。從一開始的需求分析,到架構設計、模組化元件、單元測試等等,絕對不是透過跟AI工具講三兩句話就能產出的。 AI是透過背後龐大資料與分析模型取產生我們想要的結果,意即,它做不到「無中生有」。相較於AI,人類的優勢在於「創造」。AI工具的出現與

By 三寶爸工程師

[程式教育] 我未來不想當程式設計師,那還需要學程式語言嗎?

這個問題,最中肯又八股的答案當然是「不一定,但有學比較好」。如果問我,我肯定是建議你「最好要學」。 我換個問題,我未來不想當英文老師,那我需要學英文嗎?答案應該很清楚了! 你可能會說「不一樣啊!」請你仔細想想,學習「語言」跟「程式語言」的目的,我在 [程式教育] 學習程式語言的Why and How 這篇文章內有提到,兩者的目的一樣都在「溝通」,只是對象不同。 以目前AI發展的速度,也許不久的將來,「語言」也不需要學習了也說不定。屆時,「程式語言」的角色可能反而更吃重。並不是說你要學會用程式語言來開發軟體,而是透過學習程式語言吸取基本知識和延伸的能力。以下我列出五點,學習程式語言所能帶來的價值。 一、提升問題解決能力與創造力 學習程式設計可以培養邏輯思維和系統化解決問題的能力。這些技能在各種職業中都是非常寶貴的,無論是管理、行銷、工程還是醫療領域,遇到複雜問題時,能夠分解問題並系統地找到解決方案是非常重要的。 程式設計是一種創造性的活動,讓你能夠實現自己的想法和項目。

By 三寶爸工程師

[程式教育] 如何學習程式語言?5個推薦的免費學習平台

上一篇我們提到了3種不同的學習管道,有些管道,像是教學機構,會設計專屬的學習平台,當然是只有付費加入課程才有機會使用。不過,大部分的學習管道,其教學的內容,還是以線上既有的一些免費學習平台為主。 所以,這一篇我們就來介紹5個推薦的免費學習平台。不同的平台,其設計上針對的學習年齡層也有所不同。透過這一篇,希望讓大家在進入學習前,有一些簡單的概念,並選擇適合的平台去學習。之後我會再針對這些平台,提供對應的學習管道給大家。至於,要透過自學或是付費找教學機構學習,就依照個人需求而決定。 一、Scratch Scratch是由麻省理工學院所開發出來的一套「視覺化程式語言」開發平台。上圖就是Scratch的開發介面,透過這個開發介面,利用左方的一些控制元件(積木),將其拖曳至中間的工作區,依照順序設計出腳本,就可以讓右方那隻貓咪依照設計進行對應的動作。 這個平台是支援多國語言的,中文當然也是其一,所以學習上不用擔心語言的問題,只是需要了解這些翻譯過的控制元件和操作介面的用途,是必要花費的學習成本。這個平台,據我所知,目前大部分的小學和中學,在學校的資訊科技相關課程,都有教授這個平台。如果

By 三寶爸工程師