Go 基础信息:什么是 Go 语言? 4 个改进

什么是 Go?

Go 的诞生

Go 语言的出现是为了解决 Google 公司内开发软件基础设施时由于多核处理器、系统的网络化、大规模计算机集群和 Web 编程模型而带来的编程问题。

Go 语言起源 2007 年,并于 2009 年正式对外发布。它从 2009 年 9 月 21 日开始作为 Google 公司 20% 兼职项目,即相关员工利用 20% 的空余时间来参与 Go 语言的研发工作。

2009 年 11 月 10 日,Google 开发团队将 Go 语言项目以 BSD-style 授权(完全开源)正式公布了 Linux 和 Mac OS X 版本。同年 11 月 22 日公布了 Windows 版本。

2010 年 5 月起,Google 将 Go 语言投入到后端基础设施的实际开发中。

基于 BSD 可用协议意味着这是一门完全免费开源的编程语言,任何人都可以使用 Go 进行商业软件的代码开发且不需要支付任何费用。

GitHub 地址:github.com/golang/go

Go 应用场景

Go 与 C++ 类似,均属于系统编程语言。

Go 因为 Google 的原因,在集群 Web 服务器 or 类似用途的巨型中央服务器具有良好表现。在高性能分布式系统领域下,Go 语言比大多数语言有着更高的开发效率。Go 通过协程及 GMP 调度机制提供了海量的并发执行,对于游戏服务端开发有着天然优势。

Go 语言一个非常好的目标就是实现所谓的复杂事件处理(CEP),这项技术要求海量并行支持,高度的抽象化和高性能。当我们进入到物联网时代,CEP 必然会成为人们关注的焦点。

在 Google 内部,谷歌地图、Google Cloud、 youtube.com、dl.google.com 均使用 Go 进行开发,内部有专门的团队在将老应用用 Go 进行重写且引导新项目使用 Go 进行开发。在 Google 之外,BBC Worldwide、Canonical、Heroku、Nokia、SoundCloud 也都在尝试使用 Go。

Go 语言特性

Go 语言是一门类型安全和内存安全的编程语言。虽然 Go 语言中仍有指针的存在,但并不允许进行指针运算。

Go 语言的另一个目标是对于网络通信、并发和并行编程的极佳支持,从而更好地利用大量的分布式和多核的计算机,这一点对于谷歌内部的使用来说就非常重要了。设计者通过 goroutine 这种轻量级线程的概念来实现这个目标,然后通过 channel 来实现各个 goroutine 之间的通信。他们实现了分段栈增长和 goroutine 在线程基础上多路复用技术的自动化。

这个特性显然是 Go 语言最强有力的部分,不仅支持了日益重要的多核与多处理器计算机,也弥补了现存编程语言在这方面所存在的不足。

Go 语言从本质上(程序和结构方面)来实现并发编程。

因为 Go 语言没有类和继承的概念,所以它和 Java 或 C++ 看起来并不相同。但是它通过接口(interface)的概念来实现多态性。Go 语言有一个清晰易懂的轻量级类型系统,在类型之间也没有层级之说。因此可以说这是一门混合型的语言。

Go 编程体验

如果你有其它语言的编程经历(面向对象编程语言,如:Java、C#、Object-C、Python、Ruby、PHP),在你进入到 Go 语言的世界之后,你将会像迷恋你的 X 语言一样无法自拔。Go 语言使用了与其它语言不同的设计模式,所以当你尝试将你的 X 语言的代码迁移到 Go 语言时,你将会非常失望,所以你需要从头开始,用 Go 的理念来思考

如果你在至高点使用 Go 的理念来重新审视和分析一个问题,你通常会找到一个适用于 Go 语言的优雅的解决方案。

参考

本文为 Wiki 文章,邀您参与纠错、纰漏和优化
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!