進入主題之前,先談一下我的程式撰寫經歷。
我是機械背景,因研究所接觸到較有趣的工程資料庫,畢業後便進入 IT 領域,從此離不開程式設計及開發。
一開始是使用 Delphi 開發自動倉儲系統(透過RS232控制PLC),進入半導體公司後則多使用 VB6 開發 Windows 視窗介面、Portal 網頁(JavaScript、ASP、JSP...)及 Fab 監控系統(Java Servlet/Applet use Apache Tomcat),以及以 C/C++ 開發 UNIX/Linux 端的 MES server ,因此 Windows / UNIX-Like shell script 也頗有涉略,最近建置一套串流影音平台 - Jellyfin,使用 Node.JS、JavaScript、C#、AJAX 等較新技術,乃一典型的主從式架構的整合應用。問我學哪種程式語言好?其實要看需求而定,假如學校老師或公司主管要求以 C# 開發,即使你熟悉Java,也只能暫拋一邊了。不過程式語言重邏輯,只要熟悉其中一種,要跨入另一種就會容易許多,主要不同點在於語法上的差異,撰寫時通常 google 一下,然後 copy & paste 就可以了,腦袋不用記太多細節,因久沒用很容易忘記。以下列出常見的 GPL 差異:
- 開發:以 IDE 撰寫 *.java (功力夠的話也用使用一般的文字編輯器,其他語言也一樣)
- 編譯:不管是下指令或者 IDE 方式,都是以 javac 進行編譯 => javac *.java 編譯成 *.class
- 執行:java *.class,若有多個 class 可打包成 JAR 檔,方便 deploy 及執行。
- 開發環境需要 JDK(Java Development Kit),執行環境只需 JRE(Java Runtime Environment)。
- 可進階了解什麼是反組譯 - 以工具將機器碼往編譯的反方向產出 source code。
- 環境:電腦先安裝 Python
- 開發:以原始碼編輯器(ex: Visual Studio Code)撰寫 *.py
- 直譯:Python 是直譯器語言,直譯指令為: python *.py,過程中會產生 Byte Code(*.pyc),然後交由所屬平台的 Process Virtual Machine 轉成機器碼,最終結果與編譯器一樣。
- 執行:可將程式打包成 exe 檔供別人使用,指令: pyinstaller -F .\*.py => 參考
- 開發:以 IDE 撰寫 *.cpp
- 編譯:常見的編譯器 gcc / g++,指令為: g++ *.cpp,Linux 通常透過 Makefile 方便編譯,而Windows 則由 IDE 代勞 => 參考,Linux 下使用 Makefile 有些複雜,有機會用到再研究即可。
- 執行:直接跑編譯後的結果,例如 Windows 的 exe 檔、UNIX-Like 的 .o, .so...
C# (C++有2個+,C# 則有4個+)
- 開發:以 Microsoft Visual Studio 撰寫 *.cs,然後編譯成執行檔及 dll 檔(伴隨而生的pdb檔可不用部署,那是debug用的),建議在熟悉的 Windows 環境開發,然後部署到不同平台執行。
- 開發環境需要 .Net SDK,執行環境只需 .Net Runtime,因 .Net 版本一直推陳出新,需注意版本相容性的問題。
- 如果只在 Windows 使用,搭配 .Net framework 支援度會比較高,但若跨平台,則需搭配 .Net Core 或 .Net Standard
以上簡單列出不同語言間的差異,若是使用 IDE 進行開發,可以不管太多細節,但建議還是要弄懂基本流程,以免 IDE 開發、除錯遇到問題時,不知如何排除。拜網路盛行之賜,許多大學都有開網路課程,例如 台大OCW 就有 C++ 的教學,有時間可慢慢看,或者直接看別人整理好的線上教學(請點我)。
好了,介紹就到這邊,下海才知海深,接下來就安裝一套 IDE 開始 C++ 的學習之旅吧!初學者建議安裝 Visual Studio Code 加 mingw-w64(for Windows) 或 Clang (for Mac),然後參考 程式範例 ,一步步熟悉 C++ 的程式語法。
p.s. VS code 記得安裝 "Code Runner" 延伸模組(extension),方便執行測試,若遇"無法在唯讀編輯器中編輯"的問題,解法:檔案 > 喜好設定 > 設定 > 延伸模組 > Run Code Configuration > Run in Terminal > 勾選。