最近在尝试用go语言(golang)开发项目,觉得go还挺不错,相较于Python来说,静态语言的优点就是写完代码就能检查出大多数的错误,有效的避免运行时出现的琐碎的bug。另外对于vimer来说,静态语言是的代码跳转变得容易,这意味着我可以随时的跳到包源码里了。好像暴露了用vim写python时的一些缺陷,好吧,这其实不是缺陷,用Ctags可以解决的,只是懒的配。
vim这事确实值得一提,想想那些从pycharm转过来的同学吧,还在苦苦搜寻该拜倒在哪个IDE下。对于现在既要写Python又要写Go的人来说,没有什么比在一个编辑器里都能搞定更爽得事了,可见之前的学习成本还是有价值的。当然用Emacs和Sublime也一样搞定。
人碰到新事物的时候往往会自动的去匹配就事物,就好像你到一个新环境,遇到新的同事,你会想,这人跟我之前的xxx同学挺像,那人的性格和ooo挺像。或者是学习一门新语言的时候,这个map不就是之前的dict吗,只是稍稍不同而已,这个struct不就是C中的struct嘛。
这就是人类,本能的属性,这是个优点。类比记忆能让你快速的记住这个人和关键字,也能消除陌生感。唯一有一点需要注意的是只是相似而已,不是相同。因此不要发出这样的叫声:我靠,为毛在Python里可以这样,在这却不行,什么破语言。
当遇上新语言的时候,不要抵触,不要鄙视,了解那些不一样的地方,细究那些类似的地方,然后发现果然有所收获。
新语言入手仪式必然是HelloWorld:
package main
import "fmt"
func main() {
fmt.Println("Hello World")
}
这就是Golang的第一个语言,像不像Python?额。。那位同学你说什么,像C!好吧,这么看还真是。其实写多了发现比C要简单多了,对于一个在用Python战斗的人来说,我必然得把它映射到Python上的。你看那main不就是python中的 if __name__ == "__main__" 吗。从这几天写的代码来看,代码量确实接近Python。使用起来像Java还是因为我早先是做Java程序的,当然了如果我从C#直接转到Python的话我会说像C#。至于为啥,请参考上面。
觉得像Java,一是那两个熟悉的 {} (大括号),还有静态类型的声明,虽然Java我已然忘光,但感觉还在。
这确实是相当不错的做法,把上面的代码保存成hellowrold.go,然后执行go build helloworld.go,立马生成当前平台的可执行文件,只有一个文件,没有什么dll或so之类的东西。看样子就很好嘛,不过怎么升级呢?有人在群里问了,像C#或者VB,生成可执行文件的同时还可以生成dll文件,方便升级。但那是客户端的做法,我觉得在服务器端升级时直接在build一个然后放到服务器上就好了。比部署python简单多了。
闲扯了一大篇,总的来说Go还是值得学习的,就像是许世伟一直宣讲的,Go语言致力于减少程序员的心智负担,这点稍稍有点体会。掌握一门动态语言,再掌握一门静态语言必然是极好的,但是如何分配时间确实是个纠结的问题。建议学生,编程新手还是focus在一个语言上,培养特长(腿特长不算)。