最近几天闲着无聊,老大给推荐了一门新的语言golang(对于我来说),看了一些介绍,也写了几个小demo,马上爱上了这门语言,凭着一股“生命不止,折腾不息”的极客精神,也写个小博客,发表一些个人见解。
本人主语言Java,如果说比较,那就拿Java和golang做个比较,比较的目的不是要引发诸如“php是世界上最好的语言”这种无意义的语言之争,而是对语言的应用场景有个大致的了解,以满足不同业务场景的应用,其实对我来说更是一种学习,一种思维模式的练习。
先讲讲写golang程序的感受吧,写起来真是爽,没接触golang之前,用Java写程序,有IDE还好办,代码写起来也没觉得太冗长啰嗦,但用了golang就不同了,golang就像一把瑞士军刀,小巧、精悍、锋利,瞬间感觉Java在这方面弱爆了。上个HelloWorld代码比较下吧:Java版:
public class Main{
public static void main(String[] args){
System.out.println("Hello,world!");
}
}
golang版:
package main
import(
"fmt"
)
func main(){
fmt.Println("Hello,world!")
}
看到没,golang连分号都省了,简洁,不多说,以后还有更多的例子。
galang作为一门现代语言,博采众长,背后是google这座大靠山,吸取了各种语言的精华,其设计理念就是为解决软件工程中的诸多问题而生的,是一种偏向于服务端的编程语言,主要目的是为编写大型分布式系统提供支持,现在已经愈发成熟,像Docker、今日头条的微服务架构,七牛的云存储。下面说说golang的优点或者说吸引我的地方:
1.它在语言级别就提供了并发的支持,不像Java,是库级别的,而且并发的工具繁多,用Java写出高质量的并发程序是一件相当有挑战性的工作。而golang不同,首先它的并发模型设计的比较好,采用一种叫协程(这是一种更轻量级的线程)的概念处理并发,可以同时开启上万个协程而毫无压力,同时解决了线程切换的开销,能把cpu的性能最大化,尤其是在当前服务器动辄几十核的处理器上,把多核的优势发挥到极致,这是它比其它语言的最大优势。
2.它的标准库工具强大:这包括互联网应用、系统编程和网络编程。Go里面的标准库基本上已经是非常稳定了,特别是我这里提到的三个,网络层、系统层的库非常实用