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

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

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

12323 次点击
所在节点    Python
105 条回复
Alias4ck
2023-08-21 10:30:01 +08:00
@chaleaochexist 开团了什么叫所谓的开源项目,django 本来就是开源的,您的意思它是不开源的? https://github.com/django/django
chaleaochexist
2023-08-21 10:31:34 +08:00
@realNewBee #79
我相信你所在团队的管理能力.

但你相信所有团队都有这个能力嘛?
chaleaochexist
2023-08-21 10:33:14 +08:00
@Alias4ck #80 我想表达 django 的源码 不易读 一个类 我不知道有哪些属性, 这些属性指不定在哪里发生变化.
在不下断点的情况下.
chaleaochexist
2023-08-21 10:35:21 +08:00
还有就是, 如果一个可以通过团队管理解决, 一个不需要团队管理解决我为什么一定要选需要团队管理的语言?
在譬如成本.
可以通过扩展硬件来弥补低性能, 但是我为什么不用 golang/java 来解决这个问题呢?
为什么一定要头铁选 python 哪怕要付出额外的成本?
chaleaochexist
2023-08-21 10:36:25 +08:00
另外统一风格也要看统一到什么程度 如果把规范写成一本书, 所有人都要按照那个规范来做的话, 本身时间成本就很高, python 最大的优势也没有了.
x2ve
2023-08-21 10:36:53 +08:00
我的饭碗不允许我随便选择语言 哈哈 大部分人应该都一样吧
chaleaochexist
2023-08-21 10:45:34 +08:00
其实 我本人就是 python web 后端, 从个人情感上不应该反对 python.
我们选择 python 的原因是我所在项目偏运维开发, 而运维很多都熟悉 python, 很多开发工程师都是运维转过去的, 慢慢的就以 python 开发为主了.

但是针对互联网项目, 我给你举几个例子
知乎 python-->go
小红书 python --> java
饿了么 python --> java

有哪家公司 * --> python?
realNewBee
2023-08-21 10:49:11 +08:00
@chaleaochexist 对啊,那就是人的问题了呀。只是不同在于一个通过语言特性来做,一个是人来做。但不能说这是一门语言的缺点呀,只是用这门语言的人滥用特性所导致的问题而已呀。我之所以问 py 较于 go/java 到底差在哪这个问题,背景是: 因为我们公司之前就是要转 go ,但是写了几个 go 业务项目后发现,除了接口性能提升了几十 ms 外,几乎没有什么区别,而工作量之于之前是有所增加的,而这几十 ms 的差别对于用户来说却是几乎无感的。那 py 跟 go 比真就这么不堪吗?
chaleaochexist
2023-08-21 11:35:35 +08:00
@realNewBee
就是人的问题, 但是人的问题也是问题.

举个例子.
西方人肥胖率比日本人高.
所以 如果你是生产衬衫, 这两个国家投放的大码衬衫的比例应该是一样的, 因为 衬衫是没有缺点的, 差别是人.

我之前也估算过, 同样一个功能, golang 开发时间 == python * 3

这就是一个技术方案的取舍问题了.
没有十全十美.楼上很多人说的很清楚了.

python 的缺点有两个
1. 性能问题 -- 你的回复是性能提升不高
2. 动态类型 -- 你的回复是通过团队管理解决

好的, 那么请继续使用 python 吧.
但是对于性能要求高/提升高的或无法通过团队管理解决的公司, 这些就都是问题了.
chaleaochexist
2023-08-21 11:47:23 +08:00
关于提升性能的例子
https://zhuanlan.zhihu.com/p/48039838
chaleaochexist
2023-08-21 11:49:12 +08:00
```
1. 节约了超过 80% 的服务器资源。由于我们的部署系统采用蓝绿部署,所以之前占用服务器资源最高的几个业务会因为容器资源原因无法同时部署,需要排队依次部署。重构后,服务器资源得到优化,服务器资源问题得到了有效解决。
多人开发和项目维护成本大幅下降。
2. 想必大家维护大型 Python 项目都有经常需要里三层、外三层确认一个函数的参数类型和返回值。而 Golang 里,大家都面向接口定义,然后根据接口来实现,这使得编码过程更加安全,很多 Python 代码运行时才能发现的问题可以在编译时即可发现。
```
1 对应性能
2 对应动态类型
chaleaochexist
2023-08-21 11:53:21 +08:00
>>> 但不能说这是一门语言的缺点呀,只是用这门语言的人滥用特性所导致的问题而已呀

这其实就是缺点,
1. 因为可能导致滥用
2. 针对于 web 后端领域

你要说 AI 这些 就不是缺点是优点. 因为易用.

但是你标题说了是 做后端.
Philippa
2023-08-21 12:17:16 +08:00
Python 做 web 一般不是强项了,其实微服务还行,毕竟项目都比较 mini 。但涉及分析研究机器学习等,做 web 方便对接是大优势。

维护大项目简直灾难。但我不同意它比 Node 差,Node 的性能也没好到哪,单纯用 web 这个太窄了,后端涉及还是很大的,Python 在这方面有很多好的框架和拓展,从数据到 web 到机器学习,不是 Node 能比的。
PVXLL
2023-08-21 12:24:11 +08:00
别的语言变成屎山大概要两年,py 的只用半年,遥遥领先
macha
2023-08-21 13:40:23 +08:00
无他,一个只有跑起来才知道里面有什么数据的语言,重构真是灾难。
troywinter
2023-08-21 14:04:16 +08:00
语言本身的生态更重要,在国内 java 开发后端有大把的中文资料和从业人员,本身就处于优势地位,语言本身的优劣并不重要
raycool
2023-08-21 14:53:57 +08:00
差距在人而非语言
dif
2023-08-21 15:25:12 +08:00
接手了一个 python 屎山代码,我直接想吐。java 虽然也是屎山,多少拉的都规矩点。另外个别库 python 还安装不到 windows ,只能用 wsl ,结果也是一坨屎,每次重新打开项目,上一次配置的 interpreter 就会有些问题(目前我发现是只用 wsl+conda 偶尔会出现,wsl+pyenv 还算正常)。
mightybruce
2023-08-21 16:28:28 +08:00
看了大多数评论,都没有说的比较好的,语言不是关键,而是语言绑定的技术生态。
这年头不是只有 web , 后端也不是只有 web.
java 适合各种复杂业务,尤其是金融业务架构的,各种工作流架构。
go 那就是云原生, 中间件.
python 没有什么合适的,上升空间有限,不要拿什么机器学习,深度学习来说,这些根本不是学个语言就能进入的领域。
有人说性能不是关键,那是你做的业务开发一方面快递迭代根本不需要什么性能,另外其他性能因素都被中间件解决了。
再告诉你个更加接地气的回答
那就是在国内很多技术评审还有国企里,语言就是不平等的。用不同的语言来做连报价都不一样。
python, php 只能被用来做中小项目 (比如学校系统)报价很少的。
国企,和给国企做项目的公司 要服务成熟稳定,要求必须 java.
另外,用 java 好提高成本和服务,多申请钱,因为 java 比 go, python 吃了多了去的内存。
至于互联网公司,这年头有几个能活过十几年,能折腾几年没什么问题。
大的互联网能请到能人想怎么玩都有,还有优化 python 虚拟机,用 pypy 或 numba 各种写法来加速的。
bigjack
2023-08-21 17:30:18 +08:00
python 脚本语言,对开发者的要求比较高,最好是有完整的单元测试,否则和容易出问题,编译型语言可能不是很需要完整的单元测试吧,没有什么绝对的,Twitter 不就是用的 python 吗? python 性能问题用 c 语言也可以基本解决,适合自己就好

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

https://tanronggui.xyz/t/966460

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

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

© 2021 V2EX