Go 到底优势是在哪里?

2019-10-17 17:24:00 +08:00
 upday7

我们现在的项目是用的 django+restful 做接口,最近接触到很多 go 的内容,被网络上的讨论有点弄晕了。如果做接口后端,为什么 go 比 python 有优势,除了速度这些还有什么?

22200 次点击
所在节点    Go 编程语言
153 条回复
snoopygao
2019-10-18 10:24:30 +08:00
别说了,php 是最好的语言
julyclyde
2019-10-18 10:28:45 +08:00
@BubbleNoodle kube 也不是“必须用 go 来写”啊
尤其是那种异步系统,根本没什么性能需求
marco25
2019-10-18 10:30:51 +08:00
同意前面说的,django 的封装和优秀的文档使得对 HTTP/HTML 零基础的入门级开发也能很快上手。举两个例子:我学 django 的时候对 HTTP 毫无概念,是做着 django 现学的;我同学是做硬件的自己做了个电商网站卖到国外,当时我推荐他用 django,他毫无网络编程经验,居然看着文档一点点把支付 /后台什么都自己搞定了。没有 django 良好的生态很难想象一个新手能很快做这么完整的项目
julyclyde
2019-10-18 10:31:36 +08:00
go 的好处:
静态类型
编译出单个文件,基本可以不带运行时依赖
性能不错
风格上特别倾向于把外部代码 vendor 进来一起管理,对质量管控稍微有些好处(前提是你真的这么用了。我昨天还刚刚处理一起,在编译阶段使用 wget github master 下载外部代码一起来编译的事故)

不过这些优点其实主要是 python 的缺点衬托出来的

我爱 python
ArtIsPatrick
2019-10-18 10:40:04 +08:00
做 web 开发,语言本身的速度不是瓶颈吧,高并发场景都是用协程做的,性能相差并不大。
chengxiao
2019-10-18 10:49:19 +08:00
学学呗 我之前也是 python django
最近在写 go gin 了,差别也没想象中那么大
语法上适应一下就好了 性能改善是真的 部署是真方便 但是包管理跟 pip 比实在是坑
Hanggi
2019-10-18 11:03:20 +08:00
@ArtIsPatrick 你确定吗?试试都把线程开到最大,跑一下 GET 请求 hello world 压测试试?性能差不多?
yamasa
2019-10-18 11:17:36 +08:00
@optional java 语言特性过时,烂就算了,jvm 你踩啥呢? scala,kotlin 很烂吗?一大堆大数据框架 base 在 jvm 上没见你 go 来统统重构一道把 jvm 踢进历史长河呢?除开云计算 go 有一个领域能跟 jvm 比生态吗? 9102 年了 java/jvm 怎么还没死系列?
jpacg
2019-10-18 11:37:43 +08:00
@TangMonk 跨平台并不是只有桌面环境,科学上网工具基本都是用 Go 写的,.net core 就做不到了
mineqiqi
2019-10-18 11:41:34 +08:00
来看看 么接触过 go
qsnow6
2019-10-18 11:41:47 +08:00
少扯些没用的吧,本身就不是一类语言,整天扯性能问题,静态语言如果不比动态语言性能快,要它何用?

用动态语言不就图一个敏捷开发,即想即所得么。

go 要比也是跟 rust、Java 比,php、python 这类动态语言,支撑个 1000qps 很轻松,1000qps 知道什么概念吗?
a15819620038
2019-10-18 11:42:16 +08:00
etcd、k8s、prometheus 等等都是 go 写的...
TangMonk
2019-10-18 11:51:42 +08:00
jorneyr
2019-10-18 11:57:11 +08:00
天下武功,唯快不破
ArtIsPatrick
2019-10-18 11:58:56 +08:00
@Hanggi 开线程干嘛? Python 的协程是单线程实现的啊
mornlight
2019-10-18 12:10:37 +08:00
@zzlettle #41 朋友,好好说话。文字按逻辑分段,你这样几个字一换行群众们看起来很累的。
optional
2019-10-18 12:14:02 +08:00
@yamasa jvm 上语言一大堆,还是被 go 咬了一块下来本身就说明问题了。
ArtIsPatrick
2019-10-18 12:18:10 +08:00
@blless 你写过 Python 的高并发吗?还 GIL?
whyiyhw
2019-10-18 12:34:09 +08:00
我想问下 10W 并发是什么概念,自己心里没数吗? 1 秒 10W 请求跟语言关系还大吗?总感觉不管到哪都是张口就开,工程类不是讲究严谨吗?
ArtIsPatrick
2019-10-18 12:37:57 +08:00
Python 的问题在于它是动态脚本语言,本身维护起来就比较困难,再加上语法上有一些技巧又没有和 java 一样强大的规范,导致初学者的代码风格迥异,在系统做大后往往变得难以维护。但是对于一般的 web 高并发场景底层都可以用 libuv 之类的库进行加速。总之需要运行效率的地方用 C 来实现,web 服务本身用 Python,开发效率完爆 java、go 之类的,而且性能也不错。

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

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

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

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

© 2021 V2EX