Golang最工程化的语言
文章目录
Golang是什么语言
PHP是最好的语言。
Haskell最难学的语言。
Golang最工程化的语言。
下面分别从语言层面及软件工程两个方面进行说明。
语言
安全性
相比较于C/C++,golang不支持指针操作,不支持隐式类型转换,支持内存溢出与越界检查。
并发与扩展
通过goroutine,Golang从语言层面上解决了并发与扩展的问题,而不像C/C++, JAVA通过框架来解决这个问题。Golang自适应多核运行。
简单
语法简单,代码不涉及内存管理,上手容易。新人学习几天就可以上手写代码。
可维护性
自带godoc统一代码格式。 一个文件夹对应一个包有利于代码模块化。
打包一切
相比较于C/C++,动态库和静态库的依赖,Golang将所有编译成一个二进制文件。 解决依赖带来高度耦合问题,这样十分有利于交付与部署。
可移植
支持多种体系架构与不同的操作系统以及跨平台编译。
高效率
Golang实现了程序员开发高效率与机器运行高效率两者的有效结合,进而实现经济上高效率。
相比较于C/C++,Golang编译速度更快了。特别是大型项目,以前用C语言的时候,在刀片服务器上时编译一个测试版本都要半个小时左右。
生态成长
背靠Google,从09年发布已来,已经在云生态占据绝对主导地位。有不少明星开源项目。如Docker、Kubernetes、Prometheus、Hyperleder、Ethereum、Etcd等。随着云时代不断发展,Golang生态一定会越来越强大与丰富。
软件工程
流程
一般软件工程流程分为规划、需求、设计、编码、测试、发布、维护等几个阶段。除了规划与需求阶段,Golang对其他阶段在语言层面都有强力特性支持。举例如下:
- 设计阶段:利用interface可以进行protype编程,可以实现代码及文档。
- 编码阶段:go fmt统一代码格式
- 测试阶段:自带go test便于测试,不像C/C++依赖gtest
- 发布阶段:上面说到可移植及打包一切,便于交付,发布,部署
- 维护阶段:Golang天然支持CPU扩展及其上面所说的便于交付,发布,部署
大规模协作
Golang引入interface特性,实际在语言层面支持SOLID设计原则中依赖倒置原则。再加上包的独立性,有利于大规模系统的大团队协作开发。
编程友好
软件工程是人是关键因素。编码是核心阶段。Golang以下特性释放了程序员的生产力:
- 还算丰富的基础库
- 避免内存管理
- 天然支持并发
后记
当然Golang也有自己的缺点,如GC问题,延时大等。但是用一个语言的策略就应该扬长避短,当然熟练应用Golang的特性得深入学习与实践。
(End)
欢迎关注
欢迎关注微信公众帐号:沉风网事(savewind)
文章作者 沉风网事
上次更新 2018-07-03