后端GOJavaC/C++Python,这些编程语言谁才是王者?个人文章

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

当然了,我也不是无脑鼓吹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等环境治理的工具,为混乱的环境治理隔离出一片宁静之地。但是,只能说没有对比就没有伤害。

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

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

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

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

对于不同的岗位,写之前专门看了慕课网的首页,慕课网首页做了非常详细的划分,这个分类对当前行业的划分也是非常准确的。

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

最常见的,也是大学时期常做的后端开发的工作,大部分都是Web开发,也即是面向数据库增删改查,编写接口的业务逻辑,向上承接前端(Web、安卓、iOS、H5等)的请求,完成数据组装并返回,兼顾性能的考虑,加入缓存层、分库分表等设计。

其次是Python,虽然Python有丰富的Web框架支持:Flask、Tornado、Django等等,但做小网站还行,用Python做大型项目的不多,早年PythonWeb技术的经典案件——知乎,因为性能,一些核心的服务,也已经改成Go。Python的Web多见于一些访问量不大的网站,比如一些运营平台、活动平台等。

微服务是近几年火起来的概念,随着云技术的不断成熟,现在都提倡把大服务拆成微服务,通过服务注册、服务发现来完成调用链关系,兼顾云的动态伸缩来实现无状态服务的扩容缩容,也已经是比较成熟的技术了。

在微服务里面,Java也是用得比较多的,SpringCloud已经为微服务环境提供了非常多的功能齐全的工具,上手便捷,开箱即用;但由于JVM进程本身的消耗,在一些使用微服务架构里面的关键模块,为了减少资源的使用和调度的成本,依然会使用C/C++来实现,通过通用协议对外提供服务。

微服务在这里提及,和Web后台这些不完全是并列的关系,微服务是架构,本身是不含逻辑的,Web后台也可以通过微服务架构来实现,因而在这需要强调下,这里主要是针对微服务生态提到JavaSpringCloud,Java提供了比较完备的微服务生态。

中间件是一个比较大的概念,在这里把与业务无关的服务统一视为中间件服务,常见的比如消息中间件。

中间件的开发工作在大厂也都被认为是后台开发;对于中间件,Java也是最常见的语言,Go语言也比较常见;其实中间件的存在主要依托于生态环境,一个开发的生态环境只有足够的复杂,也才需要中间件的存在,所以这也解释了为什么Java、Go才是最常见的语言。

存储服务,如数据库、文件系统、kv存储等,主要是使用C/C++。

云基础设施到今天基本是Go的天下了,依托kubernetes,今天非常多的云基础设施使用的都是Go语言,在资源调度、资源隔离等方面,Go都有非常成熟的使用。要说资源调度,本来Go语言就没多少年,现在的云基础设施为什么会成为Go的天下?

工具平台多指测试、运维等的平台,在实际场景中也有着非常核心的作用,对于这种工具平台,不要求很高的性能,但是一般会有很多临时性的需求,整体的规划也更模糊一些,对于这种场景,Python这种短平快的语言就很排得上用场,所以Python多见于这些工具平台的实现里面。

最后,关于编程语言,除了语言本身的生态,团队的技术栈也是影响你选择语言的重要原因,在有选择的情况下,还是需要根据大的生态做出更好的选择,对的语言做对的事情,事半功倍。

作者:咚咚呛

简介:

全栈工程师,目前就职于BAT的大数据部门,超过4年的技术研发经验,熟悉java、python研发,担任过多个系统研发主程,目前专注于分布式系统研发,在高并发、分布式系统有丰富的经验

慕课网,国内深受欢迎的互联网IT技能学习网站,IT教育行业的造梦者,也是前沿技术内容的创造者和传播者!在慕课网,只学有用的。

THE END
1.Web后端开发框架WebApi后端主流开发框架介绍C/S框架网Web后端开发框架|WebApi后端主流开发框架介绍 什么是框架? 框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法。另一种定义认为,框架是为应用开发者定制的应用骨架或开发模板,一个框架是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计、协作构件之间的依赖关系、责任...https://www.cnblogs.com/jonnysun/p/12348081.html
2.Web前端开发和后端开发的区别Web前端开发和后端开发的区别 web前端分为网页设计师、网页美工、web前端开发工程师首先网页设计师是对网页的架构、色彩以及网站的整体页面代码负责网页美工只针对UI这块儿的东西,比如网站是否做的漂亮web前端开发工程师是负责交互设计的。 web前端分为网页设计师、网页美工、web前端开发工程师,首先网页设计师是对网页的...https://www.imooc.com/article/8139
3.web前端开发与后端开发有什么区别?企业对于web前端开发工程师的需求量也越来越大,使得很多人也通过Web前端开发工程师培训课程成功的晋升为Web前端开发工程师,Web前端开发工程师作为一个专业技术岗位,需要掌握多种技术来构建现代化的网页和应用程序,今天八维职业学校和大家一起来看看web前端开发与后端开发有什么区别,希望对想要学习和了解web前端开发工程师...https://www.bwie.com/jsgh/231.html
4.软件开发中什么叫前端什么叫后端软件开发中什么叫前端什么叫后端醉卧美人膝 精选回答 前端和后端是有区别的,工作的内容和负责的东西是完全的不同的,以下以网站的开发为例: 1、前端开发 前端开发现在一般指的就是web前端开发工程师,其负责是网站前端页面也就是网页的页面开发,简单的说网站前端负责是东西是网站用户可见的东西,如网页上的特效、...https://edu.iask.sina.com.cn/jy/2JdiAtyi12p.html
1.后端开发工程师和web后端开发工程师有什么区别后端开发工程师高于web后端开发工程师。后端开发工程师平均工资¥21.7K/月,2024年工资¥21.8K,2024年工资低于2023年,web后端开发工程师平均工资¥17.7K/月,2024年工资¥17.9K,2024年工资高于2023年,统计依赖于各大平台发布的公开数据,系统稳定性会影响客观性,仅供参考。 https://www.jobui.com/gangwei/pk/houduankaifagongchengshi-webhouduankaifagongchengshi/
2.幕后英雄:后端开发——关于软件开发你需要知道些什么二、后端开发者都做些什么 后端开发者所做的事情可能会有很大的差异,这取决于他们正在处理的应用程序的规模与它们的应用范围【前端开发工作更多的是要创建用户界面并把它们连接起来,而不是实现让应用程序正常工作的实际业务逻辑;后端开发者往往比前端开发者要花费更多的时间来实现算法,并且解决问题】。比如:在Web开发领...https://blog.csdn.net/xiaochenXIHUA/article/details/143665153
3.什么是Java后端开发?cdhqyj的技术博客什么是Java后端开发? Java后端开发主要是指使用Java语言进行服务器端应用程序的开发。Java后端开发涉及到处理业务逻辑、数据存储和处理、与前端交互等方面的工作。具体来说,Java后端开发包括以下几个主要方面: 1、构建Web应用程序:使用Java开发框架(如Spring、SpringBoot、JavaEE等)构建Web应用程序,处理HTTP请求和响应,实...https://blog.51cto.com/u_14217621/8884499
4.前端后端分别是什么意思前端后端分别是什么意思? 前端和后端是指Web开发中两个主要的方面。 前端是指Web开发中与用户交互的部分,通常是指用户在浏览器中看到的内容,如网页、图像、音频和视频等。前端开发人员负责使用HTML、CSS和JavaScript等技术,设计和开发用户界面,使用户能够与Web应用程序进行交互。 https://www.pcfbw.com/6466.html
5.JAVA后端应该学什么技术javaJAVA后端应该学什么技术 Java语言是最常见的后端开发语言之一,Java语言由于自身具备构建多线程的能力,且体系结构比较中立,所以在大型互联网平台的开发中得到了广泛的采用。 目前要想从事Java的后端开发应该学习以下内容: 一、Servlet技术 Servlet技术是Java后端的重要技术之一,作为Java Web开发的核心组件,Servlet承担了Web ...https://www.jb51.net/article/210292.htm
6.使用ASP.NETCore了解后端Web开发.NET适用于通过 ASP.NET Core 学习后端 Web 开发的免费课程、教程、视频等。 ASP.NET Core 的最小 API 是什么? 最小API 是使用 ASP.NET Core 构建快速 HTTP API 的简化方法。可以使用最少的代码和配置生成功能完备的 REST 终结点。跳过传统的基架,并通过流畅声明 API 路由和操作来避免不必要的控制器。 https://dotnet.microsoft.com/zh-cn/learn/aspnet
7.最受欢迎的前端WebGIS开源库和后端开发框架开源地理空间基金会...后端webGIS 开发的另一个流行框架是 GeoNode。它是一个开源框架,旨在构建空间数据基础设施节点和地理空间内容管理系统。 GeoNode 有很多优点,其中之一是它具有强大的授权/认证机制。其次,它与开放地理空间联盟标准的使用具有广泛的互操作性,最后,它提供了广泛的用户友好功能。 https://www.osgeo.cn/data/1713e
8.web前端是做什么的Web前端是做什么的? web前端开发工程师是协调前端设计师和后端程序员实现网站网页或程序的界面美化、交互体验的一个职位。通常,一个网站或是APP程序的开发上线,需要通过前端美术设计、后端功能开发两大环节,而web前端工程师则是起到链接二者的作用。 随着越来越多传统企业转型为互联网+企业,以及越来越多的app应用的设...https://wap.hxsd.com/content/19727/
9.一文看懂Web后端开发「建议收藏」腾讯云开发者社区一文看懂Web后端开发 前言 由于网络上系统地介绍后端开发的文章实在太少,而最近有恰巧有许多同学问我“什么是后端开发?”、“你为什么喜欢后端开发?”、“做后端都需要学什么?”,那么我们就来讲一讲,到底什么才是后端开发。 定义 后端开发(Back-End Development,也称服务端开发、服务器端开发等)是创建完整可运行的...https://cloud.tencent.com/developer/article/2097193