IT Introduces

請查詢關鍵字並瞭解以下分類的技術或概念,並思考問題。

  • 每個關鍵字皆附上較常用的中文翻譯。

  • '=' 符號為相同概念。

Programing Languages

Compile

  • Compile 編譯
    • Compiler 編譯器
    • Machine code 機器碼 = Binaries
    • Executable Files 可執行檔
    • Libraries 程式庫
    • Byte Codes
    • Entry Point
  • Interprete 直譯
    • Interpreter 直譯器
  • JIT (Just In Time) 及時編譯
  • Compile Time
  • Run Time
  • Bootstrapping / Self-hosting

Question

  1. 一種語言的編譯方式只有一種嗎?否。
  2. CPython 的編譯方式為?先編譯為 Byte Codes,再對 Byte Codes 做直譯。
  3. Windows 的命令提示字元 (Command Prompt) 的編譯方式為?直譯式。
  4. 使用一款軟體突然當機,是 Compile Time 還是 Run Time 錯誤?Run Time
  5. C++ 是否有 Bootstrapping 的實作?GCC Compiler

Type Anotation

  • Strong Typing 強型別
  • Weak Typing 弱型別

Question

  1. Python 的類型標示為?Weak Typing
  2. 除了註解功能,Python 可以表示類型嗎?可以,參見 PEP 484。
  3. 一種程式語言的類型標示是否會導致編譯方式不同?否。會因為實作困難度影響,但是仍可克服。

Language Concepts

  • Variables 變數 / Literatures / Functions 函數
  • Structures 結構體
  • Control Flow 控制流程
    • Go to
    • While Loop
    • For Loop
    • If Else Condition
    • Switch Case
    • Recursive 遞迴
  • Stack 棧 / Heap 堆
    • Life Cycle 生命週期
    • Variables Visibility 變數可見性
    • Pointer 指標 / Reference 參照 / Reference Counter 參照計數器
    • Garbage Collection 垃圾回收
  • Function Signature 函式簽章
  • Anonymous Functions 匿名函式 / Function Pointer 函式指標
  • Objective Orientation 物件導向
  • Syntactic Sugar 語法糖 / Syntactic Salt 語法鹽
  • Unit Test 單元測試
  • Version Control 版本控制
  • Doc String
  • Standard Libraries 標準庫
  • Third Party Libraries 第三方程式庫
  • Dependencies 相依性
  • Compiler Macros 編譯器巨集
  • Compiler Optimizations 編譯器最佳化
  • String Encode 字串編碼
  • RE (Regular Expression) 正規表達式
  • EBNF (Extended Backus–Naur Form) 擴充巴克斯範式
  • Writing Style Guide 寫作風格指南
  • "Pythonic"

Question

  1. 「宣告 (Declaration)」主要是為了上述哪種概念?Life Cycle
  2. 組合語言 (Assembly Language) 中有哪些概念?Variables, Go to, Pointer
  3. 可以用組合語言實現更抽象的概念嗎?可以。
  4. Pointer 使用後未清除會造成何種問題?Memory Leak
  5. RE 和 EBNF 皆可定義文字規則,若發生 Miss Match,差別在於?RE 只會忽略。
  6. 透過 EBNF,可以實作自己的程式語言,然而 Syntactic Sugar 或 Syntactic Salt 過多分別可能造成何種問題?Syntactic Sugar 過多會導致不易閱讀且有多種寫法;Syntactic Salt 過多會導致開發效率低下。
  7. 規定 Writing Style Guide 主要是為了?易於讓協同者閱讀與方便修改。
  8. 使用 Unicode 而非其他語系的目的為?可以使用所有語系的文字。

Objective Orientation

  • Members 成員 / Methods 方法
  • Property 屬性 = Getter & Setter
  • Inherit 繼承 / Virtual Inheritance 虛繼承
  • Interface 介面 = Abstract Class 抽象類別
  • Generic Type 泛型

Question

  1. 定義 Members 的可見性是否對編譯器最佳化有幫助?否,屬於編譯檢查機制。
  2. 虛繼承除了放棄多重繼承功能,還可以怎麼解決?建立抽象方法 (Abstract Methods / Virtual Methods)。
  3. Generic Type 的概念是否只有在 Strong Typing?否,Weak Typing 會在 Compile Time 推導類別;或 Run Time 檢查類別。

Data Structure

  • Chain 鍊
    • Array 陣列
    • Linked List
    • Record
  • Tree 樹
    • Binary Search Tree 二元搜尋樹
    • Red–black Tree 紅黑樹
    • Map 映射
  • Hashable Value 可雜湊值

Question

  1. Python 有哪些類型的容器?Linked List (List), Record (Tuple), Red–black Tree (Set), Mapping (Dictionary)
  2. 樹狀結構是否有排列順序?否。
  3. 樹狀結構如何記錄重複的值?可以使用 Map 存放計數器。

Structural Languages

  • CSV
  • XML / HTML
  • CSS / SASS
  • YAML / TOML
  • Markdown
  • Latex / Bibtex
  • STL

Question

  1. 瀏覽器 (Browser) 本身是複合式的軟體,舉例其可以直譯的結構語言和程式語言?HTML, CSS, Java Script

Platforms

File System

  • Root = Super User = Administrator
  • File Mode 檔案權限
  • File Operate 檔案操作
  • Path Separator
  • Shell Script / Bash / Command Prompt
  • Environment Variables 環境變數
  • File Suffix 副檔名
  • Link File 捷徑 / Soft Link 軟連結 / Hard Link 硬連結

Question

  1. Linux 可執行檔的附檔名通常為何?沒有副檔名。
  2. Windows、Linux、mac OS 的檔案系統,哪兩個最相近?Linux 和 mac OS。
  3. Soft Link 較 Hard Link 的好處有哪些?不會被誤認成實體檔案、可以跨磁區。
  4. 若不使用 File Browser,Text-Based File 會因為附檔名而無法開啟嗎?不會。