Python 做后端,相对于 Java 或者 go 来说,到底差在哪?

2023-08-18 15:32:57 +08:00
 realNewBee

在 V 站这看了很多文章,都说 py 做后端怎么怎么差,都劝这转 java 和 go ,那 py 到底差在哪呢?本人就是干 py 的,5 、6 年了,也还没意识到差到哪去呀

11550 次点击
所在节点    Python
105 条回复
Lockeysama
2023-08-18 15:38:44 +08:00
语言本质问题,导致性能差点吧,没必要太纠结,合适的业务规模用合适的语言,需要快速不要求并发,Python 就是很好的选择,需要高并发,服务器资源又比较紧张的,选个内存占用低点,性能好点的语言就是更好的选择了
GeekGao
2023-08-18 15:43:32 +08:00
这都 2023 年了,还在讨论上个世纪的话题。
一句话:性能与易用性不可兼得。强调性能弱的人,大多是可以接受降低开发效率并无所谓学习难度的人。

抬杠的说:要性能,手撸汇编、C++去啊。
中立的说:难道不想早点写完代码摸鱼或下班吗,何必因为学习、开发曲线,大肆增熵难为自己咯。
ModiKa2022
2023-08-18 15:57:49 +08:00
一切以业务需求为准, 并考虑开发速度.
django 开发速度快, 业务能满足, 可以继续用
HyperionX
2023-08-18 16:02:42 +08:00
相对于 go 缺点:部署烦,跨平台烦,依赖安装一坨,异步编程极度痛苦,看同事 py 代码很痛苦
相对于 go 优点:灵活,可靠的第三方库多,很多语法糖相当舒适
araraloren
2023-08-18 16:02:44 +08:00
Performance is lower than jawa/go.
Dynamic type is hard to maintain in large project.
chaleaochexist
2023-08-18 16:05:07 +08:00
动态类型和性能带进来的问题.
你当然可以说 python 有对应的解决方案
譬如
typehint 和 coroutine
但是引入 typehint 和 coroutine 的同时也引入了复杂性,门槛.和开发效率降低等问题.
实际上还不如直接用 golang 来开发了.
chaleaochexist
2023-08-18 16:06:47 +08:00
感慨一下, 我仿佛看到了五六年前的自己...
chaleaochexist
2023-08-18 16:07:04 +08:00
2017 年 小红书 python 转 java 我也困惑了好一段时间.
8355
2023-08-18 16:07:54 +08:00
ggdsn
2023-08-18 16:12:32 +08:00
我倒觉得性能是次要的,工程复杂了之后 Python 难以维护更难受
bequt
2023-08-18 16:13:58 +08:00
小型项目 python 还行,大或者复杂,python 就开始麻烦了。。。
转 java 吧,标准化。
Nich0la5
2023-08-18 16:25:59 +08:00
性能差倒是可以扩容,主要问题还是代码风格难以统一,cr 做的不好代码质量更难保证,对于项目把控难度会大很多
realNewBee
2023-08-18 16:26:35 +08:00
这里统一总结一下,并统一回复
目前也没觉得 py 差到哪去。做业务开发无非就是 CURD ,其实大部分时候通过联表等减少 IO 就能让性能得到保障了。至于并发,对于单机确实没什么优势,但是可以通过 k8s 堆 pod 来弥补,同样能解决并发问题。对于大型项目,应该用微服务来进行分割,也同样能解决。所以,到底差在哪?
realNewBee
2023-08-18 16:30:48 +08:00
@ggdsn 工程复杂导致的难维护,其实主要的问题还是代码分层有问题,然后就是团队没有统一风格导致的吧。跟语言问题导不大呀
woodfizky
2023-08-18 16:37:29 +08:00
除了语言本身,招聘也是一个因素吧。搞 python web 的人不算多,招 python 搞 web 的岗位也少。
PTLin
2023-08-18 16:44:09 +08:00
可能这就是技术之外的原因了。
提到 java 就是生态丰富,spring 全家桶东西多,大企业都在用,有成熟的解决方案。
提到 go 就是 goroutine 并发能力强,生成的可执行文件小,谷歌背书,适合做中间件,适合容器化,适合微服务等等。
提到 python 大家首先会想到的标签肯定还是机器学习,数据分析,简单的脚本语言,动态类型不适合大项目开发。
实际上一般的项目用什么作为后端可能区别没那么大,语言主流框架的每秒请求数不那么重要,占用内存也不那么重要,要是这些真的至关重要的话早就换成 cpp 或者 rs 来写后端了,反正不管什么当后端不都是连接数据库 redis kafka 这些东西。这样的话从被贴满标签的三个语言里选就很好选了。
yazinnnn
2023-08-18 16:47:37 +08:00
岗位少

招聘岗位少 -> 用 python 写后端的少 -> 招聘岗位更少 -> ...

恶性循环了
Yc1992
2023-08-18 16:47:43 +08:00
你去写两年 golang 和 Java 就明白了
realNewBee
2023-08-18 16:55:06 +08:00
@Yc1992 java 确实没写过,golang 倒写过,做 web 的话,go 跟 py 确实没太多感受
Alias4ck
2023-08-18 17:02:10 +08:00
在 python 这个区关于语言的争论
让我想到了一位游戏开发作者 Jonathan_Blow (他是 braid 和 the witness 的作者
他为了解决 c++开发游戏中的复杂性,开发了一门编程语言 jai
性能和开发速度 有的时候你真的很难抉择
另外我有个问题,v2ex 是用什么语言开发的?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/966460

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX