架构从零搭建002-语言选择

服务器端语言对比

现在服务端的语言选择面很多,通常用做服务端的有delphi、C++、.net 、 java、php、python、golang甚至是nodejs, 现在选择面太广了就不一一说明,这里只列举目前火爆的应用广泛的python、golang、java三种,并对它们进行对比。

Python
“人生苦短我用python” 一句话就释放了程序员对python的热爱,它的易学,上手快,以及伪代码式的编程风格深受广大开发者的喜爱。 也因此python的代码库特别丰富,我本人就曾经在JAVA中大费周章完成的功能,用python几行代码就搞定了。
但是即便这样也掩盖不了它性能差的事实,几十上百倍的性能差异是让我们不会选择它做核心服务的重要原因。
我并不是说python一无事处,如果我在做数据分析、网络爬虫等这些边缘应用时python还是首选

JAVA
这个不用说,论稳定性论生态论开源社区它都是佼佼者,从BAT到二三线的小互联网公司都有它的身影。 背后的Apach团队也给了它巨大的支撑,就说spring的威名就足够了,它让开发者关注的东西越来越少,把主要精力都用在业务上面。
我不喜欢的是:
1、关于编码,越来越多的框架、语法糖。。。,让实现一个业务可以用各种方式和写法,不同的开发者对一同一件事情的做法可能是截然不同的,这让团队协作起来会多少有点障碍
2、关于性能,一个WEB请求需要用到一个线程,虽然可以用线程池来减少创建,但是对于一个请求来说一个线程还是太多了,并且线程的上下文切换也是比较消耗的,毕竟对于大并发量的项目来说资源总是有限的
3、关于理念,JAVA是一个纯面向对象的语言,根深蒂固的理念是:我要创建的服务必须要有WEB层、service层、cache层、dao层缺一不可,否则可能会被认为是菜鸟,但我只是想写个接口提供一个服务而以!
4、具的实现被封装,让人难以顺道的知其然知其所以然,要转而变成极客去研究,开发者的大部分时间都在工作中赶项目进度,很难抽出大量时间去研究,这对开发者很不公平

Golang
2012年才发布出来的语言,相对历史悠久的JAVA来说它算是新生儿,仅仅几年时间就跃居所有语言的前十名,并且被一些新生企业及云计算平台广泛使用,开发者社区也在不断的扩大。
使用golang的企业有Google、Facebook、腾讯、百度、阿里巴巴、今日头条、京东、小米、360、美团、滴滴以及新浪等,其中今日头条80%的业务用golang搭建。
它的优点是性能好,开发速度快,编写风格统一没有那么多的语法糖,如果你的系统对并发性要求较高或是你需要做个消息系统,golang是首选。 它使用隔离的goroutines,这有助于节省CPU和内存等资源。这种资源效率不仅有助于提高性能,还能带来成本效益。
缺点是:
1、生态不够强大
2、不得不吐槽它的异常机制,不过下个版本会优化,就在年底或明年初
3、部分三方库被和谐,要翻出去才行,你懂的。 不过这些在github上面都有镜像,处理一下install在本地就可以了,本人亲测并不麻烦,至于运行还境就还不需要这些,打包好了直接运行,JAVA还需要一个JVM,这算是golang的另一个优点

结论
不难看出上面叙述中我对golang多少会有些偏好,其实我是个JAVA的老鸟,也正因如此我也对JAVA是爱之深,建意也多一点。同时我也是个golang的新手,不瞒你说使用golang不足一个月,对于一个架构师来说,语言并不是障碍。
我不能说这个语言好那个语言不好,存在就是合理的。我只是根据这个项目的特性选择了golang,还是那句话,适合你的业务的就是最好的。

说了两篇的理论,后面我会有不涉及公司业务的实验代码奉上


如果我的文章对您有帮助,我恭喜你
如果对我的文章有任何的疑问或批评,我特别感谢你,即使你不确定也请大胆的说出来

生命不止,let’s go go go !

猜你喜欢

转载自blog.csdn.net/wangqiang9x/article/details/84339969