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

关于 rust 前景大家是什么样的一个态度

  •  1
     
  •   SlipStupig · 2016-06-12 18:53:43 +08:00 · 26250 次点击
    这是一个创建于 3116 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近接触了一下 rust 觉得 rust 很不错,但是似乎国内根本没有公司用 rust 去做项目,大家对 rust 是什么态度呢?
    第 1 条附言  ·  2016-06-13 19:40:26 +08:00
    看来大家基本上都是对 rust 抱观望态度,也许跟目前 rust 生态游很大关系吧
    57 条回复    2019-02-26 15:55:31 +08:00
    bobuick
        1
    bobuick  
       2016-06-12 18:56:59 +08:00
    rust 很不错。学习曲线前期太陡峭,会阻挡新手入手数量,我觉得它会在系统编程一块区域发挥很不错的作用, 再扩大就有点难了。
    语法和所有权,生命周期的概念,真的是赞暴了。
    c4pt0r
        2
    c4pt0r  
       2016-06-12 18:59:27 +08:00
    有前途。
    直击通点,对于偏底层对性能非常敏感的应用,没有 gc 没有 runtime 是非常重要的。这个领域原先一直被 c/cpp 把持,都 21 世纪了,需要有更现代的选择了。
    mko0okmko0
        3
    mko0okmko0  
       2016-06-12 19:08:31 +08:00
    大部分都很好.等稳定中.
    aakloxu
        4
    aakloxu  
       2016-06-12 19:22:30 +08:00
    用 Rust 正式开发,去年这个时候一个公司都没有,而今年已经出现不少公司在正式场景使用 Rust 语言,包括 Dropbox ,以及国内的 PingCAP 等厂。这是用 Rust 语言开发正式项目的公司列表 https://www.rust-lang.org/friends.html ,大家可以看看,当然还有一些使用 Rust 的公司未出现在这里。
    linghutf
        5
    linghutf  
       2016-06-12 19:27:48 +08:00
    感觉没希望,现在中国互联网或者说 IT 公司都是为了稳定就不会再改,宁愿修修补补。
    大部分程序员只是为了拿工资,十分拒绝学习新东西。连 C++11 都会拒绝使用,宁愿手写一遍遍低级的代码
    可能大厂里面有些小组有些开拓精神和勇气,不过在硅谷没有流行的时候就不会有希望,毕竟国内一切看硅谷风向
    wuxqing
        6
    wuxqing  
       2016-06-12 19:35:38 +08:00
    高门槛,注定了是小众语言
    congeec
        7
    congeec  
       2016-06-12 20:15:22 +08:00
    现在的状态对 Rust 很不利
    1. Rust 的生态系统已经成型,但离成熟还远着呢
    2. Mozilla 毕竟不是 Google 、 Apple 。
    3. Servo 还没 1.0
    4. 不是老手不容易学 Rust

    语言是好,但前景不乐观。其实大家都觉得 Rust 好,大家都在等。
    JohnSmith
        8
    JohnSmith  
       2016-06-12 20:20:43 +08:00 via iPhone
    可以看看拓展思路
    WildCat
        9
    WildCat  
       2016-06-12 20:25:34 +08:00 via iPhone
    对比 Go 是好太多,我想问下各位老司机:
    所有权是不是类似 ARC ( OC 、 Swift )的强引用?
    jsyangwenjie
        10
    jsyangwenjie  
       2016-06-12 20:28:27 +08:00
    已入坑,看好。
    liuchang0812
        11
    liuchang0812  
       2016-06-12 20:35:10 +08:00
    是个好语言,但是不喜欢它的写法。 (haskell 大法好
    mathgl
        12
    mathgl  
       2016-06-12 20:36:21 +08:00
    @congeec 和 cpp 17 比较,并没有特别突出的优势。当然如果公司本身 cpp code base 几乎没有,又需要做类似 cpp 才能做到的事,可以考虑 rust
    wweir
        13
    wweir  
       2016-06-12 20:56:28 +08:00 via Android
    我只是想问下, rust 的函数式怎么样。能方便、直接地调 C/Cpp 的库?
    lecher
        14
    lecher  
       2016-06-12 20:57:44 +08:00   ❤️ 1
    每个语言都要有一个开发生态圈才能推起来。
    操作系统开发之于 C
    桌面软件开发之于 C++
    web 前端之于 JS
    iOS 开发之于 Objective-C

    一个突然爆发的应用领域,用了什么语言,就能把什么语言推起来。 rust 现在缺少这种应用领域,做杀手级开发语言还需要时间培养生态圈。

    国内短期内是不指望了,目前国内这种情况,大部分公司考虑的是人员可替换性, java/php 在服务端开发上面的岗位需求是不会下降的。

    但是这个语言真的好玩,值得上手。
    htfy96
        15
    htfy96  
       2016-06-12 21:00:45 +08:00
    感觉解决的是伪需求,宣称的安全仅在较高层次才好用(这一部分依赖常见的一些惯用法就能解决),稍微低一点就要 unsafe
    congeec
        16
    congeec  
       2016-06-12 21:01:57 +08:00
    @mathgl 安全是 Rust 的一大优势。
    cpp code base 几乎没有,如果是我的话,依然用 C++
    mathgl
        17
    mathgl  
       2016-06-12 21:07:45 +08:00   ❤️ 1
    @congeec dropbox 因为之前可能没怎么用 cpp,所以直接用 rust 是一个选择,如果像 google 这种,用 rust 的吸引力就不大了。 rust 那些安全 在 cpp 上也可以用一些 约定来达到类似的效果。 rust 是不是对 cpper 有很大的吸引力,现在还不好说。
    orFish
        18
    orFish  
       2016-06-12 21:23:28 +08:00
    @lecher web 是只有 js 。
    lecher
        19
    lecher  
       2016-06-12 21:26:20 +08:00
    @orFish
    我的意思就是如此, web 前端当年选择了什么语言,什么语言就能火起来,这和语言特性无关,单纯就是应用场景推动的语言使用率。
    tioover
        20
    tioover  
       2016-06-12 21:42:14 +08:00
    已经写了上万行代码了
    liyuan462
        21
    liyuan462  
       2016-06-12 22:25:30 +08:00
    talk is cheap , show me the code. 已经用 Rust 实现了[Rust 中文社区]( http://rust-lang-cn.org/),源码在 https://github.com/liyuan462/rust_lang_cn ,个人总结如下:

    1. Rust 从 1.0 版后就比较稳定了,标准库 API 可以大胆用。

    2. Rust 的 pattern 和 macro 相当强大和灵活。

    3. Rust 的难点在于 ownership 和 lifetime 。

    4. 入门难,但入门后你会越来越爱它。
    SlipStupig
        22
    SlipStupig  
    OP
       2016-06-12 22:36:44 +08:00
    @wuxqing c/c++难度一点不小但是依然很流行啊
    Librazy
        23
    Librazy  
       2016-06-12 22:39:39 +08:00
    作为 Rust primer 的贡献者之一,表示 Rust 语言的设计上确实独有一番见解,如 borrow checker 、基于 Option type 的错误处理和强大而安全的宏……这些设计可以确保程序的健壮性、便于开发和维护。
    Rust 很好的结合的多种编程泛型,虽然一开始面对 Rust 的各种概念会有一些迷惘,但用久了就会发现这些问题在其他的编程语言里也需要想明白, rust 只不过帮你多加了一层检查。
    要想深入了解,可以看看 Rust primer https://wayslog.gitbooks.io/rustprimer/content/
    mathgl
        24
    mathgl  
       2016-06-12 22:46:40 +08:00
    @SlipStupig 惯性是很难克服的。
    raincious
        25
    raincious  
       2016-06-12 23:24:46 +08:00
    在学,但是同时也在观望,还没开始正式用来写项目。

    我觉得 Rust 想要流行还是需要更大的跨平台标准库,能让用户用它的标准库就能完成大部分工作,甚至比如开一台 HTTP 服务器,而不用去用 crates 。

    Golang 的自带电池很大,所以如果你们看 Golang 的 Web 框架,它们自然而然的使用了一个相对标准的接口,不但降低了入门 /迁移难度,而且由于 Golang 的 HTTP 库是官方统一维护的,所以如果有 Bug 会很快被修复(特别像是加密之类的更需要如此)。

    Rust 的策略貌似是使用 crate ,让用户来完善这个语言的库,而自己则潜心去完成 std 下面和语言本身关系更密切的东西(比如 collection 之类)。但风险是会出现很多参差不齐的库,这些库的接口不一定遵循一个标准,甚至安全性都不一定能保证。

    这是目前我认为 Rust 和 Golang 相比,好的地方:
    1 、建立 struct 实例(不知道是不是应该这么称呼)的时候,你需要初始化这个 sturct 所定义的所有的值。这样就强制用户建立一个初始化函数来初始化这个 struct 。而在 Golang 里,你可以在不进行初始化值的前提下建立一个 struct ,而那样的话会漏掉部分需要初始化的变量,比如

    package teststruct
    type Test struct {
    private map[string]string
    }

    func (t Test) test() string {
    return t.private["test"]
    }

    package main
    t := Test{} // 你可以这样建立一个 struct 的“实例”。用一个 package 内的函数来初始化对 package 的用户来说“可选”的
    t.test() // 出错: map 需要初始化

    2 、没有 GC ,这样速度快多了,而且能更准确的控制数据消失的过程( Life Time )。
    3 、有多态,棒棒棒。


    这是我觉得同 Golang 相比不好的地方:
    1 、符号太多了,&'!*~等等。&'static str 这是啥。
    2 、 API 还是有变动,比如之前有~str ,现在删了,变成了 String 。
    3 、个人并不是非常喜欢 trait 的设定
    4 、 use 和 mod 比较令人糊涂
    c4pt0r
        26
    c4pt0r  
       2016-06-12 23:35:13 +08:00
    > 但是似乎国内根本没有公司用 rust 去做项目

    btw, 我们在用 Rust 开发核心的分布式存储系统,我们是 PingCAP ,我们在招聘,如果对 Rust 感兴趣的朋友,可以一起聊聊,我的邮箱是: huang at pingcap.com
    yangff
        27
    yangff  
       2016-06-12 23:36:31 +08:00
    @htfy96 +1
    airqj
        28
    airqj  
       2016-06-12 23:57:15 +08:00 via Android
    @c4pt0r 黄东旭 大大?大牛先膜拜一下
    airqj
        29
    airqj  
       2016-06-12 23:58:25 +08:00 via Android
    rust 有很多借鉴 scala 的地方 感觉不错
    正打算有时间折腾一下用来开发嵌入式应用
    tioover
        30
    tioover  
       2016-06-13 00:05:48 +08:00   ❤️ 1
    @raincious 谢谢你的评论。

    标准库的事情我个人觉得标准库能提供一些基础可靠的功能就好了,这是口味问题而已。对喜欢大标准库的人来说 Rust 的标准库确实不讨人喜欢。

    符号太多看起来眼花缭乱这确实是 Rust 的缺点,我随手写一个
    fn<'a, T> foober(&'a foo) -> &'a Bar where T: !Foobar
    昏了吧,虽然习惯了不难懂但是却是会吓跑新手,老手也有不变的地方。

    API 变动应该是测试版给你的印象, Rust 已经稳定了一年了 ~str 记得两年前就删了,现在 API 大多都已经固定了。

    Trait 非常之棒,如果深入学习你会发现可以说是语言的灵魂,这是非常棒的特性。

    use 相当于 import , mod 是声明一个子模块,区别还是蛮大的。
    不过顺带一提很多人不习惯 Rust 继承 C++ 的 "::" 用来访问,现代语言都是 module.function 而不是 module::function ,这是因为很多面向对象语言把 module 映射成了 object ,而 Rust 没有这样做,为了语义的区分。
    SlipStupig
        31
    SlipStupig  
    OP
       2016-06-13 00:07:12 +08:00
    @c4pt0r 刚接触 rust 有一种莫名的好感
    Siglud
        32
    Siglud  
       2016-06-13 00:10:58 +08:00
    看了书但是却想不到应用场景,无法真正应用到实践中真的是很难提高使用水平

    不过最初它的设计思想不错,语言也规范了很多东西让你很难写出烂代码,但是我还是不明白它为什么要引入裸指针这种可能会写出脏代码的东西
    broadliyn
        33
    broadliyn  
       2016-06-13 01:13:01 +08:00
    有什么是非 rust 不可的吗?
    没有?
    洗洗睡吧。。。
    optional != irreplaceable
    wuxqing
        34
    wuxqing  
       2016-06-13 08:15:10 +08:00
    @SlipStupig
    c/c++的流行是历史原因,那个时代没多少选择,然后积累了几十年
    c/c++入门还是简单的,只是深入难
    c 和 c++是应该分开讲的, c 入门更简单
    bk201
        35
    bk201  
       2016-06-13 09:21:17 +08:00
    如果一个语言学习曲线高,势必不能成为主流语言
    ikaros
        36
    ikaros  
       2016-06-13 09:23:09 +08:00
    @raincious 你的 private 函数里面可以这样写

    v, ok = t.priavte["test"]
    if ok {
    return v
    } else {
    return "default value"
    }

    GC 问题的话个人觉得是简化 /方便
    onemoo
        37
    onemoo  
       2016-06-13 10:30:58 +08:00
    刚好看到 Andy ,一个供职于 RedHat 的内核开发者,写的他对用 rust 进行 Linux 底层 userspace 编程的看法:
    http://groveronline.com/2016/06/why-rust-for-low-level-linux-programming/
    总之他很看好 rust 在这领域的应用。
    raincious
        38
    raincious  
       2016-06-13 10:56:15 +08:00
    @ikaros
    但是这样其实还是没有解决根本性问题,即 map 仍然没有被初始化

    @tioover
    感谢解释。其实存在以上某些观点有可能只是因为我还没有入门 Rust 吧。我之前大致看过 Rust Book ,但是真正开始试着写代码也就是 2 天前,所以可能还没体会到各种好处吧。 :D
    ikaros
        39
    ikaros  
       2016-06-13 11:19:58 +08:00
    @raincious 你可以给 teststruct 写一个初始化方法设置初始值,然后调用一下. struct 内嵌的 map 初始化不知道其他语言有什么实现
    eightqueen
        40
    eightqueen  
       2016-06-13 11:21:08 +08:00
    @lecher rust 和 java 根本就没发相提并论吧,难道要用 rust 做 web servier ?
    raincious
        41
    raincious  
       2016-06-13 11:25:55 +08:00
    @ikaros
    对啊,这其实就是我要说的(可能夜里回帖迟钝,上面说的不清楚)。即:

    你可以定义一个 func NewTestStruct() *TestStruct ,但是你不能阻止用户直接&TestStruct{}。
    tioover
        42
    tioover  
       2016-06-13 12:30:21 +08:00   ❤️ 1
    @Siglud 没有裸指针,也没有 GC 的话很多东西是做不出来的,或者是低效的,最显然的就是图结构。
    而将裸指针放到 unsafe 里面也表达了一种倾向:不要随便用,出了奇怪的 bug 先去 unsafe 块里面找。
    janxin
        43
    janxin  
       2016-06-13 13:35:26 +08:00
    其实我觉得新的 C++17 落地之前应该会好的应用, Rust 分得的市场更多的应该是从这一部分里来的。当然, C++本身确实有点积重难返。

    我是觉得太难学了...
    jsyangwenjie
        44
    jsyangwenjie  
       2016-06-13 13:41:39 +08:00
    @broadliyn 因为你并没有接触到 Rust 的痛点领域
    jsyangwenjie
        45
    jsyangwenjie  
       2016-06-13 13:42:21 +08:00
    @Siglud 在 safe 代码里哪有裸指针?
    hwsdien
        46
    hwsdien  
       2016-06-13 13:47:16 +08:00
    在学,暂时只是用来做过一些小工具,觉得比 Go 陡。。
    qwerasdf
        47
    qwerasdf  
       2016-06-13 15:57:54 +08:00
    Rust 一定会经得起时间考验的。那时候我才会用
    JhOOOn
        48
    JhOOOn  
       2016-06-13 16:01:08 +08:00
    @lecher 嗯嗯,比如 spark 的 scala
    ch3rub1m
        49
    ch3rub1m  
       2016-06-13 16:01:35 +08:00
    没有了解 给我的印象是曲高和寡
    Kilerd
        50
    Kilerd  
       2016-06-13 17:49:32 +08:00
    很早就关注 Rust 了,可是学习起来实在是太难了。或许是我一直没有认真去学。

    我十分同意楼上某位同学讲的 符号实在是太 TM 多了。根本记不住。
    yamyamyuo
        51
    yamyamyuo  
       2016-06-13 19:48:48 +08:00
    @linghutf 很好奇大家是如何获得硅谷风向的资讯的?都是通过阅读什么公众号关注什么网站
    darluc
        52
    darluc  
       2016-06-13 22:17:51 +08:00
    准备学习 ing
    wyx
        53
    wyx  
       2016-09-23 15:41:00 +08:00
    @liyuan462 网站打不开了,昨天就打不开了,是不准备管了吗?
    krircc
        54
    krircc  
       2018-08-26 20:27:47 +08:00
    Rust 中文社区 http://ruster.xyz/
    Rust 文档中心 https://docs.ruster.xyz/
    ..
    krircc
        55
    krircc  
       2018-08-26 20:28:24 +08:00
    @wyx Rust 中文社区 http://ruster.xyz/
    Rust 文档中心 https://docs.ruster.xyz/
    ..
    buseni
        56
    buseni  
       2018-09-26 19:46:47 +08:00
    等待风来……
    alwayskay
        57
    alwayskay  
       2019-02-26 15:55:31 +08:00
    现在是 2019 年了。不知道现在大家怎么看这个 rust 语音呢。 来自一个 cpper.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5858 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 02:32 · PVG 10:32 · LAX 18:32 · JFK 21:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.