V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
k9982874
V2EX  ›  分享发现

golang 是目前为止用过的最难受的语言

  •  
  •   k9982874 · 2017-11-22 13:59:32 +08:00 · 53662 次点击
    这是一个创建于 2590 天前的主题,其中的信息可能已经有所发展或是发生改变。

    没三目运算

    没泛型,别说 interface{}算泛型

    没函数重载

    没 template

    要啥没啥

    变量类型说静态不静态,说动态不动态

    没有杀手级的框架,写个 web 服务都要难受死

    我圆润的滚回 PHP 了

    第 1 条附言  ·  2017-11-22 15:16:10 +08:00
    对了,还有函数参数不支持预设默认值。。。
    126 条回复    2020-07-01 21:26:01 +08:00
    1  2  
    glues
        1
    glues  
       2017-11-22 14:02:30 +08:00   ❤️ 8
    基本都黑到点了
    feiyuanqiu
        2
    feiyuanqiu  
       2017-11-22 14:08:41 +08:00 via Android   ❤️ 11
    php 有这些?
    onlyhot
        3
    onlyhot  
       2017-11-22 14:09:32 +08:00 via iPhone
    @feiyuanqiu 哈哈
    hjc4869
        4
    hjc4869  
       2017-11-22 14:10:05 +08:00 via iPhone
    看着都难受
    yoa1q7y
        5
    yoa1q7y  
       2017-11-22 14:10:31 +08:00
    前排啤酒瓜子花生米
    cuebyte
        6
    cuebyte  
       2017-11-22 14:12:36 +08:00
    黑到一些點了,但 PHP 不比 go 好啊⋯⋯
    clino
        7
    clino  
       2017-11-22 14:13:07 +08:00
    "没 template"
    虽然我没用过 go,不过真没 template?
    takanasi
        8
    takanasi  
       2017-11-22 14:13:17 +08:00 via Android   ❤️ 2
    最臭名昭著的错误处理没说
    40huo
        9
    40huo  
       2017-11-22 14:15:21 +08:00
    前排
    Bigglesworth
        10
    Bigglesworth  
       2017-11-22 14:17:23 +08:00 via Android
    挤一挤,让我过去。
    dy7338
        11
    dy7338  
       2017-11-22 14:19:12 +08:00   ❤️ 1
    php 是全世界最好的语言
    isCyan
        12
    isCyan  
       2017-11-22 14:19:31 +08:00 via Android
    当然不能和 php 比,php 真是好用
    golang 适合搞一些小工具之类的,或者 api
    k9982874
        13
    k9982874  
    OP
       2017-11-22 14:29:59 +08:00
    @clino 咱俩应该说的不是一个 template

    @feiyuanqiu 没有,因为不需要

    @cuebyte 除了代码安全,没见那不好。如果说运行速度,python 都没说话。
    sorra
        14
    sorra  
       2017-11-22 14:37:15 +08:00
    @clino Go 是没 template 啊,所以有第三方项目在探索 https://www.v2ex.com/t/377298
    mkeith
        15
    mkeith  
       2017-11-22 14:39:57 +08:00
    最后 PHP 躺枪
    cuebyte
        16
    cuebyte  
       2017-11-22 14:40:09 +08:00
    @k9982874 仁者見仁,PHP 對於我來說:真值判斷簡直吃屎;寫個變量還要$符號,反人類; array 使用不統一,有方括號也有函數創建,而且數組與 map 混用⋯⋯;內置函數一大堆,並且命名缺乏規劃性。
    nullen
        17
    nullen  
       2017-11-22 14:42:34 +08:00   ❤️ 4
    没喷到点子上,入手一门语言切勿把其他语言带给你的观念给代入进去。
    wph95
        18
    wph95  
       2017-11-22 14:49:40 +08:00
    clino
        19
    clino  
       2017-11-22 14:55:42 +08:00
    @sorra #14 明白了,原来说的是泛形,我一看是 php 在做对比就想成了 web 的模板.
    SuperMild
        20
    SuperMild  
       2017-11-22 14:56:59 +08:00
    新语言肯定要和现有语言有很大区别才值得被创造和推广,Golang 最大的两个优点是语言特性少超快上手、和闪电般的编译速度,而这两大优点的代价之一就是暂时没有泛型。

    什么叫做“说静态不静态,说动态不动态”,Golang 绝对是静态类型,连这点你都搞不清楚吗?

    说框架和生态,不说语言的年龄不公平,Golang 的生态发展速度可以说是“惊人”的快。Go 1.0 是 2012 年发布的,同期的新语言,哪个的生态敢说比 Golang 好?
    Hellert
        21
    Hellert  
       2017-11-22 14:57:58 +08:00   ❤️ 9
    Go 语言的定位是系统语言,部分替代 C,要说友好性和 C 比才恰当。
    总拿 Go 和 Php, Python 这样的动态语言比较,是几个意思啊
    TangMonk
        22
    TangMonk  
       2017-11-22 15:00:55 +08:00
    我觉得挺好用的,我主要用来写底层的协议,没写 Web
    SuperMild
        23
    SuperMild  
       2017-11-22 15:02:06 +08:00   ❤️ 2
    语言特性本身要啥没啥,这是 Golang 的特点(说缺点可以,说优点也行),要啥有啥的语言又不是没有,C++就是,Golang 没必要重新发明 C++,不同的语言有不同的特点和适用场景。
    qleroooo
        24
    qleroooo  
       2017-11-22 15:10:15 +08:00
    web 框架有 beego,虽然不怎么样,不过要用框架用 java 啊
    k9982874
        25
    k9982874  
    OP
       2017-11-22 15:15:25 +08:00
    @SuperMild
    大牛,先把我前面说的理解了,自然就理解我为什么说 golang 变量类型说静态不静态,说动态不动态了。

    优点在哪?除了增加代码行数真没看出来
    skadi
        26
    skadi  
       2017-11-22 15:16:29 +08:00   ❤️ 1
    我一个 cpp 的使用者跑去写 golang。那才叫一个难受呢。
    不仅你提到的这些,还有语法以及好多黑膜法都用不了。
    2ME
        27
    2ME  
       2017-11-22 15:25:11 +08:00
    16 楼函数和语言结构都没搞清楚 低端黑
    boboliu
        28
    boboliu  
       2017-11-22 15:28:08 +08:00 via Android   ❤️ 1
    rust 不服我跟你讲
    prolic
        29
    prolic  
       2017-11-22 15:38:00 +08:00
    感觉随便写个语句就要开花括号,特别烦
    k9982874
        30
    k9982874  
    OP
       2017-11-22 15:43:28 +08:00
    @skadi 哈哈,我也写了好多年 C/C++,写 GO 的时候的感觉说不上来。感觉以前积累多年的套路一下全废了(摊手

    @boboliu 我认输,没写过 rust
    daizongxyz
        31
    daizongxyz  
       2017-11-22 15:52:29 +08:00
    写了三四年 golang,突然来写 C++,各种不习惯,由简入翻好难适应。
    recall704
        32
    recall704  
       2017-11-22 16:02:52 +08:00
    写了好几个月了,还行。

    只是刚开始的时候老用 python 的思想写代码。
    aksoft
        33
    aksoft  
       2017-11-22 16:06:39 +08:00
    开始确实难受,不过一门语言和另一门的功能都有了,还有另一门的特性 优点。。那另一门直接去吃屎了
    sensui7
        34
    sensui7  
       2017-11-22 16:12:02 +08:00
    还有一条, 包管理, 太敷衍了. 只能说比 include 头文件好用,
    MushishiXian
        35
    MushishiXian  
       2017-11-22 16:29:42 +08:00
    写起来是有点难受的...interface 用得不好的话各种蛋疼..
    timothyye
        36
    timothyye  
       2017-11-22 16:46:03 +08:00
    看明白了,原来是黑 PHP 的
    yuchenyang1994
        37
    yuchenyang1994  
       2017-11-22 16:47:05 +08:00   ❤️ 4
    刚开始用 go 的时候,也感觉是这样,tmd,要啥没啥,各种好用的魔法根本就没有,if err!=nil 写的我手疼,不禁大骂,什么玩意儿啊.......真的是垃圾....直到。。。
    我正在改写一个东西,拿到的库不能满足我的需求,然后我去看他的源码,黑魔法少,关键字少,看着流畅且不费力,分分钟把库改成我想要的东西。也许程序员并不需要那么多特性,人民不需要自由。。。
    ZSeptember
        38
    ZSeptember  
       2017-11-22 17:01:15 +08:00
    是黑点,在工程中,这些都不是真正的痛点。
    albertofwb
        39
    albertofwb  
       2017-11-22 17:40:36 +08:00 via Android
    @TangMonk 正在学习中,感觉底层撸起来还是蛮舒服的
    albertofwb
        40
    albertofwb  
       2017-11-22 17:42:46 +08:00 via Android
    @yuchenyang1994 为解决问题而生……哈
    webjin1
        41
    webjin1  
       2017-11-22 17:43:27 +08:00
    用 D 语言吧。
    falcon05
        42
    falcon05  
       2017-11-22 17:55:29 +08:00 via iPhone
    哈哈,才学了几天我也发现了,go 就是一门任性的语言,爱用用不用滚→_→

    我选择坚持.
    est
        43
    est  
       2017-11-22 17:55:40 +08:00
    就是带 gc 的 C 语言。
    jiangzhuo
        44
    jiangzhuo  
       2017-11-22 18:02:50 +08:00
    Dart 欢迎你
    gouchaoer
        45
    gouchaoer  
       2017-11-22 18:10:11 +08:00 via Android   ❤️ 1
    go 有 2 个优点,第一是协程带来的 io 高性能,第二是直接编译成二进制无依赖,就这两个就够了。。。至于写业务,php 可以很快很快
    iappled
        46
    iappled  
       2017-11-22 18:12:49 +08:00
    但是简单,工程化啊
    fuxiaohei
        47
    fuxiaohei  
       2017-11-22 18:30:17 +08:00
    会用动态的感觉,肯定是滥用空接口,反而写的折腾。
    Tink
        48
    Tink  
       2017-11-22 18:44:25 +08:00 via iPhone
    主要是能编译二进制
    mritd
        49
    mritd  
       2017-11-22 18:46:43 +08:00 via iPhone
    @falcon05 抽屉伙伴?
    strahe
        50
    strahe  
       2017-11-22 18:49:11 +08:00
    没觉得难受, 相反觉得写起来很舒服,
    guoziyan
        51
    guoziyan  
       2017-11-22 18:50:53 +08:00
    滚回宇宙最好的语言吧 [手动 dog]
    21
        52
    21  
       2017-11-22 20:38:01 +08:00
    Golang 可以看做 C 语言的填坑加强版
    wevsty
        53
    wevsty  
       2017-11-22 21:09:02 +08:00   ❤️ 1
    看到列的这几条,我只想说,你确定你要的不是 cpp ?
    littleshy
        54
    littleshy  
       2017-11-22 22:24:39 +08:00
    这也是让我一个写 C#的转了两次都放弃的原因。
    后来一想,其实我并不需要呀,C#、Python 用着就很爽了啊。
    leitwolf
        55
    leitwolf  
       2017-11-22 22:25:08 +08:00
    就喜欢它的特性少,每个人的写法都差不多。
    还有就是直接生成二进制不用配置什么依赖环境。
    missdeer
        56
    missdeer  
       2017-11-22 23:01:13 +08:00 via Android
    你需要的是 cpp
    jowuIM
        58
    jowuIM  
       2017-11-22 23:21:56 +08:00
    ....我也使用 go 来学习系列比较底层的协议的,说实话 web 开发我还是习惯用 Java,只有写 typescript 的时候很有写 go 的感觉
    stabc
        59
    stabc  
       2017-11-22 23:24:19 +08:00
    @yuchenyang1994 代码可读性也许跟程序员的关系更大呢?
    asen1987
        60
    asen1987  
       2017-11-22 23:35:34 +08:00   ❤️ 11
    abcbuzhiming
        61
    abcbuzhiming  
       2017-11-22 23:50:15 +08:00
    golang 非常适合写底层的小工具,写大玩意我个人觉得这东西和 node.js 一样,生态圈不够成熟
    scnace
        62
    scnace  
       2017-11-22 23:56:08 +08:00 via Android
    PHP:这都能黑我?
    ddou
        63
    ddou  
       2017-11-22 23:56:30 +08:00 via iPhone
    为什么要给自己过不去用 go 写 web 服务? java,c#,ruby,python,nodejs,随便挑个框架都能很 6 的写 web 服务。好钢还是要到刀刃上!
    scnace
        64
    scnace  
       2017-11-22 23:57:16 +08:00 via Android
    还有人家叫 Go …
    leyle
        65
    leyle  
       2017-11-23 00:40:17 +08:00
    遇到那种直接在数据库里面写程序的,他们定义的结构,那叫圆环套圆环,套了一层又一层,按他们的结构给他们传数据时,才叫恶心。
    Technetiumer
        66
    Technetiumer  
       2017-11-23 01:05:39 +08:00 via Android
    @scnace 聽說 Go 有人佔了 於是 Google 的 Go 就 Golang
    Sliverburger
        67
    Sliverburger  
       2017-11-23 03:55:05 +08:00
    不熟和难用不一样

    Go 我用 200 行写出一个类似 ip.cn 的网站,PHP 需要多少?随便 Github 上看了个类似网站的文件,吓一跳 mmornati/myip/blob/master/index.php

    Go 的网站我可以直接 go run website.go 几乎什么都不需要,PHP 不要 Apache 或者 PHP-FPM 能行?

    各有个的好处,Go 也不是说上来就让你做网站用的。
    lrxiao
        68
    lrxiao  
       2017-11-23 06:21:12 +08:00
    大括号不能换行(滑稽)
    lrxiao
        69
    lrxiao  
       2017-11-23 06:22:03 +08:00
    不过你说的这些全是坑(
    看看函数重载 /模板 C/C++标准写了多长?
    siteshen
        71
    siteshen  
       2017-11-23 07:31:56 +08:00
    说得很对,这些楼主想要的几乎都没有,(除了 go 明确是支持自动推导的静态类型)。

    另外 template ( c++)和范型( java?-不很清楚这块),函数默认值( python )和函数重载( c++/java )都能解决同样的问题,有一个就可以了。(当然了 go 都没有……)
    skadi
        72
    skadi  
       2017-11-23 08:59:47 +08:00
    @siteshen 然后 interface 里面啥都装了
    Clarencep
        73
    Clarencep  
       2017-11-23 09:00:34 +08:00
    确实写起来没有世界上最好的语言 -- PHP 好。

    但是,不得不说两句:

    “没泛型,别说 interface{}算泛型” -- PHP 好像也没有泛型呀,话说都是 duck type 的,要泛型干啥

    “没函数重载” -- 哎,说得跟 PHP 有重载一样

    “变量类型说静态不静态,说动态不动态” -- golang 明显是静态类型,只是类型推断系统很牛 x

    “没有杀手级的框架,写个 web 服务都要难受死” -- 不评价,反正我用内置的 http 感觉挺好,挺稳定的
    GreatHumorist
        74
    GreatHumorist  
       2017-11-23 09:04:01 +08:00
    @Sliverburger 建议不清楚不要乱黑
    Yuansir
        75
    Yuansir  
       2017-11-23 09:08:06 +08:00
    又黑 PHP
    zjqzxc
        76
    zjqzxc  
       2017-11-23 09:12:37 +08:00
    @Sliverburger #67 php 能活到今天就是因为其在 web 领域的开发效率

    用 go 来黑 php 的 web 开发效率?????
    k9982874
        77
    k9982874  
    OP
       2017-11-23 09:28:24 +08:00
    @siteshen
    “变量类型说静态不静态,说动态不动态”这句话说的有问题。
    应该要表达变量类型推导这么 NB,为啥没有静态语言的特性(泛型,多态)
    然而也没有动态语言的语法糖。

    @Clarencep
    没错 PHP 和其它动态语言也没有这些东西,是在语言设计时已经规避了问题或者提供了其它方案。


    @Sliverburger
    我相信 GO 可以 200 行写一个 ip.cn ,甚至你说 200 行写个 facebook 我也信,这是框架或者库提供的便利与语言本身无关。

    lumen 框架支持『 php -S localhost:8000 -t public 』启动一个 Server。同样这不是语言层提供的优势,只是看框架是否愿意支持而已。
    jxl
        78
    jxl  
       2017-11-23 09:30:14 +08:00
    go 去你的 爱用不用
    zjqzxc
        79
    zjqzxc  
       2017-11-23 09:47:38 +08:00
    @k9982874 php -s 不是框架的,是 php 自己带的
    http://php.net/manual/zh/features.commandline.webserver.php
    zyh94946
        80
    zyh94946  
       2017-11-23 09:51:14 +08:00
    @Sliverburger 给你科普下 php [options] -S <addr>:<port> [-t docroot] Run with built-in web server.
    lbp0200
        81
    lbp0200  
       2017-11-23 10:27:20 +08:00
    泛型,暴露了楼主是 Java 程序员,坐山观虎斗,哼哼。
    mooncakejs
        82
    mooncakejs  
       2017-11-23 10:43:55 +08:00
    go 需要一个 typescript 差不多的 typego
    cholerae
        83
    cholerae  
       2017-11-23 11:17:34 +08:00
    泛型和模板简直是说烂了的问题了,Go 没有的原因是会拖累编译速度,而编译速度快是 Go 语言诞生的目的之一。等 Go team 找到了合适的解决方案就会加,不过至少要等到 Go 2 了。不过,在有接口的情况下,究竟有多少场景真的需要泛型和模板?

    函数重载和三目运算这些更是可要可不要的东西,而且会给不够熟悉的代码的阅读者造成混淆,代码不是越短越优雅的,为什么不写得清楚一点呢?
    hmli
        84
    hmli  
       2017-11-23 11:18:17 +08:00
    求你别黑 PHP 了
    zhangtao
        85
    zhangtao  
       2017-11-23 11:29:40 +08:00
    我只想说,go 能解决 php 没法解决的问题,这就够了
    pqee
        86
    pqee  
       2017-11-23 11:54:24 +08:00
    几年前我写 go 的时候什么都能忍,错误处理不能忍。
    50vip
        87
    50vip  
       2017-11-23 13:10:04 +08:00
    需要和 js 一样,产生一个 typego
    joye1230
        88
    joye1230  
       2017-11-23 13:43:11 +08:00
    php 程序员莫名遭黑啊

    我接盘过 php 的 workerman 项目觉得,后面换了 golang 的 leaf
    场景不适合->写的不爽->开喷 手动滑稽
    cloud107202
        89
    cloud107202  
       2017-11-23 13:50:44 +08:00
    楼主说的没错啊,难用还不让人说了?只拿出反正我自己写 xxx 时候 blahblah 没什么意义。

    还有关于社区所谓的 我们目标是编译快 -> 泛型很影响编译速度 -> 我们舍弃了泛型
    cloud107202
        90
    cloud107202  
       2017-11-23 13:51:07 +08:00
    不是所谓的舍本逐末么
    solee
        91
    solee  
       2017-11-23 14:48:57 +08:00
    终于有兄弟吐槽了啊~ 一个包管理就搞到我吐血了,ORM 也不是很完善。 本来无事想学学 go 做个小项目,结果发现处处都是泪啊。 只能说仁者见仁吧,我还是喜欢我的 node,pm2, npm, sequelize
    solee
        92
    solee  
       2017-11-23 14:51:08 +08:00
    语言有语言的特性,但是使用便利度,我到现在位置没有感受到~
    Richardweii
        93
    Richardweii  
       2017-11-23 14:58:12 +08:00
    用不用 go 都在这里
    SuperMild
        94
    SuperMild  
       2017-11-23 15:07:19 +08:00
    @solee 从动态语言转到静态语言、从生态丰富的旧语言转到刚开始发展的新语言,写小项目,使用便利度不高是很正常的。你试试别的与 Go 一样年轻的静态语言,就能体会了。
    zjyl1994
        95
    zjyl1994  
       2017-11-23 15:10:49 +08:00
    只有我用 Go 给 ARM 设备写软件么? hhhh
    solee
        96
    solee  
       2017-11-23 15:15:32 +08:00
    @SuperMild 主要是没有领路的,选什么包管理,进程管理有什么可用的 module,ORM 哪个比较好。感觉因为是上升期吧,都是百花齐放,感觉还没有形成比较突出的包。这就给我这种有兴趣的很大的困扰。
    a591826944
        97
    a591826944  
       2017-11-23 15:16:35 +08:00
    nil
    wuhau
        98
    wuhau  
       2017-11-23 15:30:20 +08:00
    @zjyl1994 我用 go 写 openwrt,每次写完都得想办法缩减体积,不然放不下去。
    k9982874
        99
    k9982874  
    OP
       2017-11-23 16:49:27 +08:00
    @solee 本来也想放上来,弄明白规则之后用 dep 还是挺好用的。


    @a591826944 本来也想吐这个,不过不算是大问题,毕竟用人家的东西,得听人家的。
    loading
        100
    loading  
       2017-11-23 16:57:12 +08:00
    if err != nil {


    上面这些字符,我是用过键盘的固件功能,一键输入的,可想而知多恶心。
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3024 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 14:28 · PVG 22:28 · LAX 06:28 · JFK 09:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.