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对其他阶段在语言层面都有强力特性支持。举例如下:

  1. 设计阶段:利用interface可以进行protype编程,可以实现代码及文档。
  2. 编码阶段:go fmt统一代码格式
  3. 测试阶段:自带go test便于测试,不像C/C++依赖gtest
  4. 发布阶段:上面说到可移植及打包一切,便于交付,发布,部署
  5. 维护阶段:Golang天然支持CPU扩展及其上面所说的便于交付,发布,部署

大规模协作

Golang引入interface特性,实际在语言层面支持SOLID设计原则中依赖倒置原则。再加上包的独立性,有利于大规模系统的大团队协作开发。

编程友好

软件工程是人是关键因素。编码是核心阶段。Golang以下特性释放了程序员的生产力:

  1. 还算丰富的基础库
  2. 避免内存管理
  3. 天然支持并发

后记

当然Golang也有自己的缺点,如GC问题,延时大等。但是用一个语言的策略就应该扬长避短,当然熟练应用Golang的特性得深入学习与实践。

(End)

欢迎关注

欢迎关注微信公众帐号:沉风网事(savewind)

沉风网事