1
bobuick 2016-06-12 18:56:59 +08:00
rust 很不错。学习曲线前期太陡峭,会阻挡新手入手数量,我觉得它会在系统编程一块区域发挥很不错的作用, 再扩大就有点难了。
语法和所有权,生命周期的概念,真的是赞暴了。 |
2
c4pt0r 2016-06-12 18:59:27 +08:00
有前途。
直击通点,对于偏底层对性能非常敏感的应用,没有 gc 没有 runtime 是非常重要的。这个领域原先一直被 c/cpp 把持,都 21 世纪了,需要有更现代的选择了。 |
3
mko0okmko0 2016-06-12 19:08:31 +08:00
大部分都很好.等稳定中.
|
4
aakloxu 2016-06-12 19:22:30 +08:00
用 Rust 正式开发,去年这个时候一个公司都没有,而今年已经出现不少公司在正式场景使用 Rust 语言,包括 Dropbox ,以及国内的 PingCAP 等厂。这是用 Rust 语言开发正式项目的公司列表 https://www.rust-lang.org/friends.html ,大家可以看看,当然还有一些使用 Rust 的公司未出现在这里。
|
5
linghutf 2016-06-12 19:27:48 +08:00
感觉没希望,现在中国互联网或者说 IT 公司都是为了稳定就不会再改,宁愿修修补补。
大部分程序员只是为了拿工资,十分拒绝学习新东西。连 C++11 都会拒绝使用,宁愿手写一遍遍低级的代码 可能大厂里面有些小组有些开拓精神和勇气,不过在硅谷没有流行的时候就不会有希望,毕竟国内一切看硅谷风向 |
6
wuxqing 2016-06-12 19:35:38 +08:00
高门槛,注定了是小众语言
|
7
congeec 2016-06-12 20:15:22 +08:00
现在的状态对 Rust 很不利
1. Rust 的生态系统已经成型,但离成熟还远着呢 2. Mozilla 毕竟不是 Google 、 Apple 。 3. Servo 还没 1.0 4. 不是老手不容易学 Rust 语言是好,但前景不乐观。其实大家都觉得 Rust 好,大家都在等。 |
8
JohnSmith 2016-06-12 20:20:43 +08:00 via iPhone
可以看看拓展思路
|
9
WildCat 2016-06-12 20:25:34 +08:00 via iPhone
对比 Go 是好太多,我想问下各位老司机:
所有权是不是类似 ARC ( OC 、 Swift )的强引用? |
10
jsyangwenjie 2016-06-12 20:28:27 +08:00
已入坑,看好。
|
11
liuchang0812 2016-06-12 20:35:10 +08:00
是个好语言,但是不喜欢它的写法。 (haskell 大法好
|
12
mathgl 2016-06-12 20:36:21 +08:00
@congeec 和 cpp 17 比较,并没有特别突出的优势。当然如果公司本身 cpp code base 几乎没有,又需要做类似 cpp 才能做到的事,可以考虑 rust
|
13
wweir 2016-06-12 20:56:28 +08:00 via Android
我只是想问下, rust 的函数式怎么样。能方便、直接地调 C/Cpp 的库?
|
14
lecher 2016-06-12 20:57:44 +08:00 1
每个语言都要有一个开发生态圈才能推起来。
操作系统开发之于 C 桌面软件开发之于 C++ web 前端之于 JS iOS 开发之于 Objective-C 一个突然爆发的应用领域,用了什么语言,就能把什么语言推起来。 rust 现在缺少这种应用领域,做杀手级开发语言还需要时间培养生态圈。 国内短期内是不指望了,目前国内这种情况,大部分公司考虑的是人员可替换性, java/php 在服务端开发上面的岗位需求是不会下降的。 但是这个语言真的好玩,值得上手。 |
15
htfy96 2016-06-12 21:00:45 +08:00
感觉解决的是伪需求,宣称的安全仅在较高层次才好用(这一部分依赖常见的一些惯用法就能解决),稍微低一点就要 unsafe
|
17
mathgl 2016-06-12 21:07:45 +08:00 1
@congeec dropbox 因为之前可能没怎么用 cpp,所以直接用 rust 是一个选择,如果像 google 这种,用 rust 的吸引力就不大了。 rust 那些安全 在 cpp 上也可以用一些 约定来达到类似的效果。 rust 是不是对 cpper 有很大的吸引力,现在还不好说。
|
19
lecher 2016-06-12 21:26:20 +08:00
@orFish
我的意思就是如此, web 前端当年选择了什么语言,什么语言就能火起来,这和语言特性无关,单纯就是应用场景推动的语言使用率。 |
20
tioover 2016-06-12 21:42:14 +08:00
已经写了上万行代码了
|
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. 入门难,但入门后你会越来越爱它。 |
22
SlipStupig OP @wuxqing c/c++难度一点不小但是依然很流行啊
|
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/ |
24
mathgl 2016-06-12 22:46:40 +08:00
@SlipStupig 惯性是很难克服的。
|
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 比较令人糊涂 |
26
c4pt0r 2016-06-12 23:35:13 +08:00
> 但是似乎国内根本没有公司用 rust 去做项目
btw, 我们在用 Rust 开发核心的分布式存储系统,我们是 PingCAP ,我们在招聘,如果对 Rust 感兴趣的朋友,可以一起聊聊,我的邮箱是: huang at pingcap.com |
29
airqj 2016-06-12 23:58:25 +08:00 via Android
rust 有很多借鉴 scala 的地方 感觉不错
正打算有时间折腾一下用来开发嵌入式应用 |
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 没有这样做,为了语义的区分。 |
31
SlipStupig OP @c4pt0r 刚接触 rust 有一种莫名的好感
|
32
Siglud 2016-06-13 00:10:58 +08:00
看了书但是却想不到应用场景,无法真正应用到实践中真的是很难提高使用水平
不过最初它的设计思想不错,语言也规范了很多东西让你很难写出烂代码,但是我还是不明白它为什么要引入裸指针这种可能会写出脏代码的东西 |
33
broadliyn 2016-06-13 01:13:01 +08:00
有什么是非 rust 不可的吗?
没有? 洗洗睡吧。。。 optional != irreplaceable |
34
wuxqing 2016-06-13 08:15:10 +08:00
|
35
bk201 2016-06-13 09:21:17 +08:00
如果一个语言学习曲线高,势必不能成为主流语言
|
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 问题的话个人觉得是简化 /方便 |
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 在这领域的应用。 |
38
raincious 2016-06-13 10:56:15 +08:00
|
39
ikaros 2016-06-13 11:19:58 +08:00
@raincious 你可以给 teststruct 写一个初始化方法设置初始值,然后调用一下. struct 内嵌的 map 初始化不知道其他语言有什么实现
|
40
eightqueen 2016-06-13 11:21:08 +08:00
@lecher rust 和 java 根本就没发相提并论吧,难道要用 rust 做 web servier ?
|
41
raincious 2016-06-13 11:25:55 +08:00
@ikaros
对啊,这其实就是我要说的(可能夜里回帖迟钝,上面说的不清楚)。即: 你可以定义一个 func NewTestStruct() *TestStruct ,但是你不能阻止用户直接&TestStruct{}。 |
42
tioover 2016-06-13 12:30:21 +08:00 1
@Siglud 没有裸指针,也没有 GC 的话很多东西是做不出来的,或者是低效的,最显然的就是图结构。
而将裸指针放到 unsafe 里面也表达了一种倾向:不要随便用,出了奇怪的 bug 先去 unsafe 块里面找。 |
43
janxin 2016-06-13 13:35:26 +08:00
其实我觉得新的 C++17 落地之前应该会好的应用, Rust 分得的市场更多的应该是从这一部分里来的。当然, C++本身确实有点积重难返。
我是觉得太难学了... |
44
jsyangwenjie 2016-06-13 13:41:39 +08:00
@broadliyn 因为你并没有接触到 Rust 的痛点领域
|
45
jsyangwenjie 2016-06-13 13:42:21 +08:00
@Siglud 在 safe 代码里哪有裸指针?
|
46
hwsdien 2016-06-13 13:47:16 +08:00
在学,暂时只是用来做过一些小工具,觉得比 Go 陡。。
|
47
qwerasdf 2016-06-13 15:57:54 +08:00
Rust 一定会经得起时间考验的。那时候我才会用
|
49
ch3rub1m 2016-06-13 16:01:35 +08:00
没有了解 给我的印象是曲高和寡
|
50
Kilerd 2016-06-13 17:49:32 +08:00
很早就关注 Rust 了,可是学习起来实在是太难了。或许是我一直没有认真去学。
我十分同意楼上某位同学讲的 符号实在是太 TM 多了。根本记不住。 |
52
darluc 2016-06-13 22:17:51 +08:00
准备学习 ing
|
54
krircc 2018-08-26 20:27:47 +08:00
|
55
krircc 2018-08-26 20:28:24 +08:00
|
56
buseni 2018-09-26 19:46:47 +08:00
等待风来……
|
57
alwayskay 2019-02-26 15:55:31 +08:00
现在是 2019 年了。不知道现在大家怎么看这个 rust 语音呢。 来自一个 cpper.
|