V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
jason19659
V2EX  ›  Go 编程语言

最近想学 go 作为第二语言

  •  1
     
  •   jason19659 ·
    jason19659 · 2016-07-18 00:00:09 +08:00 · 7595 次点击
    这是一个创建于 2810 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近想学 go 作为第二语言, java 实在是写够了。大家有什么建议吗。 go 做第二语言好吗。开源环境怎么样。。
    122 条回复    2016-07-24 22:14:50 +08:00
    1  2  
    WildCat
        1
    WildCat  
       2016-07-18 00:02:03 +08:00 via iPhone
    JavaEye 的创始人 Robbin 比较反对,主要是他认为社区国人比例过高
    holyghost
        2
    holyghost  
       2016-07-18 00:09:05 +08:00
    go 和 rust 我选后者

    反正写应用都不是 java 的对手
    scnace
        3
    scnace  
       2016-07-18 00:21:58 +08:00 via Android
    golang 的开源环境还是挺好的呀(一个 go get 小能手视角
    SlipStupig
        4
    SlipStupig  
       2016-07-18 01:10:52 +08:00   ❤️ 1
    @holyghost 同样选 rust ,对 go 不是特别看好,但是 rust 曲线太陡峭了,而且包不够丰富,至今也没学明白!
    echo1937
        5
    echo1937  
       2016-07-18 01:48:54 +08:00 via iPhone
    我还是把精力比较多花在 Java/C 上面, JS 也不错。
    hooluupog
        6
    hooluupog  
       2016-07-18 02:13:57 +08:00
    挺好的,我就是 java+Go 。我很看好 Go 。
    java 主要工作使用,写一些其他的工具都用 Go ,以前都是拿 python 写。
    Jet
        7
    Jet  
       2016-07-18 02:36:26 +08:00
    go 作为主要开发语言好几年了。
    表示不需要其它语言了。
    caola
        8
    caola  
       2016-07-18 02:50:36 +08:00
    个人觉得 python 是个不错的选择之一
    gowk
        9
    gowk  
       2016-07-18 07:28:48 +08:00 via Android
    @SlipStupig 呵呵,呵呵呵
    riverphoenix
        10
    riverphoenix  
       2016-07-18 07:43:48 +08:00 via Android
    Go 真心不错,写了几天,再用回 java 各种不适应
    roychan
        11
    roychan  
       2016-07-18 07:49:47 +08:00
    学校开了 Rust 课,学了一点。感觉这语言不是很省心。做系统编程可能还行,搞开发还是算了。
    R18
        12
    R18  
       2016-07-18 07:51:36 +08:00 via Android
    我也有这个打算,学完 JS 高级就打算学了,不过没有可供离线的手册一类的东西好像。
    songjiaxin2008
        13
    songjiaxin2008  
       2016-07-18 08:13:32 +08:00 via iPhone   ❤️ 1
    @R18 了解一下 go doc
    darasion
        14
    darasion  
       2016-07-18 08:17:01 +08:00
    什么第二第三,工作用啥,你就得学啥!
    ChiangDi
        15
    ChiangDi  
       2016-07-18 08:25:28 +08:00 via Android
    @roychan 你们学校很高端啊!
    Powered
        16
    Powered  
       2016-07-18 08:27:11 +08:00 via Android   ❤️ 1
    说几点自己的体会: ):
    1/纯语法的学习是很快的,类库的学习重点在于多写多练多熟悉
    2/需求驱动,用它去实现需求
    3/Go 相对 c 有 gc ,但是存在的问题是延迟很高,十万个对象 1ms 的扫描时间,对需要 keep 很多对象的情形不友好。当然解决办法也很多
    4/调优 pprof 全面且可读
    5/社区中国人最活跃
    6/云计算的开源框架,几乎都是 go 写的, docker , etcd,runc,TiDB...
    7/go 是同步,处理高并发很适合
    zhuangzhuang1988
        17
    zhuangzhuang1988  
       2016-07-18 08:34:05 +08:00
    java?
    那就 scala/kotlin/clojure 搞起来..
    bigtom
        18
    bigtom  
       2016-07-18 08:46:25 +08:00
    @roychan 果然活捉上科大师弟一枚
    chai2010
        19
    chai2010  
       2016-07-18 09:01:52 +08:00
    Go 第一语言, Swfit 第二语言, C 负责给 2 者提鞋。
    weiweiwitch
        20
    weiweiwitch  
       2016-07-18 09:06:46 +08:00
    C 什么的转 go 不错, Java 什么的就不建议转 go 了。挑个 js 、 python 、 R 什么的学学挺好的。
    janxin
        21
    janxin  
       2016-07-18 09:07:09 +08:00
    第二语言我推荐 Python
    ryanking8215
        22
    ryanking8215  
       2016-07-18 09:18:14 +08:00
    java 是静态语言, 再学门动态语言么, python or javascript
    elgoog1970
        23
    elgoog1970  
       2016-07-18 09:21:33 +08:00
    工作中只有使用 golang,想学第二门语言,学什么比较好?
    Clarencep
        24
    Clarencep  
       2016-07-18 09:25:24 +08:00
    先学了再说,有这个功夫来讨论,都该把入门教程看完了
    leitwolf
        25
    leitwolf  
       2016-07-18 09:45:26 +08:00
    已经用 golang 替代以前 python 所做的工作了
    21grams
        26
    21grams  
       2016-07-18 10:12:41 +08:00   ❤️ 1
    go 只有中国人在用,也不知道中国人哪来的这股子热情,设计的稀烂的一门语言。
    assassinpig
        27
    assassinpig  
       2016-07-18 10:16:37 +08:00
    python
    whaha123
        28
    whaha123  
       2016-07-18 10:16:39 +08:00
    我们把 go 作为主力语言使用,生产力很不错,尤其写高并发的服务很方便
    kideny
        29
    kideny  
       2016-07-18 10:16:49 +08:00
    我目前在学 html+css+js+php+shell+nginx+linux+mysql,
    准备学 swift , go 。
    ghostsf
        30
    ghostsf  
       2016-07-18 10:26:56 +08:00
    学了再说
    elone
        31
    elone  
       2016-07-18 10:38:11 +08:00 via Android
    用过一段时间 go ,语法总是爱不起来。
    elone
        32
    elone  
       2016-07-18 10:39:10 +08:00 via Android
    @roychan 卧铺,看到你的 id 我以为是我的原 boss 。吓一跳
    kiwi95
        33
    kiwi95  
       2016-07-18 10:45:46 +08:00   ❤️ 1
    @21grams 感情 bit.ly, docker, nsq 全是中国人?真不知道你这是莫名其妙的自豪感还是莫名其妙的自卑感
    21grams
        34
    21grams  
       2016-07-18 10:49:04 +08:00 via Android
    @kiwi95 举个例没什么意义,我说几句事实而已,你就跳脚了,到底谁自卑?
    cloudzhou
        35
    cloudzhou  
       2016-07-18 10:51:00 +08:00
    大学毕业以来的学习路线: Perl - Java - Python - Golang
    Golang 适合高并发和大流量的中间件,有静态语言的优势,写起来又非常的方便。
    但是如果只是简单开发一个 Web 应用,用用成熟的框架就好了,并不一定要使用 Go 。
    cloudzhou
        36
    cloudzhou  
       2016-07-18 10:53:00 +08:00
    @21grams 实际上,目前最活跃,最重量级的 Go 项目,还真不是中国人主导的。
    clino
        37
    clino  
       2016-07-18 10:53:10 +08:00   ❤️ 1
    不明白"社区国人比例过高"这个有什么问题...这不是自我种族歧视吗? 要是说很多素质低的国人在用 go 还好些.
    TomShine
        38
    TomShine  
       2016-07-18 10:55:53 +08:00
    完全可以学习,挺好用的
    raincious
        39
    raincious  
       2016-07-18 11:06:41 +08:00
    @SlipStupig

    等你真的写 Rust 的时候可能会有不同的看法。 Rust 还是比较独特的语言,比如有 Borrow 。

    Borrow 这东西看起来很美,得到的效果也很好,但是有的时候就不是那么好用。

    之前在用 Rust 写 Suffix Tree ,直接抄了别人的 Java 实现,这是他的:
    http://www.pastie.org/10904255

    这是我转换过来的算法:
    https://gist.github.com/raincious/cb0b6b48efc3c63d6532c329fe362112#file-suffix_tree-rs-L70

    算法本身几乎是一样的,但是我用了大量的代码来绕过 Borrow ,这同时导致代码运行起来比较慢。

    所以这算法我自己用的时候还是改写成了 Unsafe 的,拿 Raw Pointer 直接上。

    当然,我写的 Rust 代码加起来还不到 5000 行,有可能是我不懂所以才搞成这样。(貌似可以直接用 Box 而不用 Rc RefCell 组合?)
    eurry
        40
    eurry  
       2016-07-18 11:08:05 +08:00
    第二语言我推荐 Javascript ,统治 Web 领域的语言
    MyFaith
        41
    MyFaith  
       2016-07-18 11:09:15 +08:00
    Python 吧
    WildCat
        42
    WildCat  
       2016-07-18 11:10:41 +08:00 via iPhone
    @clino 不是歧视中国用户。我也是 go 的大量使用者,国人过多带来的问题:
    一些国人的开源库无论是代码风格还是文档来看,不够国际化, issues 里也到处是中文。这相当于排除一些国外参与者。

    这个社区还有一些奇怪的问题,比如一些之前火起来的库,例如 revel 、 gin ,突然就不维护了。

    还有 TJ 也说过,做 Web ,对他而言,还是用 js 。
    orvice
        43
    orvice  
       2016-07-18 11:13:01 +08:00
    在学个脚本类型的语言吧。。
    jy01264313
        44
    jy01264313  
       2016-07-18 11:17:24 +08:00
    我觉得 java 熟练了再学习一下 python ,反正这两个我都是特别喜欢
    weiweiwitch
        45
    weiweiwitch  
       2016-07-18 11:31:53 +08:00   ❤️ 1
    @WildCat
    @clino
    其实简单总结下,就是 go 的生态环境还不行。

    现实一点,一门语言的语法好不好、设计理念先不先进、能写什么东西,这些都是其次。像我们这种要用语言来吃饭的人,关键还是看语言用的人多不多,未来能不能流行下去。

    照过往的历史来看,没有老外参与进来,只有国人维护的,能持续下去的案例真的很少,让人没有坚持学下去的信心。
    Laughter
        46
    Laughter  
       2016-07-18 11:50:29 +08:00
    楼主, 我是写 java 后端的, 我司要求全面转向 golang web
    golang 是很简洁, 但是生态不是很完善,
    没有比较好的包管理
    debug 基本靠日志, 没有顺手的 IDE 支持,
    用 golang 写 web 真的是痛苦的, 第三方库和 java 是没得比的,
    比较推荐 python
    Ixizi
        47
    Ixizi  
       2016-07-18 12:07:14 +08:00
    语言只是工具
    moose123
        48
    moose123  
       2016-07-18 12:15:30 +08:00
    为啥不选 Clojure 呢,保证这是你最后一门学的语言:)
    v1024
        49
    v1024  
       2016-07-18 12:17:24 +08:00 via iPhone
    学学 js 你还能做前端
    fuxiaohei
        50
    fuxiaohei  
       2016-07-18 12:19:54 +08:00
    更推荐 clojure
    songjiaxin2008
        51
    songjiaxin2008  
       2016-07-18 12:31:53 +08:00 via iPhone
    @fuxiaohei 我看您用 Go 挺多的,可以说说理由吗
    isabelle810
        52
    isabelle810  
       2016-07-18 12:33:26 +08:00
    。。。。
    roychan
        53
    roychan  
       2016-07-18 12:38:31 +08:00
    @bigtom TA 好
    svenFeng
        54
    svenFeng  
       2016-07-18 12:40:37 +08:00 via Android
    有空为什么不学学 lisp ,用 sicp 洗洗脑多好(・ิω・ิ)
    JohnSmith
        55
    JohnSmith  
       2016-07-18 13:00:44 +08:00
    @raincious rust 的类型系统是一道坎
    GeekGao
        56
    GeekGao  
       2016-07-18 13:10:02 +08:00
    Java first, then use Python
    GeekGao
        57
    GeekGao  
       2016-07-18 13:11:01 +08:00
    Go 的库实在太乱了,设计上没个统一的指导规范。
    itfanr
        58
    itfanr  
       2016-07-18 13:24:22 +08:00
    @chai2010 给 swift 提鞋?为什么这么说
    liuxey
        59
    liuxey  
       2016-07-18 13:47:39 +08:00
    首先 Go 和 java 从应用角度来说高度重合,所以不适合第二语言,不能扩展 LZ 的编程思想
    其二,类库和 IDE 成熟度和 Java 差的不是几年能赶上的,而且楼上也说过了,社区国人比例过高并不是一件好事
    最后我选 Rust
    Hongmin
        60
    Hongmin  
       2016-07-18 14:04:06 +08:00
    @svenFeng 大赞。
    latteczy
        61
    latteczy  
       2016-07-18 14:08:41 +08:00
    @21grams go 作为 Google 的亲儿子,你跟我说只有中国人在用,你太搞笑了吧?
    only0jac
        62
    only0jac  
       2016-07-18 14:09:17 +08:00
    @svenFeng
    @fuxiaohei
    @moose123
    语法愣是给看吐了:(
    真的是最后一门语言欸,看完直接不想再写代码了
    scarlex
        63
    scarlex  
       2016-07-18 14:38:27 +08:00
    我选了 Haskell , 诶嘿~
    panlatent
        64
    panlatent  
       2016-07-18 14:45:09 +08:00
    自己学习的话, 我更建议选一本解释型的语言, 比如 Python PHP Ruby JS..... Go 虽然很多地方很好, 但是和 Java 应该是同类型语言. 函数式语言的话我们自己写程序应用较少. 有一个拿来就能写, 写完就能用, 语法不啰嗦, 学习挺简单的"脚本"语言挺好
    wuxqing
        65
    wuxqing  
       2016-07-18 14:46:11 +08:00
    go 和 rust 面向的领域不一样
    go 的诞生就是为了高效的开发服务端应用, rust 是面向系统级开发,替代 c/c++的
    go 已经在服务端大量使用了,不少公司也在使用
    rust 可以说, 5 年内不会有大量使用的情况
    zoues
        66
    zoues  
       2016-07-18 14:57:15 +08:00
    @Laughter 谁用 go 写 web 这个有点诙谐了╮(╯▽╰)╭
    Laughter
        67
    Laughter  
       2016-07-18 15:35:26 +08:00
    @zoues 痛苦万分, 老板说, 万一并发上来了呢, 严肃脸
    wuxqing
        68
    wuxqing  
       2016-07-18 15:37:55 +08:00
    @Laughter 告诉你们老板,淘宝、京东这些站用到都是 java ,并发有他们大?
    douglarek
        69
    douglarek  
       2016-07-18 15:57:19 +08:00
    楼上的都那么厉害,随便举个语言满足以下五个优点( Golang 符合):

    1. 编译速度快,真的快; 2. 无虚拟机 3. 垃圾回收; 4. 天然并发; 5.内置跨平台编译
    winiex
        70
    winiex  
       2016-07-18 16:03:13 +08:00   ❤️ 1
    尝鲜的话没问题,如果做第二语言的话不太推荐。 Java 程序员的话,建议可以学一门动态语言,推荐 python ,主要是感受社区文化和与不同的工程实践。

    另外就是对 Java 深入挖掘,学的多不如学的深。
    sudoz
        71
    sudoz  
       2016-07-18 16:30:25 +08:00
    @winiex 赞回复
    Tom008
        72
    Tom008  
       2016-07-18 16:56:02 +08:00
    @Laughter 我觉得 go 适合做 rest api , 你前后端完全分离的话 go 很合适,否则还是用 php 或者 java 吧! 个人认为 go 可以用来做 imsvr 之类的应用,偏向网络层。传统的 c/c++ 开发起来效率太低,而且程序容易 crash , java gc 延迟比较大,而 go 取其两者的优点。
    karting
        73
    karting  
       2016-07-18 16:59:37 +08:00
    @winiex 好中肯的回复
    9hills
        74
    9hills  
       2016-07-18 17:02:00 +08:00
    @21grams
    > go 只有中国人在用
    < 感情 bit.ly, docker, nsq 全是中国人?
    > 举个例没什么意义

    语文学的不好,问下『只有』这个词是什么意思?
    sunsan05
        75
    sunsan05  
       2016-07-18 17:05:43 +08:00
    连谷歌自己都不用的语言你们指望啥?
    motecshine
        76
    motecshine  
       2016-07-18 17:10:40 +08:00 via Android
    @Laughter 你应该没有用过 vscose
    motecshine
        77
    motecshine  
       2016-07-18 17:11:30 +08:00 via Android
    vscode
    Tom008
        78
    Tom008  
       2016-07-18 17:37:41 +08:00
    @sunsan05 gophercon2016 你可以看到很多公司都有在使用,你这话信口开河吧!
    Laughter
        79
    Laughter  
       2016-07-18 17:53:35 +08:00
    @motecshine 试用了很多工具, vim-go atom+go 这两个插件更新跪掉的概率很高, 目前使用 idea+go ,
    IDE 重度者, 之前使用 idea debug java 太爱了,
    不知 vscode 的 debug 的效果如何?
    Laughter
        80
    Laughter  
       2016-07-18 17:56:33 +08:00
    @Tom008 是比较适合做 service 层, 直接 rest 比较好, go 的交叉编译很赞, 说到 GC, 额...没测试过, 不过 java 的 GC 是比较成熟的, 毕竟发展时间久
    janxin
        81
    janxin  
       2016-07-18 19:45:55 +08:00
    @Laughter vscode 的调试工具与 IDEA 的调试工具是一个,差距不大,不过 IDEA 我用的不多,具体差别不清楚了...
    不能用有多种原因,尤其是 go 版本更新时,建议所有插件依赖一定更新一下,否则容易出各种诡异问题。
    GC 成熟度现在只能说不错,但是超越 Java 还不能说。 一些数据可以参考 https://blog.twitch.tv/gos-march-to-low-latency-gc-a6fa96f06eb7 我们线上数据大致差不多
    lightening
        82
    lightening  
       2016-07-18 19:47:10 +08:00
    学学又没什么坏处咯。不过有点坑,比如那个没有版本号的包管理……
    lightening
        83
    lightening  
       2016-07-18 19:48:04 +08:00   ❤️ 1
    @holyghost
    @SlipStupig
    我觉得 Go 和 Rust 定位还是不太一样, Rust 更加底层一点,有点 C 的继任者的感觉。 Go 则比较偏应用,定位类似 Java 。
    janxin
        84
    janxin  
       2016-07-18 19:56:34 +08:00
    说道 Go 的版本号管理,现在第三方工具 Glide https://glide.sh 最新的更新已经支持 Semantic Versioning 功能,不过更多的功能是需要社区来做: 版本发布更多使用 tag 来进行。目前我常用的库里面只有 gopkg.in/redis.v4github.com/labstack/echo 实现了 tag 管理,很多项目还是大版本的 branch 来做的。这个需要更多的社区支持。
    janxin
        85
    janxin  
       2016-07-18 19:57:10 +08:00
    @lightening 我觉得更像 C++继任者 :)
    Balthild
        86
    Balthild  
       2016-07-18 20:16:17 +08:00 via Android
    @21grams 高中数学必修三第二单元逻辑学基础告诉我们,对于全称命题,只需要举出一个反例就可以驳倒。
    举例子对你说的「只有中国人在用」是最好的反驳。他还举了三个个例,实际上举一个就够了。
    21grams
        87
    21grams  
       2016-07-18 20:36:12 +08:00
    @Balthild 日常语言不是逻辑命题,拿着放大镜来分析是缘木求鱼。
    eightqueen
        88
    eightqueen  
       2016-07-19 00:00:35 +08:00
    不太喜欢 google 的开源技术,基本上都是试验性产品。
    reus
        89
    reus  
       2016-07-19 03:25:01 +08:00
    @wuxqing 京东底层用 go 挺多的其实
    yangxiongguo
        90
    yangxiongguo  
       2016-07-19 05:59:55 +08:00 via iPad
    同样的网站服务,中国用户人数是外国的几倍,这种高并发语言中国人用得多有什么问题了?
    holyghost
        91
    holyghost  
       2016-07-19 08:33:32 +08:00 via iPhone
    @lightening 对,所以我很期待 go 在应用上的爆发,现在看起来还是差了不止一点半点。

    另外中国人太多确实是个问题,不自觉用汉语沟通的人太多,很讨厌。
    xia0ta0
        92
    xia0ta0  
       2016-07-19 10:36:14 +08:00
    @fuxiaohei 没想到你也叛变革命啦
    exoticknight
        93
    exoticknight  
       2016-07-19 10:42:14 +08:00
    一到这种帖子就超多人回复
    smalltalk
        94
    smalltalk  
       2016-07-19 10:45:09 +08:00
    go 除了在工具性应用中比 java 方便外,从性能到工具链到库全面劣于 java ,如果不喜欢 java 语法,可以 kotlin 搞起。
    kotlin1.1 引入了 coroutine ,在表达能力上晋身一流行列。 go 仅仅是三流。

    为了开拓眼界,可以搞搞 rust ,基本上算是 C++ 的最佳实践版。

    还可以搞搞 swift ,这个语言进可服务端编程,退可移动开发,等以后语法上支持异步了, go 就死了。
    jeremaihloo
        95
    jeremaihloo  
       2016-07-19 15:37:49 +08:00
    看到一个一个大神在评价一门语言种种,给跪
    flowerains
        96
    flowerains  
       2016-07-19 17:39:11 +08:00
    学 PHP 的如果想学一门其他语言扩展一下知识面 选什么好呢?
    aabbccli
        97
    aabbccli  
       2016-07-19 17:42:44 +08:00
    最后还是得深入学习 C 语言
    shelltank
        98
    shelltank  
       2016-07-19 21:54:04 +08:00
    just go it
    shelltank
        99
    shelltank  
       2016-07-19 21:55:25 +08:00
    云计算领域很多重量级的 project 都是 golang 写的。
    Balthild
        100
    Balthild  
       2016-07-20 13:06:24 +08:00
    @21grams 看起来是自知无逻辑,拿着粉饰版的“认真你就输了”来搪塞
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3257 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 12:02 · PVG 20:02 · LAX 05:02 · JFK 08:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.