近年想學一門新的語言,剛好看到了這篇稿子

发布时间:2018-11-20  栏目:w88优德官网电脑版  评论:0 Comments

章轉載自:http://www.kunli.info/2012/03/03/golang-feeling/

如若看了了下邊的章還不過癮,則可看一下這一篇:http://www.cnblogs.com/AllenDang/archive/2012/03/03/2378534.html

发一段时间没更新了。最近以忙一个Server+Client的品类,Client是Android手机,大概也不怕是几十底圈。
Server是纯粹Golang实现,没有apache或者ngix这种web
server,也尚无数据库,自己写了个公文管理module,handle这种小范围之服务没有问题。算下来点Golang也发四个多月了,断断续续写
了片物,这里纪录一下体会吧

先期盖说下怎么用Golang。我是一个对准语言来洁癖的食指,曾经是一个c+Python的死活呐喊者,最常说的同等句话就是是,只要熟练这简单种,什么
情况都能够应付,根本毫无Java和C++(纯指我所当的世界)。核心代码用c,速度快,需要记之言语细节少;外围用Python
glue,灵活,简洁,任何模块都爱上手,绝配。Java的繁琐,C++的不少空头的特色,都为自家只是当只能用之时刻才去用。Objective-C是
另一个我欣赏的语言,问题是不超越平台,过于封闭。

惋惜的是,在此节奏极快的时日,不是具有情况下还入上c。之前发生一个路也是近乎之架和局面,为了节省时间,当初几没有服务器平台编程经验的自己,
在劳务器端选择用Django+Apache+MySQL做,成熟,社区活跃,又是python作为根本开支语言,这些都是这选项的故。说实话,几单
月病故晚,回首看,这不是一个喜气洋洋的经历。Django是一个好搭,大而全,而那个如清一色有经常也就算象征臃肿,五花八门的布局,过紧的模块耦合对引入第三正
工具限制大多,自带的ORM又坏用。之前根本没抓了服务器配置的我,对Apache的安排以及效率所带来的零碎的事物吗头疼。总的来说是有些消费了自家非常
多时间,有新手上服务器编程的必经过程,也来折腾Django和Apache没必要的日子浪费,很大部分齐抵消了Python带来的神速支付的油滑。
而一旦服务器上线,动态语言带来的部分bug又见面被丁头疼。对于普通高校实验室这种无两全的服务器调试的条件,基本就是改了就算上线用,有些隐蔽bug到
某些规则分支才会硌,一旦在运作中途有题目,改起也累。

从那时起,我哪怕专门纪念,要是出一样栽语言会管c和Python的长处结合起来,也就是说

  • 速度快,高性能
  • 从简,需要记的言语细节少,开发迅速(c)
  • 活,开发快速,类Python的list,map等常用数据结构支持(Python)
  • 面面俱到之模块支持,模块也易于上手(Python)
  • 本着程序员友好之互动架构(Erlang)
  • 安全,绝大部分题目会除在compile time中(C minus pointer)

那基本就是系统级和网络级编程最对自身胃口的语言了。然后我便找到了Go。

Golang是一个新语言,截至目前为止,第一版本正式版还没有披露。Golang的设计者是Robert
Griesemer, Rob Pike和Ken
Thompson,当年设计C和Unix,后来之Plan9团队中之人
。Golang的规划意见非常显然,就是用动态类型语言的编程容易度和静态类型语言的安康效率结合起来。如果你想再也深刻摸底Golang的升华历史与完整
的靶子,请参见Golang
FAQ。

理所当然,Golang吸引我的地方,不是为那个是Google出品,也非是坐其设计者皆为大牛,而是坐,Golang真的做到了它所声明的对象。
Golang就如同C和Python中间的通盘结合,如果你是Python爱好者,又追代码的快慢以及并行化,那么简单说,Golang就是吗公设计之。
Golang有非常深刻的C的遗风,尽量遮C++和Java的熏陶,比如没有独自的OO体系(并无是说不克OO),一切为struct为中心,没有
exceptions(Oh
yes!),仍然有指针,等等。但是,Golang又吸取了很多初语言的花,并蕴含自己特别的计划性。比如

  1. 保留但巨大简化指针

Golang保留在C中值和指针的分,但是对于指针繁琐用法进行了大气之简化,引入引用的概念。所以在Golang中,你几乎不用操心会因一直操作内寸而引起各式各样的荒谬。

  1. 大抵参数返回

还记在C里面为了回馈多个参数,不得不开辟几截指针传至目标函数中于那操作么?在Go里面这是一点一滴无必要之。而且基本上参数的支持让Go无需使用繁琐的exceptions体系,一个函数可以回去期待的返值长error,调用函数后马上处理错误信息,清晰明了。

  1. Array,slice,map等内置基本数据结构

一经你习惯了Python中精简之list和dict操作,在Golang中,你无见面感觉孤独。一切都是那么熟悉,而且进一步高效。如果你是C++程序员,你晤面发现而同时找到了STL的vector
和 map这对情侣。

  1. Interface

Golang最被人赞叹不易的特征,就是interface的设计。任何数据结构,只要实现了interface所定义之函数,自动就implement了这interface,没有像Java那样冗长的class申明,提供了利落太多之设计度和OO抽象度,让你的代码也酷干净。千万不要看你习惯了Java那种一久一久加implements的法门,感觉还行,等接口的计划更复杂的上,无数Bug正在后面等正在你。

而,正为这么,Golang的interface可以据此来表示其余generic的东西,比如一个空的interface,可以是string
可以是int,可以是其它数据类型,因为这些数据类型都无欲实现其他函数,自然就满足空interface的概念了。加上Golang的type
assertion,可以提供一般动态语言才有duck typing特性,
而仍然能当compile中捕捉明显的失实。

  1. OO

Golang本质上不是面向对象语言,它还是过程化的。但是,在Golang中,
你可充分自由之召开大部分你当别的OO语言中会做的事,用重新简短清晰的逻辑。是的,在此间,不需class,仍然可持续,仍然可以多态,但是速度可快得
多。因为本质上,OO在Golang中,就是普通的struct操作。

  1. Goroutine

是几乎算Golang的招牌特色有了,我吧无思量多提。如果您了无打听Goroutine,那么你仅仅需要懂得,这家伙是极品轻量级的类似线程
的物,但经过它们,你莫待复杂的线程操作锁操作,不需要care调度,就能玩转基本的并行程序。在Golang里,触发一个routine和
erlang
spawn一样简单。基本上只要控制Golang,以Goroutine和channel为骨干的内存模型举凡必要明了的。不过请放心,真的非常简单。

  1. 重新多现代底特性

跟C比较,Golang完全就是千篇一律派别现代化语言,原生支持的Unicode, garbage
collection, Closures(是的,和functional programming language类似),
function是first class object,等等等等。

看样子此间,你可能会见意识,我用了森无限制,简单,快速之类的形容词来写Golang的特性。我思说的凡,一点还非浮夸,连Golang的入门学习
到增强,都比别的言语门槛低太多尽多。在多数总人口都有C的背景的时,对于Golang,从入门到能达标亲手做项目,最多未了半单月。Golang给丁之感
觉就是是不过直接了,什么还一直,读源代码直接,写自己的代码也直接。

出意中人一旦对抗了,你将Golang吹的这样好,难道它就不曾缺陷?有,当然发,不过与它的长于,我道多短都是盖整个语言最新,不熟,随
着时的推移都能够取得解决,相比之下还能忍心了。如果你指望更询问Golang的优缺点,可以参见以下yufeng写的立即首文章,系统编程语言明日之星
—Go(http://blog.yufeng.info/Go.pdf。

再有朋友要说,Golang这么好,为什么从来不人之所以?我怀念说,眼界放开点,这个世界精彩之东西比较你想像的基本上。Golang被Google用于Youtube的数据库,被进一步多的w88优德官网电脑版国外公司(大部分创业公司)用于后端开发,甚至于天朝,也来全用Golang做劳务支付的语应用企业了。可以说,随着Go
1即将到来之正统生产,Golang的施用限制,应该会愈加大。

哼,总结时

倘您是Python和动态语言狂热爱好者,Go不一定能够吃您带来十分非常的悲喜,这纯粹取决于你得种性质,考虑到Python目前在多地方还用C做为主运算,速度在大部分状下还无是殊题材。scalability是一个题材,但并无是人人都见面遇上的。

若果您是C爱好者,强烈建议你念与应用Go。Go可以调用C/C++程序,又提供了极其多之方便,速度上粗有牺牲,但并无酷。在绝大部分观下Go能给您带来媲美C的性,而于一些确实性能过于重要的场合,也得以经过cgo让Go和C搭配。

万一您是Java爱好者,除非您是做Android这种只能用Java的阳台,否则也建议您品味学习Go,这个开上发的反差如同比较开载着1吨石头的拖拉机和开保时捷911那么显著,而Java能叫您的,Go能给得重好。

使您是C++爱好者,!@#$%^&*,恭喜你,至少你的智商应该是尚未问题之。人生苦短,赶紧脱离C++这个苦海吧。你用来模拟89只C++高级特性的光阴,估计就用Go写了64个开源项目了。

假如您是像本人平的C和Python的发烧友,对动态语言又无异常的慈……我还需说啊啊?

受咱荡起双桨,去畅游Golang的海洋吧。

留下评论