2013年9月24日 星期二

C語言程式設計閒聊(0)程式開發環境-Mac下開發環境閒聊

泛UNIX環境(http://zh.wikipedia.org/wiki/%E7%B1%BBUnix%E7%B3%BB%E7%BB%9F)指的是一定程度上遵從POSIX規範的作業系統,這些作業系統多提供POSIX API支援,並且提供完善的CLI介面,對程式設計師來說,由於其完善的CLI介面能提供便於script file撰寫、套件管理工具整理與更新、以及較完善的檔案系統,故受到相當比例的軟體工程師喜愛。

我自己平常是Mac和Linux切換著用,他們兩個都是UNIX環境,先介紹Mac下的開發環境,下一篇再來談Linux下(以及工作站下)的開發環境。




在Mac OS X下開發C語言

通常不會遇到有課程助教要求學生用這平台啦XD  所以通常會用這平台寫程式的都是自己本身就在用。在早年我買第一台Mac的時候,那年代用Mac的人基本上都是藝術相關工作者與程式相關工作者,也因此通常用Mac寫程式的人自己會有辦法找到怎麼撰寫程式。但因為現在Mac氾濫,不少潮哥潮姊也會買來用,所以其實現在用Mac的人未必會有自己找怎麼寫程式的習慣。

不過還好的是,因為Mac本身的GUI夠力,所以對初學者來說,如果你要純用GUI來寫程式是絕對可以的,而且Apple官方提供的XCode也是一個相當完善的IDE,要用XCode來開發也是可以。
  1. IDE
    • Code::Block
      • 跟Windows版一樣,基本上設定都一樣,所以直接灌好拿來用就好了XD
      • 不過我當助教的那一年,不知道為什麼Code::Block for mac灌起來就crash,所以去年其實我不建議在mac用Code::Block
      • 但今年灌起來運作蠻正常的,目前使用起來還頗為正常,今年使用mac的人應該可以淡定地用Code::Block XD
      • (不過剛剛聽說好像有人在10.8上用會有問題?)
      • Code::Block使用心得[待補]
    • XCode
      • Apple官方提供的IDE
      • 開發Mac app與iOS app(使用ObjC與其Cocoa API時)基本上一定得用
      • 也可以拿來開發C語言程式
      • 因為XCode很肥所以我之前基本上沒有拿它來當做C語言的開發環境,過去的版本在網路上看到的評價也是覺得不太適合拿來開發C語言(比較適合當ObjC的開發平台)
      • 但是最新的版本我前幾天用了一下,雖然還是很大,但XCode的完整性確實讓人驚嘆,也蠻符合我對現代IDE應該要有的想像,之後應該會補一篇XCode使用教學文來
      • XCode使用心得文[待補]
  2. 編輯器+編譯器
由於Mac是UNIX,所以他的CLI其實經過調教後還蠻好用的,也因此我自己常用的模式大多是採用「編輯器+編譯器」的方式於Mac上撰寫C語言程式。但其實在編輯器的部份,未必一定要用指令模式的編輯器,也可使用如Sublime等GUI的編輯器。殆要編譯的時候,再開Command line來編譯即可,以下介紹我在mac上有用過的editor和compiler
    • 編輯器
      • Sublime
        • 付費軟體(但有免費版)
        • 跨平台軟體(Windows/Mac/Linux)
        • 有相當好的自動排版與自動補完功能
        • 有相當好的套件管理與插件功能
        • 插件自由度高,可自行修改,可把自動補完需要補的內容依照自己的需求修正
        • 他沒有列印功能(我也很想知道他為什麼不做...)
        • (參:我的Sublime使用經驗[待補]
        • 在視窗環境上是相當不錯的開發環境,我除了用vim以外,另外的開發環境就是用Sublime
      • vim
        • vim是源自泛UNIX平台下的編輯器,主要操控以鍵盤操控為主
        • 在Mac的CLI的shell可以直接把vim叫出來,也可以裝MacVim,讓你能從「應用程式」裡面叫他出來
        • 本體輕巧,可自由加裝套件,加裝套件之後可擁有相當強大的變數自動補完能力(參:如何改裝vim成為C語言編譯環境[待補]
        • 學習門檻高
        • 雖然一開始看到別人用vim會覺得很奇怪為什麼有滑鼠不用一直用鍵盤操控,但是對vim派來說,因為寫程式本身就是大量使用鍵盤的工作,如果中間為了操控而切換到滑鼠,反而會中斷你的思維,而且手勢很不順。
        • 所以對vim派的人來說,大部分寫程式的時間手都不會離開鍵盤,因為包含打字和環境操控都是用鍵盤處理,所以速度會快很多
        • 配上ctags和cscope之後,拿來trace大型程式碼很好用
    • 編譯器 
      • gcc
        • 現在mac上自帶的gcc,是gcc-4.2前端+LLVM後端,而這樣的作法惹毛了gcc社群,故gcc於4.3後更改授權為GPLv3,因此目前mac上自帶的gcc版本只停留在gcc-4.2。當然你也可以透過MacPort或homebrew等CLI下套件管理程式去取得GNU-gcc的新版
      • LLVM
        • Apple之所以不再升級mac裡的gcc,除了GPLv3的議題之外,還有另外一個原因是Apple本身是LLVM最大的支持者
        • 尤其配上了Clang前端之後,Clang-LLVM在編譯C/C++/ObjC上並不輸給gcc
        • 而且Clang的前端的強大程度比gcc好太多了,gcc吐error message不知道是給誰看的,但clang吐的error message是人類看的懂的!
        • 多想兩分鐘,你可以改用LLVM!



沒有留言:

張貼留言