前言

我目前的程式經驗大約六年,積木語言和標記語言不算只算正經的程式。

從前後端開發、資料分析、演算法加速、機器學習、系統程式開發、和一些實驗性程式語言都碰過,算是有一些經驗了,因此我想我應該能給還沒碰過程式的人一些方向。

AI 寫得比大部分人好還該學嗎?

先說我認爲的結論:

如果只是想賺快錢或做簡單的 demo 類型 app 可以不用,如果想弄清楚電腦在做什麼、所有基礎設施和 app 是怎麽一步一步達到像魔法一樣運作的,甚至重現或貢獻他們,那還是必須要學。

目前爲止 AI 在小規模 demo 和解決單一問題上遠超人類,但面對沒有經驗法則支撐的領域問題,或是規模大到超出 context window 時,AI 能力會被快速削弱,甚至完全失效。

也許未來這個問題可以被解決,透過更好的模型架構或是更大的 context window 還有自我驗證(例如邊開發邊寫單元測試)但目前來說還是有不少限制的。

前面這種說法可能常聽到有人說,但通常他們都不會舉例,因此我想舉一些實際的專案來說明:

LLVM 是一個編譯器工具鏈,程式碼相依的程度和規模本身都大到難以想象,AI 在這種專案上可能只能做到微觀的 bug 修復或是小功能的實作,但要真正理解整個專案的架構和設計,甚至是重現或貢獻新的功能,還是需要人類的智慧和經驗。(再說目前正常人也沒有錢跑那麼多 context) 不止是單純的 context window 大小塞不下,還有專案本身依賴鍊條的複雜度和需要的經驗法則,AI 目前還無法完全掌握這些。

第一次學程式該選什麼語言?

從目的來分類:

  • 想學電腦運作原理:C 語言,因爲它是許多作業系統的基礎,能讓你了解電腦底層的運作方式。 如果想做正經的系統程式開發,我會推薦現代 C++ 和 Rust 二選一,現代 C++ 透過零成本抽象和豐富的標準庫讓你能夠寫出高效又安全的程式,Rust 則是以安全性為核心設計,能夠幫助你避免許多常見的記憶體錯誤。 現代 C++ 是我最喜歡的語言,因爲他在保留上層抽象功能的同時又給予無與倫比的裸機效能,有優雅抽象又能精準控制底層行爲,不論是科學運算還是金融領域高頻交易機構都很愛用。

  • 想賺錢:JavaScript 或 TypeScript,現代即使是桌面 app 也常透過 Electron 這類框架,因此網頁前端可以說到處都是,學了也不會過時。 但我自己認爲 TS 更值得學,用型別檢查幫你兜底,也是新的 AI app 常用。

  • 想學 AI:Python,因爲它有豐富的機器學習和深度學習庫,如 TensorFlow、PyTorch 和 Triton,讓你能夠快速上手 AI 開發。 進階一點的話可以學 CuPy 甚至 CUDA C/C++ 做效能上的最佳化,但這比較涉及底層,只是要學理論和基本實作的話直接用 Python 的框架就好。

  • 特定領域 這邊太多直接上表格

領域推薦語言理由
數學和函數式設計HaskellHaskell 在數學和 Functional 的特性比其他程式語言更加強大
數學理論形式化證明Lean4Lean4 是一個現代的定理證明器
資料分析PythonPython 有豐富的資料分析庫,如 Pandas、NumPy 和 Matplotlib,讓你能夠輕鬆處理和視覺化資料
遊戲開發C#Unity 是目前最流行的遊戲引擎,而 C# 是 Unity 的主要開發語言,如果要更專業的大廠可能會用 Unreal Engine,那就要碰 C++
區塊鏈智慧合約開發Solidity以太坊平台上最常用的智慧合約語言,能夠讓你開發和部署智慧合約
高併發系統開發GoGo 是 GC 語言,比系統程式好寫很多,併發效能也算 GC 語言中數一數二
高併發程式設計GleamGleam 是一個現代的函數式程式語言,專為高併發系統設計,能夠讓你寫出高效又安全的併發程式
  • 私心推薦:說到 AI,其實那些訓練模型的 Python 底層算子很多都是用 C++ 寫,在效能關鍵甚至會使用異質運算(例如 GPU)來加速。 因此這時候 CUDA/HIP 就是必需品(需要有 C++ 基礎),甚至可以使用 Kokkos 這類跨平台的 C++ 庫來寫出同時支援 CPU 和不同廠商 GPU 的高效能程式。

如果有機會我再把效能工程和異質運算的部分寫成一篇文章,因爲我最近剛好有在做這方面的研究,覺得很有趣。

結論

我的話就學現代 C++。

其他參考前文哈哈。