服务器端开发一直是UC业务的核心之一。在初创阶段,UC的服务器端只是UC浏览器的云端,仅仅是为了实现网页压缩和加速,提高渲染的效果。服务器端开发团队的开发语言采用的是C/C++(核心模块)和Python(业务逻辑),比较统一。2007年左右,我们开始围绕浏览器发展了很多周边业务,算上后台的统计分析等项目,可以说是五花八门。当时,各个项目分属不同团队,一般来讲,团队Leader熟悉什么语言,团队就使用什么开发语言,涉及PHP、C/C++、C#、Boo、Python、Java等。同种开发语言中使用的框架、库也都各自为政,由各团队自己克服困难和积累技术。
在2011年底~2012年第一季度,我们在公司范围内进行了一次集中讨论,最终确定以PHP、C/C++、Java作为UC服务器端的主流语言。
- 在以下场景建议使用PHP:
“页面展示”:带有Web页面的产品和项目,用PHP方便结合前台其他开发技术,如HTML/XHTML、CSS、JavaScript、JSON等,不需编译,可快速调整页面;
“模块粘合”:将一个大项目分解出多个逻辑相对固定且独立的模块,采用C/C++、PHP等做成独立模块提供服务,用PHP调用这类服务后,结合其他灵活多变的业务逻辑组装起来。
- 在以下场景建议使用C/C++:
“高性能、大并发、高实时”:性能高是C/C++的优点,相对于PHP或Java,用户量大、并发访问的程序使用C/C++能节省大量机器;
“耗CPU、管理大量内存、高磁盘I/O或者网络I/O”:对物理资源的管理以及灵活方便的操作是C/C++的天生优势,但缺点要求开发人员有着丰富的开发经验。
- 在以下场景建议使用Java:
“兼顾业务灵活性、规范性、性能和安全”:Java类被组织成等级层次,纯粹面向对象、规范、类库多、业务抽象较好、跨平台、业务逻辑变更方便,而且性能相对较高
很多银行系统、银行网站、制造企业的系统都是基于Java平台,因此,互联网企业跟其他企业有交互接口的项目常用Java。
要求掌握2种开发语言
UC现在要求每个开发人员应该熟练使用至少2种开发语言。一种是目前工作时主要使用的“母语”,另一种是根据兴趣或工作需要选择的“外语”。在学习“外语”时,一般是要求快速掌握其语法,然后了解相关函数列表和库,知道用的时候在哪儿查,了解项目文件如何组装以及开发框架、开发规范。
从公司的角度看,因为互联网企业节奏快,我们经常从各个团队抽调人员快速组建新的团队,所以开发人员熟悉2种语言可以让公司的运转更为流畅,我们在人员调动时也会征询各自的意愿和了解其对语言的掌握情况。
从团队内看,需要有一部分人可以工作在几个领域,例如使用PHP的人中有一部分还需要会用C/C++写PHP扩展;或者在用Java为主的团队里,需要有一部分人能用C/C++开发底层服务。另外,部分项目还需一些辅助的后台脚本,我们要求开发者会用Linux Shell写简单脚本,部分开发还会用Python写复杂的脚本。
从人才培养的角度看,选择这些开发语言,主要是考虑到移动互联网和互联网行业的现状。这有利于开发人员复用以前的技术积累,也有利于开发人员长期的职业发展。通过内部讨论,让大家意识到几种开发语言的优缺点,能在更高的视角选择合适的开发语言。
最后,适合的开发语言有利于团队的技术储备、提升工作效率和跨团队的人员调动。
作者梁捷,UC优视公司联合创始人,现任公司技术总裁。1998年毕业于华南理工大学计算机专业,后长期耕耘于中国的电信和互联网市场,在电信及网络计算领域拥有超过10年的技术研发和管理经验。