为了账号安全,请及时绑定邮箱和手机立即绑定

编程语言哪家强?谁是王者谁是青铜?

标签:
职场生活

作者| 慕课网精英讲师 咚咚呛

最近加入一个使用Go语言的项目组,由于此前对Go语言的了解还停留在理论认识的阶段,没有大型项目的经验,加入这个项目组让我算是真正体验了一把Go语言,职业技能树也更加丰富了起来。

Go语言的很多语言特性让人耳目一新,而最让我感到震撼的莫过于Go语言服务开发流程的简单便捷,通过Go Build出来的二进制文件,发布到服务器后,直接就可以运行。

相比C/C++语言出来的二进制文件来说,无需管理一大堆依赖、处理各种动态库、静态库等等的问题,且C/C++语言的开发流程,如果是和性能平台相关的程序,光是开发环境、编译环境就能够折腾个人几天,相比之下,Go语言的开发流程让人感觉舒服。 

当然了,我也不是无脑鼓吹Go语言,在Go语言的使用过程中也有一些不解和疑惑,为此也专门横向地对比了一下自己熟悉的语言:Java、C/C++、Python,主要是后台的语言。

开发环境

就开发环境而言,Go语言是最让人省心的;当然Java也很省心,只需要在本地和生产环境分别安装了JDK,其他基本和Go类似了,Java由于JVM中间层可以随处运行,Go的二进制可能需要根据二进制平台重新编译,但是现在主流的平台基本都已经统一了Linux版本,所以Go语言二进制我目前是没有遇到需要分别编译的情况。

C/C++、Python的开发环境就有点一言难尽了,先说Python,虽然Python使用简单,但是长久依赖历史版本2.x和3.x相互不兼容以及各种依赖包的问题,也是让很多开发者感到困扰,虽然有pyenv等环境治理的工具,为混乱的环境治理隔离出一片宁静之地。但是,只能说没有对比就没有伤害。

再说C/C++,由于是和平台强相关的语言,所以就链接库、路径、符号表等等,都和底层操作系统的关联更加密切一些,对开发者的要求也相对更高,但即使是优秀的开发者,也时常得被C/C++搞得焦头烂额,特别是涉及对别人的依赖的时候,由于编译时的平台、依赖等等,部分函数的符号信息不一致、菱形依赖等问题是最难搞定的,大型的C/C++项目需要强大的专业的团队进行环境治理。

运行性能

性能这个老生常谈了,其实就现在的开发而言,服务对性能的要求已经没有前辈们的那个时代那么高了,此前看过小时候玩的那些马里奥、魂斗罗等的游戏的实现,看他们是如何把图片素材、逻辑压缩到128k、64k的卡带内存里面,真的是精益求精。

今天就服务而言,即使对于大流量的服务,往往在追求极致性能和成本之间,更多的会选择扩服务、加机器来支撑起相关容量的服务;当然,不是说性能不重要,而是说在今天,性能的问题已经可以从更高的维度或者说从更多的维度解决了。

就具体语言的性能,没有对C/C++、Go语言的进行过压测,但从原理上来说,两者相差应该不大,而对于Java、Python,两者都有虚拟机,但是Python是解释型语言,Java虽然是由中间层,但是也有JIT技术的加持,性能也是更上一个台阶,但Java的GC问题和Stop The World的机制,也使得一些服务不会选择Java。

横向对比来说,各种语言就开发环境、运行性能而言,都有他们的特点,也各有长处、各有短板,这也使得这些语言在不同场景下,会有不同的使用频率。

Java、Python、Go、C/C++这几门语言,主要的应用都在后端开发这里,虽然后端开发是一个比较明确的方向,但也依然可以有很多细分的领域,不同领域常使用的语言也依然有很大的差别。


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
全栈工程师
手记
粉丝
26
获赞与收藏
108

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消