“移動開發那點事”——程序員成長經歷

看到CSDN上有這樣的主題活動,我也來聊聊我的移動開發之路.分享一下我與移動開發的不解情緣.
2004 初入行業

由於不滿足自己工作行業現狀開始折騰了.去了一家剛起步創業小公司做的是聯網的單局比賽系統.這裏和我的第一位老大,他帶我進入了這個行業,也學習了不了東東.在當時移動開發市場上移動開發有J2ME, Symbian, BREW,最流行的是J2ME, 西門子,諾基亞都有比賽. 提到J2ME這裏不得不提到中國移動的百寶箱,所有遊戲在手機上玩要麼是內置在手機中,還有另一個方法就是在中國移動的百寶箱裏下載.關於當時百寶箱的相關事情請看這裏.當時那家公司做的是聯網比賽遊戲,比如一對一籃球,保齡球等.我們的聯網系統是用BEA Weblogic和Oracle 搭建的服務器.每次用戶玩遊戲就會訪問我服務器,把用戶信息傳遞到服務器上,用戶玩完這一局後再把分數回傳到服務器.每個月每個周都有排名,名次高的可以相應的禮品. 我們沒有走移動百寶箱而是省移動的方式.  

一開始主要以移植爲主,公司已經有一些遊戲但對於市場上的一些流行的手機進行適配.JAVA一直說的一次編譯到處運行在J2ME上完全不是這樣.而NOKIA的S40系統KVM的JAR包容量與堆內存都小得可憐.當時索愛T61X系統KVM效率很低.更爲可氣的MOTO所有行貨手機競然不能用程序的方式訪問服務器.我在網上找了許多資料也認識不少當時也在做這些東東的朋友,也幫我解決了許多問題.在這裏學習到了不少開發經驗與知識.

2005 轉換方向
  由於公司自身問題,公司的發展也很困難,我和那些朋友一起搞J2ME的00muzhi論壇,剛開始都挺不錯,但出了一些問題結果這論壇也沒有搞下去.而我看到J2ME遊戲的入門門檻太低,再加上當時百寶箱上充滿了反編譯的換皮作品.我離開了那家公司,重新學習了SYMBIAN開發.許多人說Symbian開發多少多少困難,多少多少複雜.這對於我來說反而覺得是件好事.入門門檻變高了,相應的競爭也會變小了,不過SYMBIAN系統設計的是很另類.首先遇上的二級造構,簡單的創建對象變了.爲了保證對象的創建成功,使用了類的靜態方法來創建.對象問題解決了,又開始了描述符,原來的String變成了描述符.這套描述符系統一直困擾的初學者,你不使用它的話根本不可能,許多API方法都是用它做爲參數傳遞的. 其實SYMBIAN系統的設計理念是爲了安全爲了保證系統的健壯性,但給使用者的感覺是不爽!還好我又遇到了兩位老師,在我學習的路上少走了好多彎路.關於Symbian的學習,我這裏不說啥了,NOKIA自己已經不再對Symbian系統做更新了.
2006 重新開始
在當時環境找個SYMBIAN開發工作也很少,經朋友介紹去了一家手機遊戲公司.這家公司有SYMBIAN開發.遇上了我第二位老大.也是這位老大教會了我許多許多東東.我這裏最大的感悟原來程序還要這樣寫!他也面試問了我幾個問題,也成了我以後面試問別人的問題了.

這裏我分享一下: SYMBIAN是C++, 

1.寫一個strcpy的實現. 

2.考一道算法題兩個數組未排序找出最大最小值  

3.vc中ASSERT()和VERIFY()區別. 

4.要是寫一個圖文混排的文檔編輯器,你帶着三四個人時,如何寫這樣的東東! 

這家公司做的項目也是聯網遊戲,是棋牌類的遊戲.我剛來的時候,老大也剛來才一個月.我們的程序有一個問題,就是在遊戲大廳裏的坐在座位上開始進行遊戲.如果是三個人開始遊戲沒問題可以進入,但要是變成了四個人一起遊戲,無法進入程序.當時SYMBIAN上無法真機調試,寫LOG的方式只是沒有聯網消息,不知道爲什麼?老大很簡單的改了下代碼問題解決了! 

我陸續開發幾款遊戲,我只在乎於實現,把東東做出來就算好了!老大看了我的寫的東東,他的意思代碼不是光給機器運行的,是要給別人看的!代碼要讓別人接手的人看懂,不要用過於複雜的東東.現在我看來代碼要規範,所謂的規範就是團隊中所有的人寫出的代碼風絡要一致統一! 這裏提到以前看到論壇裏有人問在J2ME上從日本那邊的代碼是用一個CANVAS解決所有界面問題.但歐美的代碼卻喜歡用多個CANVAS!當時也沒有人回答出爲什麼? 這裏我留給讀者考慮吧.J2ME裏用一個CANVAS處理所有東東!

2007 橫跨平臺

公司把遊戲大廳進一步細化,需要有簡單的圖文混排的展現相當於有了圖文帖子系統. 老大自己實現了這麼一套混排的系統.讓我爲之崇拜. 有了這個基礎後來看WEBKIT的代碼有種似曾相識的感覺.剛看完這代碼,老大又提出來要跨平臺.由於SYMBIAN用的是C++, windows mobile也可以用C++. 老大寫了一套DirectUI,但對於中文輸入控件還需要調用系統API. 這樣就很方便做到跨平臺了.而我在老大的基礎庫上向WM做移植.  

在此時公司發展也遇上了些問題,SYMBIAN開發出來程序在當時市場上沒有上線渠道.而我們自己做的平臺也沒有推廣開.老大離開了這家公司.而我和那位朋友繼續在這家公司工作.

2008 繼續前行
這一年,我仍然做手頭上的事,但由於原來這套服務器組的開發人員也離開了公司,老大去了另一家公司,我也去了老大那邊一起做事了.由於所做的新項目需要在功能機上運行!這時候移動開發又開始流行MTK,其實是聯發科的手機芯片上運行了一套自己開發的界面系統,對於手機設計廠商來說是惡夢(夏新自己的研發完全體現不了價值了).原來某些硬件開發平臺上的UI是由手機設計廠商來完成的.聯發科直接完成手機UI上的開發工作.這樣上市新手機的速度由原來的半年變成了一個月!我們新做的項目要和廠商合作做成內置應用了.用C++開發雖然也可以,但鏈接的選項可能支持的不好.老大提出了用C語言寫面向對象的程序!我又和老大一起開發出了這套C的面向對象代碼.還考慮跨平臺,把基礎通用庫按不同平臺封裝了一下.這樣我們就可以跨MTK,SYMBIAN,WINDOWS MOBILE BREW提供C的平臺了.
2009 遭受挫折
這一年,我又繼續把基礎庫擴大到NXP的功能機上.雖然跨平臺能解決平臺統一問題,但對於新需求新的界面更新還是需要修改原程序.我們在原有的跨平臺基礎上老大提出了用XML+LUA做爲操作XML展示的方案,這時公司又提出用瀏覽器的實現方式來做.也就是有webkit.很可惜由於當時硬件的限制,用此方案來實現需要更多的時間和人力而我們無法在短時間內完成!這個成爲我和老大唯一一個失敗的項目了!

2010 腳本語言

這一年,重新按原來的XML和LUA的方案開製作類似於瀏覽器的客戶端,XML解析生成DOM樹,LUA來操作這個DOM樹,最後再展示出來.而這些展示與業務邏輯都可以放在服務器端,完成了這套系統.老大離開了這家公司,我也離開了.

2011-2012 新的起點
換了一家新公司,現在IOS和ANDROID大行其道,SYMBIAN卻也已經日落夕山.而NOKIA採用MS的WP系統.現在的移動設備的硬件環境與當時完全不同,開發的思路也都是以UI配置與"本地語言"做結合的開發方式.我仍然繼續着我的移動開發之旅,熟悉各平臺的框架.

寫的有些亂,但把我的成長經歷全寫了出來,語言的學習JAVA->C++->C->LUA, 面象對象是代碼的管控. 程序語言都可以通過面向對象的思維來書寫. 當然不同環境下考慮的不同.  現在的移動平臺以UI配置+語言寫邏輯. 與瀏覽器的思路十分相似 . 我一步步走來收穫頗豐. 現在移動市場越來越重要,真正的後PC時代已經到了,用戶用不同的終端接入因特網,傳統互聯網網站都開始開發自己的移動應用,都開始向移動市場領域進軍了.讓我們一起在這移動開發中前行吧!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章