{"content_id":"zkrgx4ojs2","slug":"vibe-coding-programming-language-basics","locale":"zh-hant","schema_type":"TechArticle","category":"knowledge_base","category_name":"知識庫","title":"氛圍編碼入門程式語言概念整理","summary":"在氛圍編碼中，比起語言名稱，理解程式在哪裡執行及如何處理資料更有幫助。可了解程式設計基礎、各語言的選擇標準，以及 AI 生成程式碼的驗證範圍。","sponsorship_disclosure":null,"affiliate_disclosure":null,"commerce_disclosure":null,"author":{"name":"injoys","url":"https://injoys.com/ko/about"},"key_points":["網頁開發從區分 HTML、CSS、JavaScript 的角色開始。","TypeScript 提供執行前的型別檢查，但不會自動驗證外部輸入。","Rust 的所有權是記憶體管理規則，並非能防範所有安全性錯誤的機制。","Mojo 是針對 CPU 與 GPU 高效能運算設計的語言。","AI 生成的程式碼必須透過執行與測試，確認是否符合需求。"],"content_markdown":"氛圍式程式設計需要具備區分語言用途與執行位置的基礎知識。開發網頁可從 JavaScript 和 TypeScript 開始。處理資料時，請考慮 Python。Rust 和 Mojo 則用於系統開發與高效能運算。\n\n效能數據以 Microsoft 於 2025 年 3 月 11 日發布的資料為準。\n\n## 為什麼氛圍式程式設計需要語言基礎\n\n氛圍式程式設計是以自然語言需求為核心，與 AI 一起撰寫程式碼的開發方式。開發者會觀察生成程式的執行結果，再修改需求。自然語言提出的需求，最終也必須落實為能實際執行的程式碼。\n\n語言基礎能幫助你具體描述所需功能，也有助於找出錯誤發生的位置。入門時，與其背熟所有語言的語法，不如先分清楚各自的用途。\n\n- 執行位置：瀏覽器、伺服器、智慧型手機、作業系統內部\n- 輸入：使用者輸入的值，或從外部接收的資料\n- 處理：計算、搜尋、分類等程式要執行的工作\n- 輸出：畫面顯示、建立檔案、儲存資料\n- 失敗條件：空白輸入、格式錯誤、連線中斷\n\n## 從變數與型別開始認識基本概念\n\n變數與型別是說明程式處理何種資料的基礎。條件陳述式與迴圈決定處理順序。函式則將相關工作整合起來，方便重複使用。\n\n| 概念 | 簡單定義 | 說明功能時的例子 |\n| --- | --- | --- |\n| 變數 | 為值命名，以便參照的方式 | 用來儲存搜尋關鍵字的名稱 |\n| 型別 | 關於值的種類與允許運算的規則 | 數量是數字，標題是字串 |\n| 條件陳述式 | 根據條件選擇要執行工作的語法 | 標題為空時拒絕儲存 |\n| 迴圈 | 對多個對象執行相同工作的語法 | 在畫面上顯示清單中的每個項目 |\n| 函式 | 為執行特定工作而整合的程式碼 | 檢查輸入的函式 |\n| 資料結構 | 組織資料的方式 | 有順序的清單、透過名稱查找的值 |\n| 物件 | 將相關狀態與行為整合表達的單位 | 貼文的標題與修改功能 |\n| 例外處理 | 處理執行期間所發生錯誤的方式 | 無法讀取檔案時顯示錯誤提示 |\n| API | 程式之間交換功能或資料的約定 | 向伺服器請求搜尋結果 |\n| 相依性 | 程式使用的外部程式碼或工具 | 日期處理程式庫 |\n\n靜態型別檢查是在執行前檢查型別使用方式的機制。動態型別語言也會區分值的型別。動態型別並不代表資料沒有種類之分。\n\n## 為什麼從機器語言轉向高階語言\n\n程式語言的發展，是持續減少人類必須表達之工作細節的過程。機器語言是處理器執行指令的表達形式。組合語言則為這些指令加上人類可讀的符號。\n\n組合語言與處理器的指令集密切相關。更換零組件並不代表所有程式碼都必須重寫。移轉到不相容的指令集時，修改的負擔才會增加。\n\n| 語言或發展方向 | 試圖解決的問題 | 應記住的概念 |\n| --- | --- | --- |\n| 機器語言、組合語言 | 向硬體傳達要執行的工作 | 與指令集直接相關 |\n| Fortran | 以接近數學公式的方式表達科學計算 | 數值計算與編譯器 |\n| COBOL | 以易讀格式處理企業業務資料 | 以帳務、交易處理為核心的表達方式 |\n| Lisp | 使用符號與串列進行計算 | 早期 AI 研究與以函式為核心的表達方式 |\n| C | 有效率地撰寫系統軟體 | 記憶體控制與可攜性 |\n| SQL | 處理關聯式資料庫中的資料 | 宣告所需結果的查詢 |\n| C++ | 大型程式的結構化與資源管理 | 類別與多種程式設計方式 |\n| Java | 在執行環境不同的系統之間移植程式 | JVM 與位元組碼 |\n\nFortran 於 1957 年在 IBM 問世。Lisp 在 1950 年代後期隨著 AI 研究一起發展。COBOL 則源自 1959 年開始的共同設計工作。\n\nC 是隨著 Unix 開發而發展的語言，對將軟體移植至其他機型有所貢獻。不過，依賴作業系統與硬體的程式碼仍需另外修改。\n\n物件導向是將相關資料與行為組織成物件的方式。C++ 是支援物件導向的語言，但物件導向這個概念本身並不是由 C++ 創造的。\n\n## 編譯器與直譯器的差別\n\n編譯器是將程式碼轉換成另一種表達形式的程式。轉換結果可能是機器語言，也可能是位元組碼等中間執行格式。\n\n直譯器會一邊解讀程式碼或中間表示形式，一邊執行。實際的語言實作也可能同時使用編譯與直譯。若只把語言分成快速的編譯型與緩慢的直譯型，並不準確。\n\n| 執行相關概念 | 作用 | 代表案例 |\n| --- | --- | --- |\n| 預先編譯 | 執行前產生目標程式碼 | C、Rust 常見的執行檔建置方式 |\n| 位元組碼 | 由執行環境處理的中間指令格式 | Java 位元組碼、CPython 位元組碼 |\n| 直譯器 | 一邊解讀程式碼或中間指令，一邊執行 | CPython 的位元組碼執行 |\n| JIT 編譯 | 在執行期間將所需程式碼轉換為機器語言 | 多種 JVM 與 JavaScript 引擎 |\n| 執行環境 | 提供程式執行所需的功能 | JVM、Node.js |\n\nCPython 是廣泛使用的 Python 實作，會將原始碼編譯為位元組碼後執行。若只把 Python 說成每次逐行翻譯原始碼的語言，就是錯誤的。\n\nJava 的 JVM 是執行位元組碼的環境。這種結構有助於在不同作業系統上執行程式碼。實際相容性也會受到 JVM 版本與外部程式庫的影響。\n\n## 網頁畫面與伺服器有什麼不同？\n\n前端負責使用者接觸的畫面與互動。後端在伺服器上處理請求。資料庫則負責儲存與查詢所需資料。\n\nHTML 是表達文件結構的標記語言。CSS 指定畫面的樣式與版面配置。JavaScript 則實作條件判斷與使用者操作的處理。\n\n| 名稱 | 分類 | 主要用途 |\n| --- | --- | --- |\n| HTML | 標記語言 | 標題、段落、輸入欄位等文件結構 |\n| CSS | 樣式表語言 | 色彩、間距、畫面配置 |\n| JavaScript | 程式語言 | 瀏覽器互動與伺服器處理 |\n| TypeScript | 為 JavaScript 加入型別系統的語言 | 執行前檢查錯誤與管理程式碼 |\n| React | 使用者介面程式庫 | 以可重複使用的元件建構畫面 |\n| Node.js | JavaScript 執行環境 | 在瀏覽器之外執行 JavaScript |\n| Next.js | 以 React 為基礎的框架 | 網頁應用程式的頁面架構與伺服器功能 |\n| PHP | 程式語言 | 在伺服器上產生動態網頁回應 |\n| SQL | 資料庫語言 | 查詢、新增、修改、刪除資料 |\n\nReact、Node.js、Next.js 並不是同一類工具。程式庫是可取用所需功能的程式碼集合。框架則連應用程式的組織方式也一併提供。執行環境是程式碼執行的環境。\n\n## 依用途比較語言\n\n請根據要製作的成果與既有執行環境選擇語言。下表列出評估各種語言時的典型切入點。每種語言並非只能執行表中列出的工作。\n\n| 想製作的成果 | 優先考慮的語言 | 選擇前應確認的事項 |\n| --- | --- | --- |\n| 在瀏覽器中使用的網頁應用程式 | JavaScript、TypeScript | HTML、CSS 基礎與畫面建構工具 |\n| 檔案整理、工作自動化 | Python | 輸入檔案格式與部署環境 |\n| 資料分析、AI 模型應用 | Python | 所需的分析與模型程式庫 |\n| 網路伺服器、維運工具 | Go | 並行處理架構與既有系統整合 |\n| 以 JVM 為基礎的業務系統 | Java、Kotlin | 與既有程式碼及程式庫的相容性 |\n| 以 iOS 為主的應用程式 | Swift | Apple 開發工具與平台功能 |\n| 以 Android 為主的應用程式 | Kotlin | Android 開發工具與既有應用程式架構 |\n| 需要控制記憶體的系統 | C、C++、Rust | 效能需求與安全性驗證能力 |\n| CPU、GPU 運算最佳化 | Mojo | 支援的硬體與所需運算功能 |\n| 關聯式資料處理 | SQL | 各資料庫產品的語法差異 |\n\nPython 的應用廣度也與程式庫生態系有關。NumPy 為了提升速度，會使用經過編譯的程式碼。並非所有以 Python 撰寫的計算都只透過 Python 程式碼執行。\n\nGo 將並行支援納入語言設計。並行是讓多項工作一起推進的組織方式。平行則是多項工作實際同時執行的狀態。寫了並行程式碼，並不代表計算速度就會自動加快。\n\n## TypeScript、Rust、Mojo 的差異\n\nTypeScript、Rust、Mojo 要解決的問題各不相同。TypeScript 協助檢查 JavaScript 程式碼的型別。Rust 對記憶體管理設有嚴格規則。Mojo 則著重高效能運算與硬體運用。\n\n| 比較項目 | TypeScript | Rust | Mojo |\n| --- | --- | --- | --- |\n| 核心關注點 | 型別檢查與程式碼管理 | 記憶體安全性與系統控制 | CPU、GPU 高效能運算 |\n| 代表用途 | 網頁應用程式、伺服器應用程式 | 系統工具、注重效能的元件 | AI 基礎設施、運算核心 |\n| 應先理解的概念 | JavaScript 與資料型別 | 所有權、借用、生命週期 |\n| 需另外確認的部分 | 外部輸入與業務規則 | unsafe 程式碼與邏輯錯誤 | Python 整合與硬體支援 |\n\n### TypeScript 的型別檢查\n\nTypeScript 為 JavaScript 加入靜態型別檢查，有助於在執行前找出型別使用錯誤的程式碼。透過型別推論，部分宣告的型別可以自動判定。\n\n不必為每個變數手動標註型別。型別註記會在一般的 JavaScript 轉換過程中被移除。僅有型別宣告，並不會產生執行期間的輸入檢查。\n\n### Rust 的所有權與記憶體安全性\n\n所有權是決定由誰管理值所占記憶體的規則。借用則是在不轉移所有權的情況下參照值的方式。編譯器會檢查相關規則，以預防記憶體錯誤。\n\nRust 的安全性保證以實作正確為前提。在 unsafe 程式碼中，部分安全條件由撰寫者負責。語言並不會連計算式或存取權限的錯誤也自動阻止。\n\n### Mojo 與 Python 的關係\n\nMojo 是使用類似 Python 語法的獨立語言。它支援撰寫 CPU 與 GPU 的高效能程式碼，也提供與 Python 程式碼連接的互通功能。\n\n不能假設既有 Python 程式碼可以原封不動地移轉。請在準備安裝的 Mojo 版本文件中確認所需功能。若要使用 GPU，也必須符合支援裝置與驅動程式的條件。\n\n## 語言介紹中常見的錯誤\n\n簡短的語言介紹容易省略適用條件，也必須區分歷史事實與現有功能。以下列出可能影響語言選擇判斷的常見誤解。\n\n| 常見說法 | 正確理解 |\n| --- | --- |\n| JavaScript 是 Java 的網頁版 | 兩者是不同的語言 |\n| HTML 與 CSS 都在 1991 年問世 | CSS1 的 W3C 建議標準發布於 1996 年 12 月 17 日 |\n| Kotlin 是 Google 開發的語言 | 開發者是 JetBrains，Google 則在 Android 上提供支援 |\n| C 程式碼重新編譯後就能在任何地方執行 | 依賴作業系統、硬體的部分可能需要修改 |\n| Python 目前人氣排名第 1 | 必須有調查機構、時間點與統計方式才能判斷 |\n| 使用 Rust 就能解決所有安全問題 | 記憶體安全性與存取權限驗證是不同問題 |\n| 使用 Mojo 就能讓所有 Python 工作變快 | 需要依工作、實作與硬體進行測量 |\n| bug 一詞源自昆蟲事件 | 該事件是讓既有用語廣為人知的案例 |\n\n著名的發現昆蟲紀錄，是 1947 年 Harvard Mark II 的案例。Smithsonian 說明，這起事件有助於相關用語的普及。若將其介紹為 ENIAC 的案例，或說成該用語的最初起源，都不準確。\n\n## 應該如何解讀效能數據？\n\n效能數據只能針對實際測量的工作來解讀。編譯時間與完成後應用程式的執行速度，是不同的指標。開發工具變快，並不代表網頁也會以相同比例變快。\n\nMicrosoft 宣布將 TypeScript 工具轉為原生實作。2025 年 3 月 11 日發布的資料中，列出了各專案的測量值。以下是該次發布中的 VS Code 程式碼庫案例。\n\n| 測量對象 | 既有實作 | 原生實作 | 公布的速度提升 |\n| --- | --- | --- | --- |\n| VS Code 程式碼庫的 TypeScript 編譯處理 | 77.8 秒 | 7.5 秒 | 10.4 倍 |\n\n在公布的條件下，處理時間縮短為 **7.5 秒**。計算兩者差距，這個案例每次處理減少了 70.3 秒。這並不代表所有專案都會得到相同結果。\n\n比較 Python 與 C 的速度時，也請採用相同原則。必須確認是否使用相同的輸入與演算法執行。編譯選項與使用的程式庫也是比較條件。未交代執行環境的數字，很難當成通用的速度倍率。\n\n## 型別檢查與外部輸入驗證\n\n即使通過型別檢查，仍需另外確認外部資料的內容。檢視 AI 生成的程式碼時，經常會忽略這項差異。型別宣告表達的是程式預期接收的值的形式。\n\n假設有個網頁應用程式將數量宣告為數字型別，外部 API 實際傳來的卻可能是字串。即使標上型別名稱或使用型別斷言，也不會驗證該值。必須有在執行期間檢查資料的程式碼。\n\n| 檢查階段 | 檢查內容 | 通過後仍存在的問題 |\n| --- | --- | --- |\n| 型別檢查 | 程式碼內部的型別使用方式 | 外部實際傳入的值 |\n| 輸入驗證 | 資料格式與允許範圍 | 是否為使用者獲准執行的操作 |\n| 權限檢查 | 請求者的存取權限 | 結果是否符合業務規則 |\n| 功能測試 | 預期輸入所產生的實際結果 | 未經測試的條件 |\n\n這張表是依據型別移除與記憶體安全性的適用範圍建立的檢視架構，區分了語言能保證的部分，以及服務必須檢查的部分。請向 AI 分別提出各階段的驗證需求。\n\n## 如何向 AI 說明功能\n\n提出功能需求時，請同時寫出輸入與預期結果。若只決定程式名稱，很容易遺漏運作條件。如果已有專案，也請告知正在使用的語言與版本。\n\n1. 寫出使用環境。\n2. 說明要處理的輸入形式。\n3. 決定正常輸入應產生的結果。\n4. 決定空值與錯誤輸入的處理方式。\n5. 同時要求說明修改原因與確認方法。\n\n以下是拆分需求的提示詞範例。請根據專案調整實際檔案內容。生成的結果必須親自執行確認。\n\n```text\n請先確認既有專案的語言與執行環境。\n從 CSV 檔案讀取有標題的資料列，並以清單顯示。\n若缺少必要欄位，請顯示錯誤訊息。\n請另外提示標題為空的資料列。\n請區分外部輸入驗證與畫面顯示的程式碼。\n請先確認能否使用既有相依套件實作。\n請說明修改的部分與測試方法。\n```\n\n發生錯誤時，請一併提供重現條件。錯誤訊息中有能縮小問題發生範圍的線索。GitHub 的 Copilot 文件也要求檢視生成的程式碼。在採用程式碼之前，必須先確認執行結果。\n\n## 入門學習與課程選擇標準\n\n入門學習可以根據想完成的工作，從較小範圍開始。若是網頁開發，可以先試著連結畫面結構與互動行為。若是自動化，則適合先確認檔案輸入與結果儲存。\n\n1. 選擇一種適合目標成果的語言。\n2. 學習變數、型別、條件陳述式、迴圈與函式。\n3. 撰寫小功能，並比較執行結果。\n4. 輸入錯誤資料，確認失敗時的行為。\n5. 試著用自己的話說明修改程式碼的原因。\n\n選擇課程時，除了成果畫面，也請確認驗證內容。可以查看是否有重現與修正錯誤的實作練習。是否註明使用版本與執行環境，也是應確認的項目。\n\n- 程式碼說明：說明生成函式之輸入與輸出的過程\n- 錯誤處理：閱讀錯誤訊息並縮小原因範圍的練習\n- 資料驗證：處理外部輸入與失敗條件的範例\n- 可重現性：能在相同環境下再次執行的指引\n\n各語言的定義可在各專案的官方文件中確認。TypeScript Handbook 說明了型別移除。Rust 官方書籍分別介紹所有權與 unsafe。請在 Mojo Manual 中確認語言功能與 Python 整合的範圍。","content_html":"\u003cp\u003e氛圍式程式設計需要具備區分語言用途與執行位置的基礎知識。開發網頁可從 JavaScript 和 TypeScript 開始。處理資料時，請考慮 Python。Rust 和 Mojo 則用於系統開發與高效能運算。\u003c/p\u003e\n\u003cp\u003e效能數據以 Microsoft 於 2025 年 3 月 11 日發布的資料為準。\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#%E7%82%BA%E4%BB%80%E9%BA%BC%E6%B0%9B%E5%9C%8D%E5%BC%8F%E7%A8%8B%E5%BC%8F%E8%A8%AD%E8%A8%88%E9%9C%80%E8%A6%81%E8%AA%9E%E8%A8%80%E5%9F%BA%E7%A4%8E\" class=\"anchor\" id=\"為什麼氛圍式程式設計需要語言基礎\"\u003e\u003c/a\u003e為什麼氛圍式程式設計需要語言基礎\u003c/h2\u003e\n\u003cp\u003e氛圍式程式設計是以自然語言需求為核心，與 AI 一起撰寫程式碼的開發方式。開發者會觀察生成程式的執行結果，再修改需求。自然語言提出的需求，最終也必須落實為能實際執行的程式碼。\u003c/p\u003e\n\u003cp\u003e語言基礎能幫助你具體描述所需功能，也有助於找出錯誤發生的位置。入門時，與其背熟所有語言的語法，不如先分清楚各自的用途。\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e執行位置：瀏覽器、伺服器、智慧型手機、作業系統內部\u003c/li\u003e\n\u003cli\u003e輸入：使用者輸入的值，或從外部接收的資料\u003c/li\u003e\n\u003cli\u003e處理：計算、搜尋、分類等程式要執行的工作\u003c/li\u003e\n\u003cli\u003e輸出：畫面顯示、建立檔案、儲存資料\u003c/li\u003e\n\u003cli\u003e失敗條件：空白輸入、格式錯誤、連線中斷\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\n\u003ca href=\"#%E5%BE%9E%E8%AE%8A%E6%95%B8%E8%88%87%E5%9E%8B%E5%88%A5%E9%96%8B%E5%A7%8B%E8%AA%8D%E8%AD%98%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5\" class=\"anchor\" id=\"從變數與型別開始認識基本概念\"\u003e\u003c/a\u003e從變數與型別開始認識基本概念\u003c/h2\u003e\n\u003cp\u003e變數與型別是說明程式處理何種資料的基礎。條件陳述式與迴圈決定處理順序。函式則將相關工作整合起來，方便重複使用。\u003c/p\u003e\n\u003cdiv class=\"overflow-x-auto\"\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003e概念\u003c/th\u003e\n\u003cth\u003e簡單定義\u003c/th\u003e\n\u003cth\u003e說明功能時的例子\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"概念\"\u003e變數\u003c/td\u003e\n\u003ctd data-label=\"簡單定義\"\u003e為值命名，以便參照的方式\u003c/td\u003e\n\u003ctd data-label=\"說明功能時的例子\"\u003e用來儲存搜尋關鍵字的名稱\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"概念\"\u003e型別\u003c/td\u003e\n\u003ctd data-label=\"簡單定義\"\u003e關於值的種類與允許運算的規則\u003c/td\u003e\n\u003ctd data-label=\"說明功能時的例子\"\u003e數量是數字，標題是字串\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"概念\"\u003e條件陳述式\u003c/td\u003e\n\u003ctd data-label=\"簡單定義\"\u003e根據條件選擇要執行工作的語法\u003c/td\u003e\n\u003ctd data-label=\"說明功能時的例子\"\u003e標題為空時拒絕儲存\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"概念\"\u003e迴圈\u003c/td\u003e\n\u003ctd data-label=\"簡單定義\"\u003e對多個對象執行相同工作的語法\u003c/td\u003e\n\u003ctd data-label=\"說明功能時的例子\"\u003e在畫面上顯示清單中的每個項目\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"概念\"\u003e函式\u003c/td\u003e\n\u003ctd data-label=\"簡單定義\"\u003e為執行特定工作而整合的程式碼\u003c/td\u003e\n\u003ctd data-label=\"說明功能時的例子\"\u003e檢查輸入的函式\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"概念\"\u003e資料結構\u003c/td\u003e\n\u003ctd data-label=\"簡單定義\"\u003e組織資料的方式\u003c/td\u003e\n\u003ctd data-label=\"說明功能時的例子\"\u003e有順序的清單、透過名稱查找的值\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"概念\"\u003e物件\u003c/td\u003e\n\u003ctd data-label=\"簡單定義\"\u003e將相關狀態與行為整合表達的單位\u003c/td\u003e\n\u003ctd data-label=\"說明功能時的例子\"\u003e貼文的標題與修改功能\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"概念\"\u003e例外處理\u003c/td\u003e\n\u003ctd data-label=\"簡單定義\"\u003e處理執行期間所發生錯誤的方式\u003c/td\u003e\n\u003ctd data-label=\"說明功能時的例子\"\u003e無法讀取檔案時顯示錯誤提示\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"概念\"\u003eAPI\u003c/td\u003e\n\u003ctd data-label=\"簡單定義\"\u003e程式之間交換功能或資料的約定\u003c/td\u003e\n\u003ctd data-label=\"說明功能時的例子\"\u003e向伺服器請求搜尋結果\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"概念\"\u003e相依性\u003c/td\u003e\n\u003ctd data-label=\"簡單定義\"\u003e程式使用的外部程式碼或工具\u003c/td\u003e\n\u003ctd data-label=\"說明功能時的例子\"\u003e日期處理程式庫\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/div\u003e\n\u003cp\u003e靜態型別檢查是在執行前檢查型別使用方式的機制。動態型別語言也會區分值的型別。動態型別並不代表資料沒有種類之分。\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#%E7%82%BA%E4%BB%80%E9%BA%BC%E5%BE%9E%E6%A9%9F%E5%99%A8%E8%AA%9E%E8%A8%80%E8%BD%89%E5%90%91%E9%AB%98%E9%9A%8E%E8%AA%9E%E8%A8%80\" class=\"anchor\" id=\"為什麼從機器語言轉向高階語言\"\u003e\u003c/a\u003e為什麼從機器語言轉向高階語言\u003c/h2\u003e\n\u003cp\u003e程式語言的發展，是持續減少人類必須表達之工作細節的過程。機器語言是處理器執行指令的表達形式。組合語言則為這些指令加上人類可讀的符號。\u003c/p\u003e\n\u003cp\u003e組合語言與處理器的指令集密切相關。更換零組件並不代表所有程式碼都必須重寫。移轉到不相容的指令集時，修改的負擔才會增加。\u003c/p\u003e\n\u003cdiv class=\"overflow-x-auto\"\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003e語言或發展方向\u003c/th\u003e\n\u003cth\u003e試圖解決的問題\u003c/th\u003e\n\u003cth\u003e應記住的概念\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"語言或發展方向\"\u003e機器語言、組合語言\u003c/td\u003e\n\u003ctd data-label=\"試圖解決的問題\"\u003e向硬體傳達要執行的工作\u003c/td\u003e\n\u003ctd data-label=\"應記住的概念\"\u003e與指令集直接相關\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"語言或發展方向\"\u003eFortran\u003c/td\u003e\n\u003ctd data-label=\"試圖解決的問題\"\u003e以接近數學公式的方式表達科學計算\u003c/td\u003e\n\u003ctd data-label=\"應記住的概念\"\u003e數值計算與編譯器\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"語言或發展方向\"\u003eCOBOL\u003c/td\u003e\n\u003ctd data-label=\"試圖解決的問題\"\u003e以易讀格式處理企業業務資料\u003c/td\u003e\n\u003ctd data-label=\"應記住的概念\"\u003e以帳務、交易處理為核心的表達方式\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"語言或發展方向\"\u003eLisp\u003c/td\u003e\n\u003ctd data-label=\"試圖解決的問題\"\u003e使用符號與串列進行計算\u003c/td\u003e\n\u003ctd data-label=\"應記住的概念\"\u003e早期 AI 研究與以函式為核心的表達方式\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"語言或發展方向\"\u003eC\u003c/td\u003e\n\u003ctd data-label=\"試圖解決的問題\"\u003e有效率地撰寫系統軟體\u003c/td\u003e\n\u003ctd data-label=\"應記住的概念\"\u003e記憶體控制與可攜性\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"語言或發展方向\"\u003eSQL\u003c/td\u003e\n\u003ctd data-label=\"試圖解決的問題\"\u003e處理關聯式資料庫中的資料\u003c/td\u003e\n\u003ctd data-label=\"應記住的概念\"\u003e宣告所需結果的查詢\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"語言或發展方向\"\u003eC++\u003c/td\u003e\n\u003ctd data-label=\"試圖解決的問題\"\u003e大型程式的結構化與資源管理\u003c/td\u003e\n\u003ctd data-label=\"應記住的概念\"\u003e類別與多種程式設計方式\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"語言或發展方向\"\u003eJava\u003c/td\u003e\n\u003ctd data-label=\"試圖解決的問題\"\u003e在執行環境不同的系統之間移植程式\u003c/td\u003e\n\u003ctd data-label=\"應記住的概念\"\u003eJVM 與位元組碼\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/div\u003e\n\u003cp\u003eFortran 於 1957 年在 IBM 問世。Lisp 在 1950 年代後期隨著 AI 研究一起發展。COBOL 則源自 1959 年開始的共同設計工作。\u003c/p\u003e\n\u003cp\u003eC 是隨著 Unix 開發而發展的語言，對將軟體移植至其他機型有所貢獻。不過，依賴作業系統與硬體的程式碼仍需另外修改。\u003c/p\u003e\n\u003cp\u003e物件導向是將相關資料與行為組織成物件的方式。C++ 是支援物件導向的語言，但物件導向這個概念本身並不是由 C++ 創造的。\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#%E7%B7%A8%E8%AD%AF%E5%99%A8%E8%88%87%E7%9B%B4%E8%AD%AF%E5%99%A8%E7%9A%84%E5%B7%AE%E5%88%A5\" class=\"anchor\" id=\"編譯器與直譯器的差別\"\u003e\u003c/a\u003e編譯器與直譯器的差別\u003c/h2\u003e\n\u003cp\u003e編譯器是將程式碼轉換成另一種表達形式的程式。轉換結果可能是機器語言，也可能是位元組碼等中間執行格式。\u003c/p\u003e\n\u003cp\u003e直譯器會一邊解讀程式碼或中間表示形式，一邊執行。實際的語言實作也可能同時使用編譯與直譯。若只把語言分成快速的編譯型與緩慢的直譯型，並不準確。\u003c/p\u003e\n\u003cdiv class=\"overflow-x-auto\"\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003e執行相關概念\u003c/th\u003e\n\u003cth\u003e作用\u003c/th\u003e\n\u003cth\u003e代表案例\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"執行相關概念\"\u003e預先編譯\u003c/td\u003e\n\u003ctd data-label=\"作用\"\u003e執行前產生目標程式碼\u003c/td\u003e\n\u003ctd data-label=\"代表案例\"\u003eC、Rust 常見的執行檔建置方式\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"執行相關概念\"\u003e位元組碼\u003c/td\u003e\n\u003ctd data-label=\"作用\"\u003e由執行環境處理的中間指令格式\u003c/td\u003e\n\u003ctd data-label=\"代表案例\"\u003eJava 位元組碼、CPython 位元組碼\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"執行相關概念\"\u003e直譯器\u003c/td\u003e\n\u003ctd data-label=\"作用\"\u003e一邊解讀程式碼或中間指令，一邊執行\u003c/td\u003e\n\u003ctd data-label=\"代表案例\"\u003eCPython 的位元組碼執行\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"執行相關概念\"\u003eJIT 編譯\u003c/td\u003e\n\u003ctd data-label=\"作用\"\u003e在執行期間將所需程式碼轉換為機器語言\u003c/td\u003e\n\u003ctd data-label=\"代表案例\"\u003e多種 JVM 與 JavaScript 引擎\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"執行相關概念\"\u003e執行環境\u003c/td\u003e\n\u003ctd data-label=\"作用\"\u003e提供程式執行所需的功能\u003c/td\u003e\n\u003ctd data-label=\"代表案例\"\u003eJVM、Node.js\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/div\u003e\n\u003cp\u003eCPython 是廣泛使用的 Python 實作，會將原始碼編譯為位元組碼後執行。若只把 Python 說成每次逐行翻譯原始碼的語言，就是錯誤的。\u003c/p\u003e\n\u003cp\u003eJava 的 JVM 是執行位元組碼的環境。這種結構有助於在不同作業系統上執行程式碼。實際相容性也會受到 JVM 版本與外部程式庫的影響。\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#%E7%B6%B2%E9%A0%81%E7%95%AB%E9%9D%A2%E8%88%87%E4%BC%BA%E6%9C%8D%E5%99%A8%E6%9C%89%E4%BB%80%E9%BA%BC%E4%B8%8D%E5%90%8C\" class=\"anchor\" id=\"網頁畫面與伺服器有什麼不同\"\u003e\u003c/a\u003e網頁畫面與伺服器有什麼不同？\u003c/h2\u003e\n\u003cp\u003e前端負責使用者接觸的畫面與互動。後端在伺服器上處理請求。資料庫則負責儲存與查詢所需資料。\u003c/p\u003e\n\u003cp\u003eHTML 是表達文件結構的標記語言。CSS 指定畫面的樣式與版面配置。JavaScript 則實作條件判斷與使用者操作的處理。\u003c/p\u003e\n\u003cdiv class=\"overflow-x-auto\"\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003e名稱\u003c/th\u003e\n\u003cth\u003e分類\u003c/th\u003e\n\u003cth\u003e主要用途\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"名稱\"\u003eHTML\u003c/td\u003e\n\u003ctd data-label=\"分類\"\u003e標記語言\u003c/td\u003e\n\u003ctd data-label=\"主要用途\"\u003e標題、段落、輸入欄位等文件結構\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"名稱\"\u003eCSS\u003c/td\u003e\n\u003ctd data-label=\"分類\"\u003e樣式表語言\u003c/td\u003e\n\u003ctd data-label=\"主要用途\"\u003e色彩、間距、畫面配置\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"名稱\"\u003eJavaScript\u003c/td\u003e\n\u003ctd data-label=\"分類\"\u003e程式語言\u003c/td\u003e\n\u003ctd data-label=\"主要用途\"\u003e瀏覽器互動與伺服器處理\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"名稱\"\u003eTypeScript\u003c/td\u003e\n\u003ctd data-label=\"分類\"\u003e為 JavaScript 加入型別系統的語言\u003c/td\u003e\n\u003ctd data-label=\"主要用途\"\u003e執行前檢查錯誤與管理程式碼\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"名稱\"\u003eReact\u003c/td\u003e\n\u003ctd data-label=\"分類\"\u003e使用者介面程式庫\u003c/td\u003e\n\u003ctd data-label=\"主要用途\"\u003e以可重複使用的元件建構畫面\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"名稱\"\u003eNode.js\u003c/td\u003e\n\u003ctd data-label=\"分類\"\u003eJavaScript 執行環境\u003c/td\u003e\n\u003ctd data-label=\"主要用途\"\u003e在瀏覽器之外執行 JavaScript\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"名稱\"\u003eNext.js\u003c/td\u003e\n\u003ctd data-label=\"分類\"\u003e以 React 為基礎的框架\u003c/td\u003e\n\u003ctd data-label=\"主要用途\"\u003e網頁應用程式的頁面架構與伺服器功能\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"名稱\"\u003ePHP\u003c/td\u003e\n\u003ctd data-label=\"分類\"\u003e程式語言\u003c/td\u003e\n\u003ctd data-label=\"主要用途\"\u003e在伺服器上產生動態網頁回應\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"名稱\"\u003eSQL\u003c/td\u003e\n\u003ctd data-label=\"分類\"\u003e資料庫語言\u003c/td\u003e\n\u003ctd data-label=\"主要用途\"\u003e查詢、新增、修改、刪除資料\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/div\u003e\n\u003cp\u003eReact、Node.js、Next.js 並不是同一類工具。程式庫是可取用所需功能的程式碼集合。框架則連應用程式的組織方式也一併提供。執行環境是程式碼執行的環境。\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#%E4%BE%9D%E7%94%A8%E9%80%94%E6%AF%94%E8%BC%83%E8%AA%9E%E8%A8%80\" class=\"anchor\" id=\"依用途比較語言\"\u003e\u003c/a\u003e依用途比較語言\u003c/h2\u003e\n\u003cp\u003e請根據要製作的成果與既有執行環境選擇語言。下表列出評估各種語言時的典型切入點。每種語言並非只能執行表中列出的工作。\u003c/p\u003e\n\u003cdiv class=\"overflow-x-auto\"\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003e想製作的成果\u003c/th\u003e\n\u003cth\u003e優先考慮的語言\u003c/th\u003e\n\u003cth\u003e選擇前應確認的事項\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"想製作的成果\"\u003e在瀏覽器中使用的網頁應用程式\u003c/td\u003e\n\u003ctd data-label=\"優先考慮的語言\"\u003eJavaScript、TypeScript\u003c/td\u003e\n\u003ctd data-label=\"選擇前應確認的事項\"\u003eHTML、CSS 基礎與畫面建構工具\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"想製作的成果\"\u003e檔案整理、工作自動化\u003c/td\u003e\n\u003ctd data-label=\"優先考慮的語言\"\u003ePython\u003c/td\u003e\n\u003ctd data-label=\"選擇前應確認的事項\"\u003e輸入檔案格式與部署環境\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"想製作的成果\"\u003e資料分析、AI 模型應用\u003c/td\u003e\n\u003ctd data-label=\"優先考慮的語言\"\u003ePython\u003c/td\u003e\n\u003ctd data-label=\"選擇前應確認的事項\"\u003e所需的分析與模型程式庫\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"想製作的成果\"\u003e網路伺服器、維運工具\u003c/td\u003e\n\u003ctd data-label=\"優先考慮的語言\"\u003eGo\u003c/td\u003e\n\u003ctd data-label=\"選擇前應確認的事項\"\u003e並行處理架構與既有系統整合\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"想製作的成果\"\u003e以 JVM 為基礎的業務系統\u003c/td\u003e\n\u003ctd data-label=\"優先考慮的語言\"\u003eJava、Kotlin\u003c/td\u003e\n\u003ctd data-label=\"選擇前應確認的事項\"\u003e與既有程式碼及程式庫的相容性\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"想製作的成果\"\u003e以 iOS 為主的應用程式\u003c/td\u003e\n\u003ctd data-label=\"優先考慮的語言\"\u003eSwift\u003c/td\u003e\n\u003ctd data-label=\"選擇前應確認的事項\"\u003eApple 開發工具與平台功能\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"想製作的成果\"\u003e以 Android 為主的應用程式\u003c/td\u003e\n\u003ctd data-label=\"優先考慮的語言\"\u003eKotlin\u003c/td\u003e\n\u003ctd data-label=\"選擇前應確認的事項\"\u003eAndroid 開發工具與既有應用程式架構\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"想製作的成果\"\u003e需要控制記憶體的系統\u003c/td\u003e\n\u003ctd data-label=\"優先考慮的語言\"\u003eC、C++、Rust\u003c/td\u003e\n\u003ctd data-label=\"選擇前應確認的事項\"\u003e效能需求與安全性驗證能力\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"想製作的成果\"\u003eCPU、GPU 運算最佳化\u003c/td\u003e\n\u003ctd data-label=\"優先考慮的語言\"\u003eMojo\u003c/td\u003e\n\u003ctd data-label=\"選擇前應確認的事項\"\u003e支援的硬體與所需運算功能\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"想製作的成果\"\u003e關聯式資料處理\u003c/td\u003e\n\u003ctd data-label=\"優先考慮的語言\"\u003eSQL\u003c/td\u003e\n\u003ctd data-label=\"選擇前應確認的事項\"\u003e各資料庫產品的語法差異\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/div\u003e\n\u003cp\u003ePython 的應用廣度也與程式庫生態系有關。NumPy 為了提升速度，會使用經過編譯的程式碼。並非所有以 Python 撰寫的計算都只透過 Python 程式碼執行。\u003c/p\u003e\n\u003cp\u003eGo 將並行支援納入語言設計。並行是讓多項工作一起推進的組織方式。平行則是多項工作實際同時執行的狀態。寫了並行程式碼，並不代表計算速度就會自動加快。\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#typescriptrustmojo-%E7%9A%84%E5%B7%AE%E7%95%B0\" class=\"anchor\" id=\"typescriptrustmojo-的差異\"\u003e\u003c/a\u003eTypeScript、Rust、Mojo 的差異\u003c/h2\u003e\n\u003cp\u003eTypeScript、Rust、Mojo 要解決的問題各不相同。TypeScript 協助檢查 JavaScript 程式碼的型別。Rust 對記憶體管理設有嚴格規則。Mojo 則著重高效能運算與硬體運用。\u003c/p\u003e\n\u003cdiv class=\"overflow-x-auto\"\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003e比較項目\u003c/th\u003e\n\u003cth\u003eTypeScript\u003c/th\u003e\n\u003cth\u003eRust\u003c/th\u003e\n\u003cth\u003eMojo\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"比較項目\"\u003e核心關注點\u003c/td\u003e\n\u003ctd data-label=\"TypeScript\"\u003e型別檢查與程式碼管理\u003c/td\u003e\n\u003ctd data-label=\"Rust\"\u003e記憶體安全性與系統控制\u003c/td\u003e\n\u003ctd data-label=\"Mojo\"\u003eCPU、GPU 高效能運算\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"比較項目\"\u003e代表用途\u003c/td\u003e\n\u003ctd data-label=\"TypeScript\"\u003e網頁應用程式、伺服器應用程式\u003c/td\u003e\n\u003ctd data-label=\"Rust\"\u003e系統工具、注重效能的元件\u003c/td\u003e\n\u003ctd data-label=\"Mojo\"\u003eAI 基礎設施、運算核心\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"比較項目\"\u003e應先理解的概念\u003c/td\u003e\n\u003ctd data-label=\"TypeScript\"\u003eJavaScript 與資料型別\u003c/td\u003e\n\u003ctd data-label=\"Rust\"\u003e所有權、借用、生命週期\u003c/td\u003e\n\u003ctd data-label=\"Mojo\"\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"比較項目\"\u003e需另外確認的部分\u003c/td\u003e\n\u003ctd data-label=\"TypeScript\"\u003e外部輸入與業務規則\u003c/td\u003e\n\u003ctd data-label=\"Rust\"\u003eunsafe 程式碼與邏輯錯誤\u003c/td\u003e\n\u003ctd data-label=\"Mojo\"\u003ePython 整合與硬體支援\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/div\u003e\n\u003ch3\u003e\n\u003ca href=\"#typescript-%E7%9A%84%E5%9E%8B%E5%88%A5%E6%AA%A2%E6%9F%A5\" class=\"anchor\" id=\"typescript-的型別檢查\"\u003e\u003c/a\u003eTypeScript 的型別檢查\u003c/h3\u003e\n\u003cp\u003eTypeScript 為 JavaScript 加入靜態型別檢查，有助於在執行前找出型別使用錯誤的程式碼。透過型別推論，部分宣告的型別可以自動判定。\u003c/p\u003e\n\u003cp\u003e不必為每個變數手動標註型別。型別註記會在一般的 JavaScript 轉換過程中被移除。僅有型別宣告，並不會產生執行期間的輸入檢查。\u003c/p\u003e\n\u003ch3\u003e\n\u003ca href=\"#rust-%E7%9A%84%E6%89%80%E6%9C%89%E6%AC%8A%E8%88%87%E8%A8%98%E6%86%B6%E9%AB%94%E5%AE%89%E5%85%A8%E6%80%A7\" class=\"anchor\" id=\"rust-的所有權與記憶體安全性\"\u003e\u003c/a\u003eRust 的所有權與記憶體安全性\u003c/h3\u003e\n\u003cp\u003e所有權是決定由誰管理值所占記憶體的規則。借用則是在不轉移所有權的情況下參照值的方式。編譯器會檢查相關規則，以預防記憶體錯誤。\u003c/p\u003e\n\u003cp\u003eRust 的安全性保證以實作正確為前提。在 unsafe 程式碼中，部分安全條件由撰寫者負責。語言並不會連計算式或存取權限的錯誤也自動阻止。\u003c/p\u003e\n\u003ch3\u003e\n\u003ca href=\"#mojo-%E8%88%87-python-%E7%9A%84%E9%97%9C%E4%BF%82\" class=\"anchor\" id=\"mojo-與-python-的關係\"\u003e\u003c/a\u003eMojo 與 Python 的關係\u003c/h3\u003e\n\u003cp\u003eMojo 是使用類似 Python 語法的獨立語言。它支援撰寫 CPU 與 GPU 的高效能程式碼，也提供與 Python 程式碼連接的互通功能。\u003c/p\u003e\n\u003cp\u003e不能假設既有 Python 程式碼可以原封不動地移轉。請在準備安裝的 Mojo 版本文件中確認所需功能。若要使用 GPU，也必須符合支援裝置與驅動程式的條件。\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#%E8%AA%9E%E8%A8%80%E4%BB%8B%E7%B4%B9%E4%B8%AD%E5%B8%B8%E8%A6%8B%E7%9A%84%E9%8C%AF%E8%AA%A4\" class=\"anchor\" id=\"語言介紹中常見的錯誤\"\u003e\u003c/a\u003e語言介紹中常見的錯誤\u003c/h2\u003e\n\u003cp\u003e簡短的語言介紹容易省略適用條件，也必須區分歷史事實與現有功能。以下列出可能影響語言選擇判斷的常見誤解。\u003c/p\u003e\n\u003cdiv class=\"overflow-x-auto\"\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003e常見說法\u003c/th\u003e\n\u003cth\u003e正確理解\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"常見說法\"\u003eJavaScript 是 Java 的網頁版\u003c/td\u003e\n\u003ctd data-label=\"正確理解\"\u003e兩者是不同的語言\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"常見說法\"\u003eHTML 與 CSS 都在 1991 年問世\u003c/td\u003e\n\u003ctd data-label=\"正確理解\"\u003eCSS1 的 W3C 建議標準發布於 1996 年 12 月 17 日\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"常見說法\"\u003eKotlin 是 Google 開發的語言\u003c/td\u003e\n\u003ctd data-label=\"正確理解\"\u003e開發者是 JetBrains，Google 則在 Android 上提供支援\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"常見說法\"\u003eC 程式碼重新編譯後就能在任何地方執行\u003c/td\u003e\n\u003ctd data-label=\"正確理解\"\u003e依賴作業系統、硬體的部分可能需要修改\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"常見說法\"\u003ePython 目前人氣排名第 1\u003c/td\u003e\n\u003ctd data-label=\"正確理解\"\u003e必須有調查機構、時間點與統計方式才能判斷\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"常見說法\"\u003e使用 Rust 就能解決所有安全問題\u003c/td\u003e\n\u003ctd data-label=\"正確理解\"\u003e記憶體安全性與存取權限驗證是不同問題\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"常見說法\"\u003e使用 Mojo 就能讓所有 Python 工作變快\u003c/td\u003e\n\u003ctd data-label=\"正確理解\"\u003e需要依工作、實作與硬體進行測量\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"常見說法\"\u003ebug 一詞源自昆蟲事件\u003c/td\u003e\n\u003ctd data-label=\"正確理解\"\u003e該事件是讓既有用語廣為人知的案例\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/div\u003e\n\u003cp\u003e著名的發現昆蟲紀錄，是 1947 年 Harvard Mark II 的案例。Smithsonian 說明，這起事件有助於相關用語的普及。若將其介紹為 ENIAC 的案例，或說成該用語的最初起源，都不準確。\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#%E6%87%89%E8%A9%B2%E5%A6%82%E4%BD%95%E8%A7%A3%E8%AE%80%E6%95%88%E8%83%BD%E6%95%B8%E6%93%9A\" class=\"anchor\" id=\"應該如何解讀效能數據\"\u003e\u003c/a\u003e應該如何解讀效能數據？\u003c/h2\u003e\n\u003cp\u003e效能數據只能針對實際測量的工作來解讀。編譯時間與完成後應用程式的執行速度，是不同的指標。開發工具變快，並不代表網頁也會以相同比例變快。\u003c/p\u003e\n\u003cp\u003eMicrosoft 宣布將 TypeScript 工具轉為原生實作。2025 年 3 月 11 日發布的資料中，列出了各專案的測量值。以下是該次發布中的 VS Code 程式碼庫案例。\u003c/p\u003e\n\u003cdiv class=\"overflow-x-auto\"\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003e測量對象\u003c/th\u003e\n\u003cth\u003e既有實作\u003c/th\u003e\n\u003cth\u003e原生實作\u003c/th\u003e\n\u003cth\u003e公布的速度提升\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"測量對象\"\u003eVS Code 程式碼庫的 TypeScript 編譯處理\u003c/td\u003e\n\u003ctd data-label=\"既有實作\"\u003e77.8 秒\u003c/td\u003e\n\u003ctd data-label=\"原生實作\"\u003e7.5 秒\u003c/td\u003e\n\u003ctd data-label=\"公布的速度提升\"\u003e10.4 倍\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/div\u003e\n\u003cp\u003e在公布的條件下，處理時間縮短為 \u003cstrong\u003e7.5 秒\u003c/strong\u003e。計算兩者差距，這個案例每次處理減少了 70.3 秒。這並不代表所有專案都會得到相同結果。\u003c/p\u003e\n\u003cp\u003e比較 Python 與 C 的速度時，也請採用相同原則。必須確認是否使用相同的輸入與演算法執行。編譯選項與使用的程式庫也是比較條件。未交代執行環境的數字，很難當成通用的速度倍率。\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#%E5%9E%8B%E5%88%A5%E6%AA%A2%E6%9F%A5%E8%88%87%E5%A4%96%E9%83%A8%E8%BC%B8%E5%85%A5%E9%A9%97%E8%AD%89\" class=\"anchor\" id=\"型別檢查與外部輸入驗證\"\u003e\u003c/a\u003e型別檢查與外部輸入驗證\u003c/h2\u003e\n\u003cp\u003e即使通過型別檢查，仍需另外確認外部資料的內容。檢視 AI 生成的程式碼時，經常會忽略這項差異。型別宣告表達的是程式預期接收的值的形式。\u003c/p\u003e\n\u003cp\u003e假設有個網頁應用程式將數量宣告為數字型別，外部 API 實際傳來的卻可能是字串。即使標上型別名稱或使用型別斷言，也不會驗證該值。必須有在執行期間檢查資料的程式碼。\u003c/p\u003e\n\u003cdiv class=\"overflow-x-auto\"\u003e\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003e檢查階段\u003c/th\u003e\n\u003cth\u003e檢查內容\u003c/th\u003e\n\u003cth\u003e通過後仍存在的問題\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"檢查階段\"\u003e型別檢查\u003c/td\u003e\n\u003ctd data-label=\"檢查內容\"\u003e程式碼內部的型別使用方式\u003c/td\u003e\n\u003ctd data-label=\"通過後仍存在的問題\"\u003e外部實際傳入的值\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"檢查階段\"\u003e輸入驗證\u003c/td\u003e\n\u003ctd data-label=\"檢查內容\"\u003e資料格式與允許範圍\u003c/td\u003e\n\u003ctd data-label=\"通過後仍存在的問題\"\u003e是否為使用者獲准執行的操作\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"檢查階段\"\u003e權限檢查\u003c/td\u003e\n\u003ctd data-label=\"檢查內容\"\u003e請求者的存取權限\u003c/td\u003e\n\u003ctd data-label=\"通過後仍存在的問題\"\u003e結果是否符合業務規則\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd data-label=\"檢查階段\"\u003e功能測試\u003c/td\u003e\n\u003ctd data-label=\"檢查內容\"\u003e預期輸入所產生的實際結果\u003c/td\u003e\n\u003ctd data-label=\"通過後仍存在的問題\"\u003e未經測試的條件\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/div\u003e\n\u003cp\u003e這張表是依據型別移除與記憶體安全性的適用範圍建立的檢視架構，區分了語言能保證的部分，以及服務必須檢查的部分。請向 AI 分別提出各階段的驗證需求。\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#%E5%A6%82%E4%BD%95%E5%90%91-ai-%E8%AA%AA%E6%98%8E%E5%8A%9F%E8%83%BD\" class=\"anchor\" id=\"如何向-ai-說明功能\"\u003e\u003c/a\u003e如何向 AI 說明功能\u003c/h2\u003e\n\u003cp\u003e提出功能需求時，請同時寫出輸入與預期結果。若只決定程式名稱，很容易遺漏運作條件。如果已有專案，也請告知正在使用的語言與版本。\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e寫出使用環境。\u003c/li\u003e\n\u003cli\u003e說明要處理的輸入形式。\u003c/li\u003e\n\u003cli\u003e決定正常輸入應產生的結果。\u003c/li\u003e\n\u003cli\u003e決定空值與錯誤輸入的處理方式。\u003c/li\u003e\n\u003cli\u003e同時要求說明修改原因與確認方法。\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e以下是拆分需求的提示詞範例。請根據專案調整實際檔案內容。生成的結果必須親自執行確認。\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\u003cspan\u003e請先確認既有專案的語言與執行環境。\n\u003c/span\u003e\u003cspan\u003e從 CSV 檔案讀取有標題的資料列，並以清單顯示。\n\u003c/span\u003e\u003cspan\u003e若缺少必要欄位，請顯示錯誤訊息。\n\u003c/span\u003e\u003cspan\u003e請另外提示標題為空的資料列。\n\u003c/span\u003e\u003cspan\u003e請區分外部輸入驗證與畫面顯示的程式碼。\n\u003c/span\u003e\u003cspan\u003e請先確認能否使用既有相依套件實作。\n\u003c/span\u003e\u003cspan\u003e請說明修改的部分與測試方法。\n\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e發生錯誤時，請一併提供重現條件。錯誤訊息中有能縮小問題發生範圍的線索。GitHub 的 Copilot 文件也要求檢視生成的程式碼。在採用程式碼之前，必須先確認執行結果。\u003c/p\u003e\n\u003ch2\u003e\n\u003ca href=\"#%E5%85%A5%E9%96%80%E5%AD%B8%E7%BF%92%E8%88%87%E8%AA%B2%E7%A8%8B%E9%81%B8%E6%93%87%E6%A8%99%E6%BA%96\" class=\"anchor\" id=\"入門學習與課程選擇標準\"\u003e\u003c/a\u003e入門學習與課程選擇標準\u003c/h2\u003e\n\u003cp\u003e入門學習可以根據想完成的工作，從較小範圍開始。若是網頁開發，可以先試著連結畫面結構與互動行為。若是自動化，則適合先確認檔案輸入與結果儲存。\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e選擇一種適合目標成果的語言。\u003c/li\u003e\n\u003cli\u003e學習變數、型別、條件陳述式、迴圈與函式。\u003c/li\u003e\n\u003cli\u003e撰寫小功能，並比較執行結果。\u003c/li\u003e\n\u003cli\u003e輸入錯誤資料，確認失敗時的行為。\u003c/li\u003e\n\u003cli\u003e試著用自己的話說明修改程式碼的原因。\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e選擇課程時，除了成果畫面，也請確認驗證內容。可以查看是否有重現與修正錯誤的實作練習。是否註明使用版本與執行環境，也是應確認的項目。\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e程式碼說明：說明生成函式之輸入與輸出的過程\u003c/li\u003e\n\u003cli\u003e錯誤處理：閱讀錯誤訊息並縮小原因範圍的練習\u003c/li\u003e\n\u003cli\u003e資料驗證：處理外部輸入與失敗條件的範例\u003c/li\u003e\n\u003cli\u003e可重現性：能在相同環境下再次執行的指引\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e各語言的定義可在各專案的官方文件中確認。TypeScript Handbook 說明了型別移除。Rust 官方書籍分別介紹所有權與 unsafe。請在 Mojo Manual 中確認語言功能與 Python 整合的範圍。\u003c/p\u003e\n","tags":["生成式 AI","提示詞工程","AI 開發","AI 程式設計","開發工具"],"faqs":[{"question":"開始氛圍編碼之前，必須先學會所有程式語言嗎？","answer":"不需要學會所有程式語言。請先根據想做出的成果，選擇合適的語言。理解變數、型別、函式和執行位置，就能將需求描述得更具體。"},{"question":"網頁開發應該先從 JavaScript 還是 Python 開始？","answer":"若要實作瀏覽器畫面上的互動行為，JavaScript 是起點。也請一併了解 HTML 和 CSS 的作用。若要進行檔案自動化與資料處理，可以考慮從 Python 開始。"},{"question":"使用 TypeScript 就不需要懂 JavaScript 了嗎？","answer":"若要理解 TypeScript 執行時的行為，需要具備 JavaScript 基礎。TypeScript 在 JavaScript 的基礎上加入了型別系統。請區分型別檢查與實際執行。"},{"question":"TypeScript 必須為所有變數標註型別嗎？","answer":"在可以推斷型別的地方，不必手動標註。工具會根據指派的值與上下文判斷型別。請依照程式碼的作用，決定是否需要明確標註型別。"},{"question":"React 和 Node.js 也是程式語言嗎？","answer":"React 是使用者介面函式庫。Node.js 是 JavaScript 執行環境。Next.js 則歸類為以 React 為基礎的框架。"},{"question":"Python 是將原始碼逐行轉譯後執行的嗎？","answer":"具代表性的實作 CPython 會將原始碼編譯為位元組碼，之後再執行位元組碼。僅用「逐行轉譯原始碼」的說法，很難解釋這個過程。"},{"question":"使用 Rust 就不需要進行安全審查了嗎？","answer":"Rust 的記憶體安全性不代表整個服務都安全。存取權限與業務規則必須另外確認。unsafe 程式碼的安全條件也需要審查。"},{"question":"Mojo 是 Python 的新版本嗎？","answer":"Mojo 是一種獨立的語言，語法與 Python 相似。它提供與 Python 整合的功能。既有程式碼的相容性，請查閱預計使用版本的官方文件。"},{"question":"使用 Mojo 一定需要 GPU 嗎？","answer":"Mojo 也能用來撰寫在 CPU 上執行的程式碼。GPU 並非所有程式的必要條件。如果要使用 GPU 功能，請確認裝置與驅動程式的支援範圍。"},{"question":"Go 的並行性和平行處理是同一個意思嗎？","answer":"並行性是將多項工作安排為一起推進的概念。平行性則是多項工作實際同時執行的狀態。僅有並行性，並不能保證執行速度會提升。"},{"question":"Kotlin 是 Google 開發的嗎？","answer":"Kotlin 的開發者是 JetBrains。Google 則在 Android 開發中支援 Kotlin。必須區分語言的開發者，以及在平台上提供支援的一方。"},{"question":"TypeScript 編譯器變快，應用程式也會按相同比例變快嗎？","answer":"編譯時間與應用程式的執行時間是不同的指標。Microsoft 的效能案例談的是開發工具的處理時間。應用程式的回應速度必須另外測量。"},{"question":"AI 產生的程式碼通過型別檢查，就算完成了嗎？","answer":"不能只憑型別檢查來判斷功能是否完成。必須確認外部輸入與存取權限。請測試在正常條件與失敗條件下，是否會得到預期結果。"},{"question":"該依據哪些標準選擇氛圍式程式設計課程？","answer":"請確認是否有說明及修改所產生程式碼的實作練習。也可以查看是否涵蓋錯誤重現與輸入驗證。明確標示使用版本與執行環境的課程，更容易確認重現條件。"}],"sources":[{"url":"https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html","title":"TypeScript 官方文件：TypeScript for JavaScript Programmers","type":"source"},{"url":"https://www.typescriptlang.org/docs/handbook/2/basic-types","title":"TypeScript Handbook: The Basics，型別檢查與型別擦除","type":"source"},{"url":"https://doc.rust-lang.org/book/ch04-01-what-is-ownership.html","title":"The Rust Programming Language: What Is Ownership?","type":"source"},{"url":"https://doc.rust-lang.org/book/ch20-01-unsafe-rust.html","title":"The Rust Programming Language: Unsafe Rust","type":"source"},{"url":"https://docs.modular.com/mojo/manual/","title":"Mojo Manual：語言概述與 Python 整合","type":"source"},{"url":"https://docs.modular.com/mojo/requirements/","title":"Mojo System Requirements：CPU·GPU 支援條件","type":"source"},{"url":"https://docs.python.org/3/glossary.html","title":"Python 官方詞彙表：位元組碼與執行相關概念","type":"source"},{"url":"https://numpy.org/doc/2.0/building/index.html","title":"NumPy 2.0 Manual: Building from source","type":"source"},{"url":"https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/What_is_JavaScript","title":"MDN: What is JavaScript?","type":"source"},{"url":"https://nodejs.org/learn/getting-started/introduction-to-nodejs","title":"Node.js 官方文件：Introduction to Node.js","type":"source"},{"url":"https://react.dev/","title":"React 官方文件：使用者介面函式庫","type":"source"},{"url":"https://nextjs.org/docs","title":"Next.js 官方文件","type":"source"},{"url":"https://www.php.net/manual/en/introduction.php","title":"PHP Manual: Introduction","type":"source"},{"url":"https://go.dev/doc/faq","title":"Go 官方 FAQ：設計目的與執行特性","type":"source"},{"url":"https://go.dev/blog/waza-talk","title":"Go 官方部落格：Concurrency is not parallelism","type":"source"},{"url":"https://kotlinlang.org/docs/faq.html","title":"Kotlin 官方 FAQ：開發單位與目標平台","type":"source"},{"url":"https://developer.android.com/kotlin","title":"Android Developers: Kotlin and Android","type":"source"},{"url":"https://www.swift.org/about/","title":"Swift.org: About Swift","type":"source"},{"url":"https://docs.oracle.com/javase/tutorial/getStarted/intro/definition.html","title":"Oracle Java Tutorials: About the Java Technology","type":"source"},{"url":"https://www.ibm.com/history/fortran","title":"IBM History: Fortran","type":"source"},{"url":"https://www-formal.stanford.edu/jmc/history/lisp/node2.html","title":"John McCarthy: LISP prehistory","type":"source"},{"url":"https://bitsavers.computerhistory.org/magazines/Datamation/196703.pdf","title":"Howard Bromberg: The COBOL Conclusion，Datamation 1967年3月","type":"source"},{"url":"https://www.nokia.com/bell-labs/about/dennis-m-ritchie/chist.html","title":"Dennis Ritchie: The Development of the C Language","type":"source"},{"url":"https://www.stroustrup.com/bs_faq.html","title":"Bjarne Stroustrup FAQ：C++ 與物件導向","type":"source"},{"url":"https://www.ibm.com/think/topics/structured-query-language","title":"IBM: What Is Structured Query Language?","type":"source"},{"url":"https://www.w3.org/standards/history/CSS1/","title":"W3C：Cascading Style Sheets 第 1 級發布歷程","type":"data_point"},{"url":"https://americanhistory.si.edu/collections/object/nmah_334663","title":"Smithsonian National Museum of American History：附有電腦蟲的日誌","type":"source"},{"url":"https://devblogs.microsoft.com/typescript/typescript-native-port/","title":"Microsoft：快 10 倍的 TypeScript，2025年3月11日","type":"data_point"},{"url":"https://docs.github.com/en/copilot/responsible-use/inline-suggestions","title":"GitHub Docs：Copilot 行內建議的限制與驗證責任","type":"source"}],"images":[{"id":2241,"url":"https://injoys.com/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzQ0NjEsInB1ciI6ImJsb2JfaWQifX0=--aa435b9d954b7e3cf19dca343a0d0fc5333fe68f/ai-73cc4d9e.webp","is_representative":true,"generation_method":"ai_photo","license":"ai_generated","mime_type":"image/webp","width":1536,"height":1024,"translations":{"ko":{"alt":"실습 교실에서 중년 남성이 노트북을 사용하고 옆의 여성이 탁자 위 스마트폰을 가리키고 있다.","caption":"AI가 생성한 코드는 실행과 테스트로 요구사항에 맞는지 확인해야 합니다.","description":null},"en":{"alt":"A middle-aged man uses a laptop in a classroom while a woman beside him points to a smartphone on the table.","caption":"AI-generated code must be run and tested to verify that it meets the requirements.","description":null},"ja":{"alt":"実習教室で中年の男性がノートパソコンを操作し、隣の女性が机の上のスマートフォンを指さしている。","caption":"AIが生成したコードは、実行とテストで要件を満たしているか確認する必要があります。","description":null},"es":{"alt":"Un hombre de mediana edad usa un portátil en clase mientras una mujer señala un móvil sobre la mesa.","caption":"El código generado por IA debe ejecutarse y probarse para comprobar que cumple los requisitos.","description":null},"id":{"alt":"Pria paruh baya menggunakan laptop di kelas, sementara perempuan di sebelahnya menunjuk ponsel di meja.","caption":"Kode buatan AI harus dijalankan dan diuji untuk memastikan kesesuaiannya dengan kebutuhan.","description":null},"pt":{"alt":"Um homem de meia-idade usa um notebook em aula enquanto uma mulher aponta para um celular sobre a mesa.","caption":"O código gerado por IA deve ser executado e testado para verificar se atende aos requisitos.","description":null},"zh-hant":{"alt":"實作教室裡，一名中年男子操作筆記型電腦，身旁的女子指著桌上的智慧型手機。","caption":"AI 生成的程式碼必須透過執行與測試，確認是否符合需求。","description":null},"de":{"alt":"Ein Mann mittleren Alters nutzt im Kurs einen Laptop, während eine Frau neben ihm auf ein Smartphone zeigt.","caption":"KI-generierter Code muss ausgeführt und getestet werden, um zu prüfen, ob er die Anforderungen erfüllt.","description":null}}},{"id":2242,"url":"https://injoys.com/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MzQ0NjcsInB1ciI6ImJsb2JfaWQifX0=--0a47db349b5b04ebfcd192a40d156aec0886d68c/ai-3af1935f.webp","is_representative":false,"generation_method":"ai_semi","license":"ai_generated","mime_type":"image/webp","width":1536,"height":1024,"translations":{"ko":{"alt":"서버실에서 CPU 방열판과 GPU 카드가 드러난 서버 내부를 살펴보는 여성","caption":"Mojo는 CPU와 GPU의 고성능 연산을 겨냥한 언어입니다.","description":null},"en":{"alt":"A woman inspects an open server with exposed CPU heatsinks and a GPU card in a server room.","caption":"Mojo targets high-performance computing on CPUs and GPUs.","description":null},"ja":{"alt":"サーバールームで、CPUヒートシンクとGPUカードが見えるサーバー内部を確認する女性","caption":"MojoはCPUとGPUでの高性能な演算を目指した言語です。","description":null},"es":{"alt":"Una mujer revisa un servidor abierto con disipadores de CPU y una tarjeta GPU en una sala de servidores.","caption":"Mojo está orientado a la computación de alto rendimiento en CPU y GPU.","description":null},"id":{"alt":"Seorang perempuan memeriksa server terbuka dengan heatsink CPU dan kartu GPU di ruang server.","caption":"Mojo ditujukan untuk komputasi berkinerja tinggi pada CPU dan GPU.","description":null},"pt":{"alt":"Uma mulher examina um servidor aberto com dissipadores de CPU e uma placa GPU em uma sala de servidores.","caption":"Mojo é voltada à computação de alto desempenho em CPUs e GPUs.","description":null},"zh-hant":{"alt":"一名女性在伺服器機房檢查打開的伺服器，內部可見 CPU 散熱器與 GPU 卡","caption":"Mojo 是以 CPU 與 GPU 高效能運算為目標的程式語言。","description":null},"de":{"alt":"Eine Frau prüft einen geöffneten Server mit CPU-Kühlkörpern und GPU-Karte im Serverraum.","caption":"Mojo ist auf Hochleistungsberechnungen mit CPUs und GPUs ausgerichtet.","description":null}}}],"published_at":"2026-10-29T14:25:12+09:00","updated_at":"2026-10-29T14:25:12+09:00","license":"cc_by","translation_status":"reviewed","available_locales":["ko","en","ja","es"],"data_locales":["ko","en","ja","es","id","pt","zh-hant","de"],"url":"https://injoys.com/en/articles/vibe-coding-programming-language-basics"}