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

Golang 还是 Rust?

  •  
  •   tonsonxu 2015-06-09 22:25:49 +8:00 17675 次点击
    这是一个创建于 3783 天前的主题,其中的信息可能已经有所发展或是发生改变。
    对C++不再有激情,服务器开发或者说后端,Golang还是Rust更有可能壮大起来?
    70 条回复    2015-06-13 20:32:45 +08:00
    lilydjwg
        1
    lilydjwg  
       2015-06-09 22:32:18 +08:00
    Go 和 Rust 的领域不太一样的。你的目标是什么?
    tonsonxu
        2
    tonsonxu  
    OP
       2015-06-09 22:32:35 +08:00
    这一上来,就被move到程序员节点了。。。
    tonsonxu
        3
    tonsonxu  
    OP
       2015-06-09 22:34:59 +08:00
    @lilydjwg 目标是linux服务端高并发和内核引擎(偏算法)。暂时还不想碰客户端、业务流程等。
    immjun
        4
    immjun  
       2015-06-09 22:38:41 +08:00
    @tonsonxu 楼主你应该没听说过 Nim .
    lilydjwg
        5
    lilydjwg  
       2015-06-09 22:40:14 +08:00
    @immjun 还没发正式版。

    @tonsonxu 算法 Rust 应该更快。对正确性的要求呢?对内存管理的要求呢?
    tonsonxu
        6
    tonsonxu  
    OP
       2015-06-09 22:47:21 +08:00
    @immjun 刚去搜了下,说Nim的目标是效率和优雅,这个很诱人啊。不过还没到1.0 :)
    lightening
        7
    lightening  
       2015-06-09 22:55:18 +08:00
    div class="reply_content">说实话我觉得 Swift 开源的话,对他俩威胁还挺大。他们两家执行力都比 Apple 差了好多。
    tonsonxu
        8
    tonsonxu  
    OP
       2015-06-09 22:59:32 +08:00
    @lilydjwg 最看重的是效率,但我觉得C++写起来好嗦,我没法做到有效率地开发。。。所以想找个替代品,哪怕做不到C++那种运行速度,只要不是差太远就好。
    ibigbug
        9
    ibigbug  
       2015-06-09 23:35:48 +08:00
    我个人觉得,对于 Golang 和 Rust,Google 大法好。
    1oscar
        10
    1oscar  
       2015-06-09 23:53:59 +08:00
    @lightening 已经开源了
    lilydjwg
        11
    lilydjwg  
       2015-06-09 23:59:12 +08:00
    @tonsonxu 要速度的话就选 Rust 吧,和 C++ 的速度相当(有时快点,有些慢点)。不过 Rust 的类型转换会比较多,错误处理会让你多写不少字(带来的结果是:没有错误被不小心忽略掉没处理)。

    @lightening 不要忘记了 KHTML 的遭遇。而且现在开源也太晚了,又没有(让我看到)什么特别的优势。

    @1oscar 已经开源了吗?在哪里?
    ShiningRay
        12
    ShiningRay  
       2015-06-10 00:05:39 +08:00
    Rust的社区还没起来吧?连个 Web 框架都没有
    chengzhoukun
        13
    chengzhoukun  
       2015-06-10 00:08:14 +08:00 via Android
    @lightening rust有同步开发的浏览器项目servo啊,苹果的东西不捆绑到iOS上也没啥优势
    WildCat
        14
    WildCat  
       2015-06-10 00:11:14 +08:00 via iPhone
    Swift 如果能在服务端火,我觉得 ARC 这个原因少不了。
    1oscar
        15
    1oscar  
       2015-06-10 00:27:11 +08:00
    @lilydjwg 今天开源的,看到新闻了,具体地址: 我不能剥夺你获取知识的能力
    df4VW
        16
    df4VW  
       2015-06-10 00:30:54 +08:00
    @ibigbug Google大法哪里好了。。
    ChiangDi
        17
    ChiangDi  
       2015-06-10 00:54:07 +08:00
    @1oscar 新闻是说计划开源,但是还没开呢 你是指这个吧 http://www.apple.com/live/2015-june-event/9d2ad033-d197-4009-96a7-2a97fd044cb7
    wezzard
        18
    wezzard  
       2015-06-10 01:00:28 +08:00
    Swift
    lightening
        19
    lightening  
       2015-06-10 01:32:10 +08:00 via iPhone
    @lilydjwg 优势就是苹果会费力花钱去推动。他有钱有人,开发新 feature 和各种 library 快啊。
    clino
        20
    clino  
       2015-06-10 06:44:26 +08:00 via Android
    我挺看好 go的,rust 还不了解
    zeayes
        21
    zeayes  
       2015-06-10 07:41:10 +08:00
    @lightening 感觉苹果不会花费太多的资源去推动swift在服务端的发展,swift开源是一种取悦开发者的姿态,而且swift相比现有的服务端语言没有特别明显的优势。
    lilydjwg
        22
    lilydjwg  
       2015-06-10 07:41:26 +08:00
    @1oscar 是你根本找不到吧。新闻只说苹果要把 Swift 开源,没说已经开源了。

    @lightening 但是不一定是你所需要的。

    @df4VW 据说跟 Google 其它一些开源项目一样不太友好: http://blog.csdn.net/liigo/article/details/23699459
    lilydjwg
        23
    lilydjwg  
       2015-06-10 07:43:20 +08:00
    @ShiningRay 社区早有了啊,光 Rust 本身的贡献者都有一千多人了呢。crates.io 上的库也有两千多了。没起来的是整个生态环境:还处于大量缺库阶段。
    codejsm
        24
    codejsm  
       2015-06-10 08:59:47 +08:00
    都系统学习下,你就有答案。golang比较符合我的口味,rust也很强,两个语言定位不一样。
    nicai000
        25
    nicai000  
       2015-06-10 09:07:06 +08:00
    C程序员Go, C++程序员Rust
    guotie
        26
    guotie  
       2015-06-10 09:09:16 +08:00
    golang相对简单一些。
    antspeed
        27
    antspeed  
       2015-06-10 09:41:25 +08:00
    golang是google几个大佬领军推出的,还不算google的产品吧,dart才是,不过dart现在前途不明,之前还说要替代js, 现在最新消息也不打算替代js, 方向变更为服务端开发,以及可能会成为安卓的一个基础运行框架? 用dart开发了几个服务程序,不过没有正式使用,个人很喜欢这个语言,pub使用也方便,只是相关的库有点少,希望dart越来越好吧。
    clino
        28
    clino  
       2015-06-10 09:44:38 +08:00
    @lilydjwg 该博主还有一篇鼓吹rust的 http://blog.csdn.net/liigo/article/details/45757123
    看起来挺有意思
    njutree
        29
    njutree  
       2015-06-10 09:57:06 +08:00
    @clino 强行凑够10点也是醉了
    warlock
        30
    warlock  
       2015-06-10 10:03:18 +08:00
    @clino 你的头像和该博主好像啊....
    clino
        31
    clino  
       2015-06-10 10:17:41 +08:00
    @njutree 第2和第10重了哈

    @warlock 汗...我本人也能留成大胡子
    Bingwa
        32
    Bingwa  
       2015-06-10 10:36:04 +08:00
    erlang大法好,配合lua写逻辑
    laotaitai
        33
    laotaitai  
       2015-06-10 10:38:23 +08:00
    我觉得题主的语气有点虚, 我认为题主只有用C++敲了许多"Hello Wold"的水平. 所以, 散了吧. 术语也用得虚, 比如"linux服务端高并发和内核引擎".
    cbsw
        34
    cbsw  
       2015-06-10 10:53:38 +08:00
    有人与你有同样的疑问,看看那个vote最高的回复,相信你会收获比较大
    http://www.reddit.com/r/golang/comments/394vzq/the_state_of_go_in_market_and_its_future/
    cbsw
        35
    cbsw  
       2015-06-10 10:57:14 +08:00
    @lilydjwg 小狐狸是依云吗
    jiazhoulvke
        36
    jiazhoulvke  
       2015-06-10 11:08:02 +08:00
    “人生苦短,说Go就Go”
    lilydjwg
        37
    lilydjwg  
       2015-06-10 11:39:48 +08:00
    @nicai000 可我只会 C 根本不怎么会 C++ 却挺喜欢 Rust 呢。Haskell 程序员大概只能选 Rust ;-)

    @cbsw 是呀。那帖子里竟然看到了百度。他们也 Go 了么。

    不过我很不同意 Go 易学这点。它的语法有很多令我困惑的不一致。
    evolighting
        38
    evolighting  
       2015-06-10 11:53:06 +08:00
    @df4VW 毕竟“人类希望”
    就算真的很烂那也是有个性的烂,反正google粉丝这么多,不缺人洗白;
    rust只要不乱搞,从设计目标看来我倒是觉得更好,go只是看起来更酷~~~然而少了些踏实的感觉....
    canesten
        39
    canesten  
       2015-06-10 12:00:01 +08:00
    golang不适合以计算为主的场景,更适合以IO为主的场景。
    剩下的楼主自己斟酌自己的场景偏那一种。
    chaucerling
        40
    chaucerling  
       2015-06-10 12:01:09 +08:00
    rust is current, nim is the next
    googollee
        41
    googollee  
       2015-06-10 12:03:30 +08:00   4
    只要Rust和Swift不在语言层面加入对并发的支持,Go就不会受到本质威胁。如果一门语言不从一开始引入并发,等库多起来再想引入,基本上会被各种库直接阻塞住。这也是为什么Python早就有异步库,但依然被Node.js发展起来的原因。

    Go的缺点是在语法上没追求,类型系统(相对于现代语言)过于简单。Javascript的类型系统叫简陋,Rust是复杂。Swift到是比较合适。

    不知道Go 2.0版会不会改进类型系统,1.0肯定没戏了,稳定GC和调度器是当前最大的任务。

    另外,说Go比Rust慢的,Computer Language Benchmarks Game上看,两者速度差不多。 http://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=go&lang2=rust
    JQ
        42
    JQ  
       2015-06-10 12:05:31 +08:00
    2个都学,体会差异比较靠谱。
    googollee
        43
    googollee  
       2015-06-10 12:12:43 +08:00
    如果楼主目标是linux服务端高并发和内核引擎(偏算法),这两个其实是两个领域。

    服务器端高并发,目前一个趋势是少陷核,极端如Google这种已经抛弃内核TCP栈,直接从UDP搞起。这个领域,是Go最初的设计目标,个人认为,也是Go有希望挤掉Java和C++的领域。

    内核引擎,别想了,C和汇编。别的语言,等内核里真的有人用了再学不迟。
    hooluupog
        44
    hooluupog  
       2015-06-10 12:14:52 +08:00   1
    Go符合我的口味,所以我选了Go,就这么简单。至于为什么符合口味,要自己试过才知道(我经常用它写一些命令行下的小工具,以及爬虫之类的,很趁手性能也符合要求)。

    因为这个语言没有什么牛逼炫酷的语法特性来唬人(主要是来自于FP语言的那一坨理论),所以没法吹牛逼,只能说:你自己去试试吧,看看是不是你的菜。
    chingli
        45
    chingli  
       2015-06-10 12:20:18 +08:00 via Android
    服务器端Go更成熟一点,偏重工程应用,并发支持好,但要看你是否能适应其稍显怪异(个性化)的语法。Rust不了解,好多人喜欢,应该更底层也更复杂一点,各方面比较均衡,最终运行速度应该快于Go。但考虑到Go对并发的良好支持,服务器端运行Go是不会慢的。
    njutree
        46
    njutree  
       2015-06-10 13:21:12 +08:00   2
    复杂的东西适合当玩具去研究把玩,简单的东西才是真正实用。研究把玩目的就学rust好了,项目应用看需要go更好。很多说go不好用的都没有用go构建过几万行的大项目,只是当玩具玩而已,而go语言的设计就注定它不是一个好玩的玩具,因为它太简单了,一个特性尽量统一用一个方法去实现。完全不像其它语言,有无穷无尽的语法糖和高级用法;以至于你很难知道你写的每个语句是不是最优雅的。这样的语言光语法就够人玩上好久了。然而在工程实践上并没有什么暖用~
    kofj
        47
    kofj  
       2015-06-10 13:37:19 +08:00
    写内核的话需要C啊,我没听说过Go能做内核开发的。目前正在用Go做开发。
    clino
        48
    clino  
       2015-06-10 15:09:37 +08:00
    @googollee "这也是为什么Python早就有异步库,但依然被Node.js发展起来的原因。 "
    node.js从语言上说就是Javascript,可是Javascript在语言层面上也木有并发啊...
    即使python语言上支持并发,一样有很多人不想用python的
    clino
        49
    clino  
       2015-06-10 15:13:13 +08:00
    @kofj 你看上面 liigo 的一篇blog里说 rust可以取代C
    go应该是取代不了的
    hooluupog
        50
    hooluupog  
       2015-06-10 15:32:47 +08:00
    @clino 谁也别想取代C。
    guotie
        51
    guotie  
       2015-06-10 15:36:29 +08:00
    c是不可能被取代的
    googollee
        52
    googollee  
       2015-06-10 16:41:53 +08:00
    @clino Node.js在语言层面的并发,可以理解成runtime中libuv这一套东西,以及基于此之上的stdlib。这一部分是对Javascript语言的扩展。
    lilydjwg
        53
    lilydjwg  
       2015-06-10 17:08:25 +08:00
    @googollee Rust 的类型系统还是比较简单的,相对于 Haskell 而言。

    从你给出的测试,我只看到了 Go 的代码量少,但是内存占用多。

    另外你把协程和并发搞混了。不支持并发的语言很少见了吧,支持多线程就可以并发了,支持多进程的也能,只是不方便。当然 Go 的优势是协程,很轻量。而 Rust 在这方面的优势是,「不作死就不会死」:只要不去欺骗编译器,那么写出来的多线程程序就是安全、没有 race condition 的当然,如果你有那个能力写出来……
    lilydjwg
        54
    lilydjwg  
       2015-06-10 17:12:08 +08:00
    @clino @hooluupog @guotie liigo 的意思应该是,如果某个程序你原本打算用 C 写的,现在也可以用 Rust 来写(而且会更舒适)。并不是说把已有的软件用 Rust 编写的取代。
    semicircle21
        55
    semicircle21  
       2015-06-10 17:26:04 +08:00
    @nicai000
    C程序员Go, C++程序员Rust +1
    hooluupog
        56
    hooluupog  
       2015-06-10 18:53:39 +08:00
    @semicircle21 用c写的最终还是会用c写的,再说c和rust就不是一个口味。rust明显就是奔着c++去的。
    yuelang85
        57
    yuelang85  
       2015-06-10 19:10:02 +08:00
    每问一个人rust如何,回答都是两个字:

    复杂
    Feiox
        58
    Feiox  
       2015-06-10 19:16:55 +08:00
    会不会有那么一天,大神们一怒,Linux not only by C ~
    heroicYang
        59
    heroicYang  
       2015-06-10 19:37:20 +08:00
    ensonmj
        60
    ensonmj  
       2015-06-10 21:04:11 +08:00
    没啥说的,要找工作,c++ or java
    lilydjwg
        61
    lilydjwg  
       2015-06-10 21:35:14 +08:00
    @yuelang85 你如果问我,得到的答案会是实用。
    lilydjwg
        62
    lilydjwg  
       2015-06-10 21:37:55 +08:00
    @hooluupog 其实我很疑惑,如果 C++ 和 Rust 相似的话,那么为什么 C++ 程序员会倾向于 Rust 呢?C++ 用得很不爽么?
    coetzee
        63
    coetzee  
       2015-06-10 21:40:26 +08:00
    个人浅见:偏向工程化的话就Go,偏向学术化的就Rust,前景的话Swift,另外我认为一个语言具有至少要有一个可以值得放大很多倍的优点,即使有软肋也无妨,Javascript,Java都是优点和缺点很明显的语言,但是优点确实是顺应时代发展大势
    coetzee
        64
    coetzee  
       2015-06-10 21:43:23 +08:00
    仅就C++来看,一直在进化,其实还是很不错的,很多新语言翻来覆去这么几套东西来回作为卖点来宣传,要么就是学术化太重
    hooluupog
        65
    hooluupog  
       2015-06-10 22:25:37 +08:00
    @lilydjwg 不好说。我觉得c++程序员是所有程序员里面宗教化最严重的,所以c++程序员会不会倒戈向rust,需要时间来验证。
    clino
        66
    clino  
       2015-06-10 22:37:25 +08:00
    @yuelang85 rust具体什么地方复杂?
    yuelang85
        67
    yuelang85  
       2015-06-11 10:39:40 +08:00
    @clino 语法和特性比较多吧
    ShiningRay
        68
    ShiningRay  
       2015-06-11 18:18:15 +08:00
    @heroicYang 哦,看来我 out 了,好久没看了
    kran
        69
    kran  
       2015-06-11 21:32:02 +08:00
    小马过河,都试试吧,一天时间足够你做出选择了。
    clino
        70
    clino  
       2015-06-13 20:32:45 +08:00 via Android
    我觉得go比较大的问题应该就是gc了,不过这个在不太讲究实时性能的场合可以忽略,如果讲究实时性能则可以针对优化到一定的程度,非常讲究的情况还是不太适合的
    其他的go还是挺对我个人的胃口的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2569 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 12:06 PVG 20:06 LAX 05:06 JFK 08:06
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86