时间:2016-11-18来源:本站原创作者:佚名

按:这是我给公司(部门)写的使用推广Go语言的建议书,给领导看了以后,领导同意使用Go语言对一些服务器程序进行改写并部署到外网进行验证。希望这篇文章能够给同样在自己公司内部推广Go语言的技术人员有一些帮助。同时如果发现文章中有疏漏不足错误之处也欢迎提出。

采用Go语言作为服务端编程语言的建议书

一、当前的挑战

随着互联网时代的到来,软件(特别是网络游戏)版本更新产品更迭的速度也在加快,这对软件开发效率和质量提出了更高的要求。只有更快更好更多地拿出产品,软件公司才能在市场上取得一席之地。随着我们公司的战略从端游转向页游和手游,加快产品开发的需求也更加迫切。

目前我们公司的主要开发语言仍为C++。确实在端游领域,C++作为客户端的开发语言是不二之选;但是在服务器端,C++作为编程语言越来越力不从心,我相信在进入页游和手游市场之后,这个问题将会越发严重。C++作为服务端的编程语言,存在如下主要问题:

1.开发效率低

这个已多有讨论,相信有几年编程经验的C++程序员都会有体会。

2.常见BUG多

C++编程中,内存越界、非法内存引用、内存泄漏、非法类型转换等都是常见的BUG,在每个新人每个项目的成长过程中基本都会重复遇到,严重降低了产品的质量和稳定性。

3.软件工程

C++对软件工程的支持不够好,例如很不方便的代码重用、复杂的库依赖、五花八门的代码风格、缺乏良好的单元测试设施、不同的编译器甚至不同版本之间的不兼容特性、冗长的编译时间、贫乏的文档化支持等。

4.功能贫乏的标准库

虽然C++的库很丰富,但是标准库的功能却很贫乏。既没有正则表达式、也没有加密压缩算法、没有序列化支持、没有WEB支持、没有邮件等支持。

5.没有国际化、多语言的支持

6.跨平台支持

虽然C++可以在多个操作系统上编译,但是各个厂商的编译器对C++标准的支持不尽相同;标准库的接口也不尽相同;甚至C++对操作系统的统一化处理也支持不好,例如不同平台上的文件路径的处理。

7.缺乏高并发和多核的支持

C++语言只支持物理线程,严重制约了系统的并发性,在多核时代如果不同提高软件的并发性,性能将受到很大的影响。虽然有一些第三方C++库号称支持轻量级协程,但是使用起来也有很大的限制。

8.标准不统一

虽然C++有指定标准,但各个编译器厂商对C++标准的支持程度并不完全,在一些实现细节上也有差异;C++对32位升级到64位程序的支持也不够平滑,如果用C++写的程序需要从32位升级到64位,需要做比较多的修改,也会担心因此产生BUG。

9.学习曲线陡峭

C++是一门非常复杂的语言,即使是三年编程经验的程序员也不敢说能掌握C++知识的多少。现在我们公司的C++程序员,能看模板代码的有多少?自己能写的又有多少?这导致程序员培训的成本,程序员成长的成本非常非常的高。而众多低水平程序员用容易出错的C++写出来代码质量又能有多高?

如上所述,因为C++存在的一些问题,已经(其实是早就)严重影响了软件的开发效率和软件的质量,甚至因为不能充分利用多核的特性也已经影响到了软件的性能。但是一直没有出现合适的替代品。java的出现的一个主要原因就是要解决C++遇到的问题,但是出于虚拟机执行效率低下以及其他原因,并没有被一些公司采用。但是,发明、年发布正式版本的Go语言来了,Go言是C++语言一个很好的替代方案。

二、Go语言简介

Go语言是Google开发的一种编译型,并发型,具有垃圾回收功能的系统编程语言,官方支持FreeBSD、Linux、MacOSX和Windows四大操作系统。[1]

三、为什么要选择Go语言作为服务端开发语言

1.出身名门,社区支持,前途有保障

Go语言出于Google公司,由众多业界顶尖技术人士主持设计和开发,技术实力自然有保证。Go语言的作者包括:

lKenThompson(







































白癜风该怎么治疗
白癜风应该注意什么

转载请注明原文网址:http://www.gzdatangtv.com/bcyyfz/1534.html

------分隔线----------------------------