Try   HackMD

在無人之境初次見面的 C 語言與 VSCode - IDE 與編輯器淺談

IDE - 整合式開發環境

  • 整合式開發環境 IDE (Integrated Development Environment) 是一種程式語言開發軟體,從撰寫程式碼到編譯、除錯到建置都包含在內的程式
  • IDE 常見的特性:
    • 語法高亮
    • 程式碼自動完成
    • 視覺化界面
    • 一鍵編譯、除錯、執行
  • 優點:
    • 通常 IDE 都是針對某幾個特定語言的開發,當專門使用某個語言時會特別順手
    • 在開發大型專案時,IDE 的管理能力也會比較好
  • 缺點:
    • 軟體規模較大,佔用的檔案容量會比較大,開啟程式的讀取時間也會比較久
  • 常見 IDE
    • C & C++
      • Code::Blocks
      • Visual Studio
    • Java
      • Eclipse
      • IntelliJ IDEA
    • Python
      • Spyder
      • PyCharm

Text Editor - 文字編輯器

  • 文字編輯器 Text Editor 通常只提供純文字的編輯功能,包含基本的複製、剪下、貼上、搜尋、取代等功能,而一個文字編輯器的強大通常是來自於第三方插件
  • 優點:
    • 輕量、快速、簡潔
  • 缺點:
    • 在開發大型專案時會顯得較為吃力
  • 常見 Editor
    • Notepad
      • Windows 內建文字編輯器
    • Notepad++
      • 兼具讀取速度與美觀的好選擇
    • Atom
      • 免費、開源、跨平台
    • Sublime Text
      • 基本上免費使用,但會一直吵著要你買
    • Nano, Emacs, Vim
      • 真.純文字編輯器
    • VSCode
      • 本日主角

VSCode

簡介

  • Visual Studio Code,俗稱 VSCode,是近幾年由微軟推出的一款文字編輯器,因為其免費、輕量、開源、美觀、跨平台、高擴充性且與社群持續整合的特性而十分受到歡迎,也是筆者最近用來開發程式的主力
  • 剛開始學習程式設計的時候,程式碼的複雜性並不高,所以筆者相當推薦用環境單純的 VSCode 來撰寫練習用的程式碼,而透過官方提供的 SSH Remote 與內建的整合式 Terminal,也能用 VSCode 來做網路管理

安裝

  • VSCode 官網 下載安裝檔,除了 Windows 以外也有提供 macOS 與 Linux 的版本
  • 安裝時只要下一步下一步就可以,其中這步驟建議全部打勾
  • 電腦教室已經內建 VSCode 不需要額外安裝
  • Debian 系列的可以下載官方的 .deb 檔安裝,Redhat 系列則可以下載 .rpm
    • 也有 Snap 的版本提供給其他 Linux 發行版安裝

基本操作

  • 如果用不習慣英文版的介面,可以按下 Ctrl + Shift + X 切換到插件視窗,搜尋 Chinese,找到繁體中文的插件後點右下角的 Install,重開 VSCode 之後就會變成中文了
    • 繁體中文的插件全名為「Chinese (Traditional) Language Pack for Visual Studio Code」
  • VSCode 可以用一個資料夾當作工作區,選擇左上角的檔案 > 開啟資料夾

插件介紹

C & C++

前置設定

  • 在 Windows 上安裝 Mingw-w64,Mingw 是 Windows 上面用來編譯 C 語言的編譯器,其實在 Code Blocks 裡面也有這份編譯器
  • 安裝時 Architecture 選擇 x86_64,安裝好之後把編譯器加到 系統路徑 (PATH)

    系統路徑 (PATH) 是相當重要的概念,以後會很常用

  • 插件設定:
    • "C_Cpp.intelliSenseEngine": "Tag Parser"
    • Include Path
    • Compile Path
  • task.json
    ​​​​{ ​​​​ "version": "2.0.0", ​​​​ "tasks": [ ​​​​ { ​​​​ "type": "shell", ​​​​ "label": "C/C++: gcc.exe build active file", ​​​​ "command": "C:\\Program Files (x86)\\CodeBlocks\\MinGW\\bin\\gcc.exe", ​​​​ "args": [ ​​​​ "-g", ​​​​ "${file}", ​​​​ "-o", ​​​​ "${fileDirname}\\${fileBasenameNoExtension}.exe" ​​​​ ], ​​​​ "options": { ​​​​ "cwd": "C:\\Program Files (x86)\\CodeBlocks\\MinGW\\bin" ​​​​ }, ​​​​ "problemMatcher": [ ​​​​ "$gcc" ​​​​ ], ​​​​ "group": "build" ​​​​ } ​​​​ ] ​​​​}
  • launch.json
    ​​​​{ ​​​​ // Use IntelliSense to learn about possible attributes. ​​​​ // Hover to view descriptions of existing attributes. ​​​​ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 ​​​​ "version": "0.2.0", ​​​​ "configurations": [ ​​​​ { ​​​​ "name": "(gdb) Launch", ​​​​ "type": "cppdbg", ​​​​ "request": "launch", ​​​​ "program": "${fileDirname}\\${fileBasenameNoExtension}.exe", ​​​​ "args": [], ​​​​ "stopAtEntry": false, ​​​​ "cwd": "${workspaceFolder}", ​​​​ "environment": [], ​​​​ "externalConsole": false, ​​​​ "MIMode": "gdb", ​​​​ "miDebuggerPath": "C:\\Program Files (x86)\\CodeBlocks\\MinGW\\bin\\gdb32.exe", ​​​​ "setupCommands": [ ​​​​ { ​​​​ "description": "啟用 gdb 的美化顯示", ​​​​ "text": "-enable-pretty-printing", ​​​​ "ignoreFailures": true ​​​​ } ​​​​ ] ​​​​ } ​​​​ ] ​​​​}

編譯指令

  • 使用 gcc 指令編譯程式碼的格式如下:
    • $ gcc [原始碼檔名] -o [執行檔檔名]
    • 如果沒有加上 -o [執行檔檔名] 則預設會是 a.exe
  • 執行程式:
    • 若是使用 CMD 則可以輸入 main.exe 或者 main
    • 若是使用 PowerShell 則是 .\main.exe./main.exe
  • 連鎖指令:
    • 可以使用一行指令串起兩個動作
      • CMD: gcc main.c -o main.exe & main.exe
      • PowerShell: gcc main.c -o main.exe; ./main.exe
    • 極度懶惰版:
      • gcc main.c & a
  • 輸入輸出導向
    • main.exe > out.txt 把程式輸出導向到 out.txt
    • main.exe < inn.txtinn.txt 輸入到程式裡面
    • 組合技:main.exe < inn.txt > out.txt
  • 範例程式碼 A:
    ​​​​#include <stdio.h> ​​​​int main() { ​​​​ int sum = 0; ​​​​ for (int i = 0; i < 10; i++) ​​​​ sum += i; ​​​​ printf("Result: %d\n", sum); ​​​​ return 0; ​​​​}
  • 範例程式碼 B:
    ​​​​#include <stdio.h> ​​​​#include <math.h> ​​​​int main() { ​​​​ for (int i = 0; i < 10; i++) ​​​​ printf("sqrt(%d) = %.4lf\n", i, sqrt(i)); ​​​​ return 0; ​​​​}

組建工作

  • 建置作業 Build Task 定義了一系列用來建置執行檔的作業
  • 「終端機 > 設定預設組建工作」來新增組建工作
  • 「終端機 > 執行組建工作」或者按下 Ctrl + Shift + B 進行建置

除錯模式

  • 除錯器 Debugger 讓開發人員可以在開發過程中進行除錯
  • VSCode 提供了相當好用的除錯模式界面
  • 在除錯模式下可以設定中斷點來短暫的暫停程式
  • 「執行 > 啟動偵錯」或者按下 F5 進入偵錯模式
  • 「執行 > 執行但不進行偵錯」或者按下 Ctrl + F5 可以直接執行程式
  • 將變數新增到 Watch 監測變數狀態
    • 也可以寫 Expression 在 Watch 裡面

SSH Remote

安裝編譯與除錯工具

  • $ sudo apt install gcc g++ gdb
  • 設定 Include Path 和 Compile Path

其他推薦的插件

Path Autocomplete

  • 自動提示與完成程式碼中的路徑輸入

AutoTrim

  • 適合強迫症患者
  • 也可以按 Ctrl + K, Ctrl + X

Markdown All in One

  • VSCode 也很適合撰寫 Markdown 文件
  • 有 Preview 功能、文件間的 Link 還能創建索引目錄
  • HackMD 也有自己的插件
    • 不過會覆蓋掉所有 Markdown 的 Preview

Partial Diff

  • 比較工具