Go在不知不觉中在国内崛起了,然而网上有文章说,Go在国外不怎么样,却在国内的关注度很高,当然我没有考证过,不做评论。这篇文章主要是从语言本身客观的说下Go的问题
Go的设计者宣称Go大道至简,的确,Go语言非常简单,容易掌握。然而这个世界是一个矛盾的综合体,简单未必就好,也未必不好。
1、Go语言简单,然而过于简单,自然语言表现力上要差很多,应用场景自然有局限性
2、Go不能手动管理内存(麻烦,不建议手动内存管理,和没有也差不多)所以不适合做内存服务,典型的应用是memcahce,redis等
3、Go的目标可以说是现好的C,然而C里面的一些语法结构它并没有对应的支持,导致一些C实现的函数无法调用,最重要的是一些系统调用(或者叫系统API),所以从这个角度看它只能代替C的大部分能力,既然定位为一个系统编程语言,那就一定要对C非常的友好,因为windows也好,linux也好,核心都是C语言实现的,总是避免不了要和它打交到,除非你的应用系统相关的任务恰好Go能满足
4、故意做了些语法糖以标新立异,比如省掉了括号等,这能做为这点吗?反正我觉得不算,可能是因为习惯了括号,就像人的阑尾是多余的,但是大多数人还是保留着,除非切除是必要的。当然有人说这可以少敲键盘,能少敲为什么要多敲。首先这对开发速度的提升是很微小的,因为开发不是打字比赛,况且也没有省多少,就像是缩进一样,不缩进也一样写代码,那为什么还要缩进,有人说为了排版看着舒服,这样就看着舒服了吗,其实这也不一定,刚学编程的人很少有人注意缩进,而且他自己看着也挺好,想想我们现在各种对齐的缩进其实都是被培养了的习惯,开始谁也没有这个习惯,既然养成了这个习惯,也没有什么不好的为什么要改掉呢
其实要说的还可以有更多,但本文的目的只是想提醒大家,不要盲从,大公司的东西未必全都好,最流行的东西也未必是最适合的,小众的未必不是更好的选择,学历高的也未必有能力,有能力的未必学历高,专家的话也未必是它自己真想说的,媒体的报道也经常是假象。这个世界真的需要认真思考
最后还是感谢Google公司的贡献,有作为总好过无作为