编程语言GO语言
Posted DX计算机XH
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编程语言GO语言相关的知识,希望对你有一定的参考价值。
Go语言是谷歌2009发布的,
第二款开源的编程语言,
它能让构造简单、可靠且高效的软件变得容易。
现在Go的开发已经是完全开放的,
迅速形成了一个强大的社区。
强大的社区会导致语言进一步强化自身,
形成正反馈,想不成功都难。
Why Go?
Go 语言应用于搭载 Web 服务器,
存储集群或类似用途的巨型中央服务器的系统。
Go语言提供了海量并行的支持,
这对于游戏服务端的开发而言是一个福音。
GO语言具有独特的魅力,
它简洁、快速、安全、并行、有趣、开源,
它具有内存管理、数组安全、编译迅速优势。
现有的工程语言的一些缺点:
1 php python ruby 系列
是动态语言,性能太慢不说,一旦代码规模庞大就很难控制代码质量。
2 java scala c#系列
性能强大 内库完善,带着一个高效的gc(内存垃圾回收机制), 看起来不错。
但存在一个缺点,带一个硕大的运行时,导致各种资源消耗。而且java语法的繁琐也经常被人诟病。
3 c/c++系列
对处理字符串比较弱,而且没有gc。很难写出稳定性强的web程序。而且c++的编译性能很弱,若开一个大型项目,随便make一下,一天就这么过去了。
go语言
google的go语言是轻量级,高性能,语法简洁同时带有一个完善的gc的编程语言,go语言的每一个发布版质量可靠,性能稳定。自然不出意外收获了广泛的重视。
go语言虽然很多特性都被人诟病,语法层面乏善可陈,可是它解决了大部分的码农的痛点。
截至2017年语言排行榜
go语言的行业相关技术及方向
基于go语言完成的项目
docker
Docker项目在2014年9月份就拿到了C轮4000万美元融资,版本迭代速度超快,目前从GitHub看到已有78个版本,而它仅仅是再2013年初才正式开始的一个项目而已。目前,国内Docker技术推广也进行的如火如荼,比如Docker中文社区,CSDN也建立了Docker专区。CSDN CODE也将在近期与Docker中文社区合作,推出Docker技术文章翻译活动,届时也请大家多多关注,及时关注与参与。Docker团队之所以喜欢用Go语言,主要是Go具有强大的标准库、全开发环境、跨平台构建的能力。
https://github.com/docker/docker
Kubernetes
Kubernetes是2014年夏天Google推出的Kubernetes,基于Docker,其目的是让用户通过Kubernetes集群来进行云端容器集群的管理,而无需用户进行复杂的设置工作。系统会自动选取合适的工作节点来执行具体的容器集群调度处理工作。其核心概念是Container Pod(容器仓)。
https://github.com/GoogleCloudPlatform/kubernetes
Etcd &Fleet
etcd是由CoreOS开发并维护键值存储系统,它使用Go语言编写,并通过Raft一致性算法处理日志复制以保证强一致性。目前,Google的容器集群管理系统Kubernetes、开源PaaS平台Cloud Foundry和CoreOS的Fleet都广泛使用了etcd。详情,可了解 《Etcd:用于服务发现的键值存储系统》。 Fleet则是一个分布式的初始化系统。它们之所以选择使用Go语言,则是因为Go语言对跨平台的良好支持,以及其背后的强大社区。
https://github.com/coreos/etcd
Deis
Deis是一个基于Docker和CoreOS的开源PaaS平台,旨在让部属和管理服务器上的应用变得轻松容易。它可以运行在AWS、GCE以及Openstack平台下。详情,可了解 《Deis v1.0正式发布!》。
https://github.com/deis/deis
Flynn
Flynn是一个使用Go语言编写的开源PaaS平台,可自动构建部署任何应用到Docker容器集群上运行。Flynn项目受到Y Combinator的支持,目前仍在开发中,被称为是下一代的开源PaaS平台。
https://github.com/flynn/Flynn
go语言的主流框架
Beego
Beego是一个完全的MVC框架,可以使用Go语言专业技术构建web应用程序。Beego框架下,可以自动化地实现测试、打包和部署。
Gin
机器学习与人工智能相关
Golearn
GoLearn是自称“内置电池”的机器学习资料库,绝对是首选项之一。GoLearn中一些接口使用的数据处理方式和scikit-learn(一个非常流行的Python机器学习项目)是非常相似的。其中另外还有一些使用C++构筑的线性模型go语言的主流框架资料库,但是其他的全是Go语言编写的。GoLearn实现了熟悉的Scikit-learn 适应/预测界面,可实现快速预估测试和交换。GoLearn是一个成熟的项目,它提供了交叉验证和训练/测试等辅助功能。
Goml
Goml自诩为“在线Golang机器学习工具”,据其开发者所言意思是其“包含了许多工具,能让你以在线方式学习其频道的数据内容。”这个项目之所以突出是因为其强调了其作为其他应用一部分存在的可能性,使得构筑“综合测试、大量文档以及简洁、高效、模块化的源代码”更加容易些了。但是如果你需要的知识解决基础的二元分类问题(是否是垃圾邮件?),你可能更适合使用Hector这个更小型的资料库。
Gorgonia
最新的一个分支(或者某种程度上说最令人感兴趣的)是Gorgonia。这个机器学习资料库完全是用Go语言编写而成,据其开发者“chewxy”称能“提供动态建立神经网络及相关算法必需条件。”关键在于“动态”。和之前的机器学习资料库Theano一样,Gorgonia允许你使用一系列原始资料库中的高阶术语来描述神经网络的行为。TensorFlow资料库也使用这种方式,使得开发者不用再亲自编写算法,也不用再提交那些能在不同项目中重复使用的项目。为什么使用Go语言来编写这个机器学习项目Gorgonia?其开发者在接受采访中提到:“我写Gorgonia其中一个原因是我曾经花费太久的时间尝试云端中部署Theano(大约在两年前)。”
其他全部框架及组件
1.服务框架
gizmo, a microservice toolkit from The New York Times ★
go-micro , a microservices client/server library ★
gocircuit, dynamic cloud orchestration
gotalk, async peer communication protocol &library
h2, a microservices framework ★
Kite, a micro-service framework
2.独立组件
afex/hystrix-go, client-side latency and fault tolerance library
armon/go-metrics, library for exporting performance and runtime metrics to external
metrics systems
codahale/lunk, structured logging in the style of Google’s Dapper or Twitter’s Zipkin
eapache/go-resiliency, resiliency patterns
sasbury/logging, a tagged style of logging
grpc/grpc-go, HTTP/2 based RPC
inconshreveable/log15, simple, powerful logging for Go ★
mailgun/vulcand, programmatic load balancer backed by etcd
mattheath/phosphor, distributed system tracing
pivotal-golang/lager, an opinionated logging library
rubyist/circuitbreaker, circuit breaker library
Sirupsen/logrus, structured, pluggable logging for Go ★
sourcegraph/appdash, application tracing system based on Google’s Dapper
spacemonkeygo/monitor, data collection, monitoring, instrumentation, and Zipkin client
library
streadway/handy, net/http handler filters
vitess/rpcplus, package rpc + context.Context
gdamore/mangos, nanomsg implementation in pure Go
3.Web框架
Beego
Gin
Goji
Gorilla
Martini
Negroni
Revel (considered harmful)
编写一个简单的Go程序 hello.go(Go语言源文件的扩展是 .go)
实例代码如下:
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
执行以上代码输出:
$ go run hello.go
Hello, World!
来源 | 网络
@电气信息学院
计算机协会
以上是关于编程语言GO语言的主要内容,如果未能解决你的问题,请参考以下文章