Mac OS X平臺下的桌面軟件開發感悟

[簡歷] 
常用網名: 豬頭三
出生日期: 1981.XX.XX
生理特徵: 男
婚姻狀況: 已婚
Email:    [email protected]
QQ交流: 643439947
編程生涯: 2001年~至今[14年]
職業生涯: 11年
開發語言: C/C++、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python
開發工具: Visual Studio、Delphi、XCode、Eclipse
技能種類: 逆向 驅動 磁盤 文件
研發領域: Windows應用軟件安全/Windows系統內核安全/Windows系統磁盤數據安全
項目經歷: 磁盤性能優化/文件系統數據恢復/文件信息採集/敏感文件監測跟蹤/網絡安全檢測

[序言]
今日2014年08月30日, 修復一個BUG之後, 算是終於完成了我職業編程生涯中第一個Mac OS X平臺下的桌面軟件, 代碼總量2500多行, 開發週期1個月. 由於商業原因無法公佈該軟件的作用, 請諒解. 在這次開發的過程中讓我學到很多不一樣的開發思維以及跟Windows平臺比較之後的很多感悟, 因此寫下這篇文章.

[我準備了將近3個月]
雖然有將近12年的Windows平臺下的桌面軟件開發經驗, 但是移到Mac OS X平臺下開發讓我感覺還是有一定難度. 因爲我沒有任何類UNIX平臺的開發經驗, 很多東西都不懂. 那麼在這種情況下我是如何把Windows系統理論遷移至Mac OS X平臺下呢? 很簡單, 只要堅持一個原則:“理論概念是通用的”就可以了.  因此我就按照以前如何入門Windows平臺開發的學習步驟轉移到Mac OS X平臺下,列舉了如下問題清單:

1> Mac OS X平臺下的桌面軟件是由什麼編程語言處理
答: 由Objective-C編程語言處理
2> Mac OS X平臺下的桌面軟件是由什麼框架構建
答: 由Cocoa庫/框架構成
3> Mac OS X平臺下的系統特性是什麼
答: 系統特性是很多的, 我們需要幾本專業的書籍來學習: <深入解析Mac OS X & iOS操作系統> <Objective-C高級編程(iOS與OS X多線程和內存管理)> <Cocoa編程開發者手冊>
4> Mac OS X平臺下的官方開發文檔在哪裏?
5> 用於Mac OS X平臺下桌面軟件開發的主要開發工具是什麼?
答: Xcode

只需要掌握上面5點大方向就可以了. 上面的5點看似簡單, 但是融會貫通難度是相當大. 如果您是一名沒有任何編程基礎的興趣愛好者想直接入門Mac OS X平臺的桌面軟件開發, 千萬不要太天真以爲可以跟我一樣3個月可以搞定並開發出一個商業軟件(除非你是天才, 那麼我是無話可說). 請做好時間以"年"爲單位的學習規劃.

[怪異的開發思維]
Mac OS X平臺下的桌面軟件開發邏輯思維對我這樣的Windows平臺下的軟件開發者是非常怪異的. 
1> Windows平臺下的桌面軟件開發是"直接了當, 深入代碼內部", 而Mac OS X平臺下的桌面軟件開發是"圍着外面開發, 無法深入代碼內部"
2> Windows平臺下的開發文檔描述更貼近專業術語, 而Mac OS X平臺下的開發文檔描述多是按照個人意識來描述.

[從無到有, 成功開發出一款Mac OS X平臺下的桌面軟件需要什麼技術]
在開發Mac OS X平臺下的桌面軟件,讓我感觸最深的還是自身紮實的"C語言、C++語言、 Windows核心編程、 數據結構、 英語"這5個基礎, 在基於這5個基礎我才能在3個月內順利的掌握Mac OS X平臺下的桌面軟件開發,並在1個月內開發出本人職業編程生涯中第一個Mac OS X平臺下的桌面軟件. 那麼當您有這5個基礎之後, 還需要附加學習如下知識:
1> Objective-C編程語言
2> Cocoa開發庫
3> XCode開發工具
4> Mac OS X系統理論
在此特別強調英語的重要性, 目前大多數Mac OS X平臺下的桌面軟件開發相關資料90%都是英文的, 在開發過程中遇到的問題, 都是通過閱讀英文文檔來解決. 如果您不會英文那就相當的困難了. 或者你可以等待幾年後, 會有相關的翻譯資料.

[Python語言]
在開發Mac OS X平臺下的桌面軟件的過程中, 一個很重要的功能不知道如何實現, 通過搜索發現國外有人用python編程語言實現出來了, 爲了把這個python版本的功能移植到Objective-C版本, 爲此我花費了1個星期來學習python編程語言, 因此無形中爲自己添加了一門編程語言的編程技能. 很多人都說爲什麼你沒有學JAVA、VB...... 因爲我從事編程12年的時間裏沒有任何項目是需要到JAVA和VB的, 所以沒有去學它的必要性. 我不會因爲說誰誰去學習了什麼, 現在流行什麼, 就跟着去學. 我只會根據項目需求來學習, 這樣纔是最正確的"學以致用". 而且你還要明白一個領域的基礎核心是什麼, 你要爲這個基礎核心去學什麼, 這些你都是必須要清楚的.

[後話]
這"3個月的學習和1個月的開發"過程是有價值的, 我的編程實力不僅得到了增強, 而且知識面更廣. 當然最希望的是這個款商業軟件能出銷售, 這纔是最重要的回報.



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章