“移动开发那点事”——程序员成长经历

时间:2022-08-24 11:49:38
看到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时代已经到了,用户用不同的终端接入因特网,传统互联网网站都开始开发自己的移动应用,都开始向移动市场领域进军了.让我们一起在这移动开发中前行吧!