V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
gamegrd
V2EX  ›  程序员

看到 GO 这么火,打算学一下,但是文档看到这一句我立即弃坑了。。。

  •  
  •   gamegrd · 2017-06-08 08:32:23 +08:00 · 28821 次点击
    这是一个创建于 2760 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Go 和 Python 在一般开发的平均水平测试中,Go 要比 Python 3 快 25 倍左右,少占用三分之二的内存,但比 Python 大概多写一倍的代码(详见引用 27 )。


    要多撸一倍的代码。。。额滴个神啊
    170 条回复    2019-08-02 23:36:16 +08:00
    1  2  
    dreamwar
        101
    dreamwar  
       2017-06-08 14:49:06 +08:00
    不学习的借口 get√
    a124553153
        102
    a124553153  
       2017-06-08 14:53:58 +08:00
    你 根本不懂,代码量多,学起来才简单吖,代码量少的其实隐藏了很多细节
    lzjamao
        103
    lzjamao  
       2017-06-08 15:08:20 +08:00
    从入门到放弃?
    lzjamao
        104
    lzjamao  
       2017-06-08 15:10:03 +08:00
    如果没十全十美的话。衡量下,性能和代码量多,好处远远大于坏处?
    wind3110991
        105
    wind3110991  
       2017-06-08 15:29:26 +08:00
    这位同学你可以走了,下一位面试者请进
    jtsai
        106
    jtsai  
       2017-06-08 15:33:10 +08:00 via Android
    @a124553153 然而我根本不想去管这些细节
    zzcchh
        107
    zzcchh  
       2017-06-08 15:34:46 +08:00
    有没有可能将一种语言转成另外一种语言的工具?
    junzki
        108
    junzki  
       2017-06-08 15:37:45 +08:00
    @zzcchh 听说有 BASIC -> Python 的工具。以及,WebAssembly 也算吧。
    xrlin
        109
    xrlin  
       2017-06-08 15:39:58 +08:00 via iPhone
    试一下 ruby,比 python 更飘逸,但是维护起来就痛苦了,特别是元编程用多了之后……
    chmlai
        110
    chmlai  
       2017-06-08 16:32:12 +08:00
    逻辑和数据流清晰, 代码量不大重要
    Mrink
        111
    Mrink  
       2017-06-08 16:32:45 +08:00
    @junzki 可以根据特定的功能以及固定规则的代码制作转换工具,想要通用的转化工具基本没可能
    qdwang
        112
    qdwang  
       2017-06-08 16:35:51 +08:00 via iPhone   ❤️ 1
    写代码必须算上 debug 时间 动态语言没 contract 的直接乘
    3 类似 js 这样的动态弱类型直接乘 6
    SuperMild
        113
    SuperMild  
       2017-06-08 16:41:18 +08:00
    竟然还要看文档才知道代码量比 python 多,看简介就知道 golang 是静态类型编译语言,你还能期待它比动态解析执行语言代码量少?
    iugo
        114
    iugo  
       2017-06-08 17:35:49 +08:00
    @cloud107202 视频地址...
    cloud107202
        115
    cloud107202  
       2017-06-08 18:15:34 +08:00   ❤️ 1
    @iugo
    &t=3052s ←_←
    chiu
        116
    chiu  
       2017-06-08 18:22:35 +08:00
    C++比 Python 多撸 10 倍的代码我都学了
    0asis
        117
    0asis  
       2017-06-08 20:26:04 +08:00
    其实现在好像性能瓶颈在语言上应用已经不多了吧
    gamegrd
        118
    gamegrd  
    OP
       2017-06-08 20:30:35 +08:00
    @chiu 从 Masm 入门,那东西 比 C++多撸 10 倍还不止......... 然后人总是越来越懒的
    gamegrd
        119
    gamegrd  
    OP
       2017-06-08 20:31:34 +08:00
    @gesse
    gamegrd
        120
    gamegrd  
    OP
       2017-06-08 20:32:13 +08:00
    @CEBBCAT 从 Masm 入门,那东西很熟悉 ......不过人总是越来越懒的
    wdhwg001
        121
    wdhwg001  
       2017-06-08 20:55:11 +08:00
    http://kemalcr.com
    你看这个怎样?
    mingyun
        122
    mingyun  
       2017-06-08 21:46:34 +08:00
    go 感觉语法略奇葩
    nomoon
        123
    nomoon  
       2017-06-08 21:58:05 +08:00
    @gamegrd 哥,python 自己的编译器没有多线程的。。。。加核没有用的。。。。
    tairan2006
        124
    tairan2006  
       2017-06-08 21:59:39 +08:00
    哥写了 N 年 Python,现在不还是在写 Java=_=
    herozhang
        125
    herozhang  
       2017-06-08 22:41:52 +08:00 via iPhone
    有想法,没业务量的初期,快速开发更重要。
    有业务量,没性能压力的中期,技术栈招人容易更重要。
    有性能压力,没充足资金的后期,压榨现有性能更重要。
    有了充足资金,请瞎折腾,公司有现金牛,一切都好说,可以追求些主义啥的
    QAPTEAWH
        126
    QAPTEAWH  
       2017-06-08 23:33:44 +08:00   ❤️ 1
    算上单元测试,代码量应该比 Python 少。

    日常黑动态类型 ✓
    jlkm2010
        127
    jlkm2010  
       2017-06-08 23:42:06 +08:00
    go 是强类型静态语言,py 是弱类型动态语言,完全不是一个概念,go 可以轻松玩转大型项目,py 的话就要拼大神了,才多一倍代码,值!
    xrlin
        128
    xrlin  
       2017-06-09 00:17:42 +08:00 via iPhone
    @jlkm2010 纠正一下,py 是强类型
    demerol
        129
    demerol  
       2017-06-09 00:39:48 +08:00 via Android
    @tiancaiamao 就是太简洁了
    changwei
        130
    changwei  
       2017-06-09 00:43:27 +08:00 via Android
    其实用一下 ide 和自动完成,代码量也不会多太多。即使是 java,注解加上用各种 ide 各种自动提示自动完成,感觉也不会比别的编程语言花太多时间。
    Miy4mori
        131
    Miy4mori  
       2017-06-09 03:36:51 +08:00 via iPhone
    @gamegrd 有个好的 ide,java 写起来都不是事。
    hinkal
        132
    hinkal  
       2017-06-09 07:02:35 +08:00
    代码量≠开发时间。一个几万行代码的项目,如果纯敲键盘的话也就半个小时就完成项目了,你真以为开发瓶颈在代码长度上?
    akring
        133
    akring  
       2017-06-09 08:16:12 +08:00
    @kopp123 兄弟出本书吧,名字都帮你想好了,就叫《如何消灭代码里的英文》
    wweir
        134
    wweir  
       2017-06-09 08:27:13 +08:00
    你是要代码量少并且效率高是吧?

    强行安利一波 Haskell
    你会发现效率、代码量都是次要的,重要的是智商
    wbt
        135
    wbt  
       2017-06-09 09:55:48 +08:00
    Go 很多东西都要自己写,我上次要找一个四舍五入的函数,结果 math 包里面并没有 。
    Kisesy
        136
    Kisesy  
       2017-06-09 10:01:19 +08:00
    @wbt 是啊,到 1.10 才会加到官方库
    jameshuazhou
        137
    jameshuazhou  
       2017-06-09 10:11:20 +08:00
    我怎么没看到官网文档里有这么句话?
    另外四舍五入为何还需要库? int(f+0.5)
    wbt
        138
    wbt  
       2017-06-09 10:40:28 +08:00
    @jameshuazhou 关键是有保留几位小数的问题,你这个只适用于整数的四舍五入。
    wbt
        139
    wbt  
       2017-06-09 10:46:26 +08:00
    而且还要考虑正负的问题,你这个方法应该只适合正数。
    qianguozheng
        140
    qianguozheng  
       2017-06-09 10:51:13 +08:00
    我是个业余选手,觉得你这个太无厘头了。
    1. 多一倍代码,看谁写的
    2. go 的精髓都不知道就知道火不火,有用吗?
    3. 以前用 python 写测试服务器,现在全用 golang 了,本人嵌入式,发现 python 的环境配置比 go 复杂的多啊
    CDog34
        141
    CDog34  
       2017-06-09 12:02:21 +08:00
    目测 LZ 是在这里看到的这句话: https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/03.8.md
    但是找了半天都没有找到文中提到的“引用 27 ”

    于是找到原书: http://files.cnblogs.com/files/rojas/thewaytogo.pdf
    这句话在第 42 页,在 594 页找到了引用链接的地址: http://www.theregister.co.uk/2010/05/20/go_in_production_at_google/

    建议 LZ 好好读一读这篇文章
    xiaoyu9527
        142
    xiaoyu9527  
       2017-06-09 12:13:21 +08:00
    GO 真的比 PYTHON 快 27 倍么? 这么牛逼?
    jameshuazhou
        143
    jameshuazhou  
       2017-06-09 12:31:59 +08:00
    @wbt math 里面确实没有。
    我一般用 fmt 格式化 float,就自动舍入了。
    涉及精确计算的,像银行分钱这类的,都是转成大整数,然后用专门算法处理。
    holulu
        144
    holulu  
       2017-06-09 12:34:13 +08:00
    想见识一下是什么文档
    myself659
        145
    myself659  
       2017-06-09 13:01:08 +08:00
    go 还是高效的 应该比 python 快多了 两个小时从链家爬了 60W 条数据
    donyee
        146
    donyee  
       2017-06-09 13:46:18 +08:00
    前天京东买的 深入浅出 nodejs,昨天送到后没拆开,今天退货了;
    重新下单一本 GO 并发编程实践; 6 不 6 ?
    flynaj
        147
    flynaj  
       2017-06-09 13:47:01 +08:00
    比 Python 大概多写一倍的代码(详见引用 27 )。

    这个不可能。
    package main

    import (
    "log"
    "net/http"
    )

    func main() {
    // Simple static webserver:
    log.Fatal( http.ListenAndServe(":8080", http.FileServer( http.Dir("/usr/share/doc"))))
    }

    你用一半的代码实现一下上面这个文件服务器!
    sunzhenyucn
        148
    sunzhenyucn  
       2017-06-09 14:26:21 +08:00
    我 Java 表示不服
    littleshy
        149
    littleshy  
       2017-06-09 14:31:07 +08:00
    那个大括号不能换行感觉好难受啊……
    PythonAnswer
        150
    PythonAnswer  
       2017-06-09 14:40:21 +08:00
    @flynaj 囧。。。一半不行,只好用一行实现了:

    python -m http.server 8000
    recall704
        151
    recall704  
       2017-06-09 14:55:47 +08:00
    自己玩怎么开心怎么玩, 但是现在项目要用了, 我也不想学 go, 但没办法阿.
    fasling
        152
    fasling  
       2017-06-09 15:02:23 +08:00 via Android
    代码量大不代表写起来慢
    coderlxc
        153
    coderlxc  
       2017-06-09 15:06:04 +08:00
    还是你没有刚需, 25 倍的处理速度, 占用 2/3 内存, 静态语言的优点就是性能好, 但代码多
    如果你是需要性能, 有可能就是这样的:

    我草! 快 25 倍!
    我草! 少占用 2/3 内存!
    我草!我草! 去你大爷的 Python!
    gamegrd
        154
    gamegrd  
    OP
       2017-06-09 15:25:19 +08:00
    @coderlxc 有道理。。。是这样子的
    issues
        155
    issues  
       2017-06-09 15:40:19 +08:00
    @PythonAnswer 吓的我赶紧试一下
    sagaxu
        156
    sagaxu  
       2017-06-09 15:55:57 +08:00
    @issues 你那是 python2,module 名字不同
    crazyjin
        157
    crazyjin  
       2017-06-09 15:56:04 +08:00   ❤️ 1
    敲代码的时间绝不等于开发时间。开发的时间大多花在了讨论需求,框架,数据设计,接口设计,调试,测试这些地方。写代码的时间少之又少。所以当一个对性能敏感的项目,我会毫不犹豫选 go 之类静态语言,哪怕多写一倍的代码。
    @herozhang 做自己项目的节奏!
    doenitz
        158
    doenitz  
       2017-06-09 16:12:49 +08:00
    本人 Python 开发,业余时间写点 go,首先说一下,个人感觉两门语言都很成功。
    然后看了看 Python 和 go 的源码,有以下的感觉:
    1、go 的源码写的比 Python 的源码要规整的多,也更易读;
    2、从内存处理线程处理的那部分源码来看,go 以后如果要进行加速优化的话要比 Python 简单些。
    毕竟 Python 最早是个人开发的,可能并没有考虑那么多。
    反正我是两门语言都喜欢,感觉都挺好的。
    carlonelong
        159
    carlonelong  
       2017-06-09 16:51:32 +08:00
    主要是泛型和面向对象太难用。
    WangYanjie
        160
    WangYanjie  
       2017-06-09 16:53:59 +08:00
    @hinkal 几万行,半个小时;每分钟输入 几千个字符?还是你代码都是吹出来的
    mahengyang
        161
    mahengyang  
       2017-06-09 16:59:25 +08:00
    @qdwang 有道理,ruby 除了打日志,找不到更好的调试方法
    araraloren
        162
    araraloren  
       2017-06-09 17:12:53 +08:00
    推荐几篇 “黑” GO 的文章

    一只有自闭的 gopher http://www.evanmiller.org/four-days-of-go.html

    https://github.com/ksimka/go-is-not-good
    chenqh
        163
    chenqh  
       2017-06-09 17:19:03 +08:00
    @issues python -m SimpleHTTPServer 这是 py2 的
    LINAICAI
        164
    LINAICAI  
       2017-06-09 17:20:31 +08:00
    @SuperMild 你这么说把 swift 当什么
    zonghua
        165
    zonghua  
       2017-06-10 01:31:05 +08:00 via iPhone
    @qdwang Python 都不知道传入的是 str 还是对象
    a7072547
        166
    a7072547  
       2017-06-10 10:54:57 +08:00
    想学什么做什么直接上手,
    这里给你推荐一个 专栏,可能会帮助到你
    https://zhuanlan.zhihu.com/goroutine
    hinkal
        167
    hinkal  
       2017-06-14 02:07:45 +08:00
    @WangYanjie 呀,没细算,那就几个小时吧。意思明白就行
    ziming2018
        168
    ziming2018  
       2017-09-04 09:14:56 +08:00
    最花时间的是找错误并解决错误
    buhi
        169
    buhi  
       2018-11-20 18:16:14 +08:00
    "我们 gopher 不需要泛型"
    necodba
        170
    necodba  
       2019-08-02 23:36:16 +08:00
    你说的很有道理,所以写 Java 的那些比写 C 的代码量多几倍,是活该咯(手动狗头
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2718 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 05:48 · PVG 13:48 · LAX 21:48 · JFK 00:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.