C_and_CPP 板


LINE

这篇是聊 Rust,但是放在 C/C++ 版是因为 Rust 的特性 如果版主觉得不适合就删文吧 XD 最近利用空闲时间在学 Rust 发现到 Rust 和其他语言结合得蛮好的,像是和 C 结合: Rust --> Rust FFI --> C library 或是和 Python 或 Ruby 等高阶语言合作: 高阶语言 --> 高阶语言 FFI --> Rust (as C library) 当然,也可以直接做成执行档 其时,Rust 有点像 C++ 的角色 需要编译语言,但是又不想写 C 时,就用 Rust 写 反正编成机械码後,从电脑的角度来存取都一样 根据小弟摸一小段时间 Rust,感受到的一些优缺点: Pros: - 语言体质佳:支援 OOP、generics、functional programming 等 写起来有某些部分像高阶语言 - 平台支援好:同一套程式码可直接用,不用根据平台写 #if 条件句,交叉编译也很方便 有点像高阶语言的程式环境,只是 Rust 是编译语言 - 编译检查严格:能通过编译的程式相对发生问题的机会少 - 可做系统语言:不使用 GC,允许 stack allocation 也允许在 unsafe block 中 进行指标操作,可以达到 C/C++ 等级的效能 (感谢 littleshan 说明) Cons: - 社群资源少:和 C/C++/Java 相比差非常多,新的语言多多少少都有这个问题 如果要拉 C 函式库,要自行处理,跨平台的优点就消失一半 - 学习资源少:目前大部分都要靠官方文件,目前市面上只有一本 Rust 书籍 明年二月到四月,会再陆续出两三本,总体上还是很少 - 语言不稳定:Rust 经历过一些改动,在 1.0 版以前某些特性实作後又放弃掉 使得网路上一些 Rust 相关的资讯变成错的 另外,目前 Rust 分为 stable, beta, nightly 三个版本 某些函式库作者会偷用 nightly 的版本,使得函式库不稳定 - 上手不易:也是因为编译检查严格,学习 Rust 总是要和 Rust 编译器奋战一阵子 Orz 其中有些东西和指标有关,如果 C/C++ 学得好,撞墙期会比较短 Rust 底层用到 LLVM,但 Rust 包装得很好,使用者不会碰到 LLVM 虽然小弟时常和 Rust 编译器角力 = =|||,基本上还算欣赏这个语言 但是毕竟还很新,若要引入专案可能还是要考虑一下 不知道各位大大会将 Rust 用在自己的专案吗?side project 也可以 就当成闲聊吧,听听看大家的看法 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 175.182.166.115
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1482668235.A.3D0.html
1F:推 wtchen: 只要跟C/C++相关,准你发。 12/25 20:39
2F:推 damody: 语言不稳定是硬伤,又不像swift有apple在推 12/25 21:11
3F:推 wtchen: 听说有用Rust开发的作业系统,是真的吗? 12/25 21:39
http://www.redox-os.org/ 可参考
4F:推 eye5002003: Rust是直接建立C lib还是先创造C程式码再编译? 12/25 23:41
Rust 没有建立 C 程式码,会直接编译成 C lib
5F:推 CoNsTaR: 不想要 functional 的麻烦又想要 functional 的严谨推 Ru 12/26 03:22
6F:→ CoNsTaR: st 12/26 03:22
7F:推 CaptainH: rust的lifetime syntax丑得可怕 12/26 07:51
8F:推 lc85301: lifetime syntax 很丑是定番了,所有批评都会看到这条XD 12/26 17:32
9F:→ lc85301: 然後还有编译器很GY,这也是定番XD 12/26 17:33
Rust 的某些语法的确不太美观,再加上那个 GY 的编译器... 只能靠多练习来克服 冏rz
10F:推 lc85301: swift-apple, golang-google, rust-mozilla 12/26 17:35
11F:→ lc85301: rust 比较没大公司撑腰也是真的 12/26 17:36
12F:推 shadow0326: 'a 'b 'c 'd 'wtf 12/26 19:04
13F:推 makeman: 'w 't 'f 12/26 20:27
14F:→ descent: 什麽时候不想用 c/c++ 而想用 rust 呢? 12/27 00:42
小弟没有维护 C/C++ 专案的包袱,可以自由使用新的语言 目前还在学习阶段,都是拿来写简单的 sample code 而已 其实也没有非用 Rust 不可,主要是欣赏 Rust 的一些设计 学一阵子 Rust 在回头学 C++,会增进对 C++ 的了解,蛮有趣的
15F:推 stupid0319: 主要是钱景吧,钱景大概swift>java>C#>>>>>>>Rust 12/27 01:15
※ 编辑: Neisseria (175.180.97.96), 12/27/2016 06:17:22
16F:推 ronin728: 如果它有GC又去掉Ownership的话,我也许会考虑。 12/27 11:01
17F:→ ronin728: 但他目前这种特性来说,即便它更高阶,我还是宁愿用C++ 12/27 11:04
18F:→ ronin728: Swift有ARC(自动插入reference counter, 并解决循环引用 12/27 11:06
19F:→ ronin728: ),我觉得这就很不错 12/27 11:06
20F:推 Klauhal: 版标XD 12/27 14:59
21F:→ uranusjr: ARC 哪里有解决循环引用, 幻想的吗... 12/27 15:07
22F:推 lc85301: 版标XDD 12/27 15:43
23F:推 yoco315: 小妹我也在学 rust ^^~* 大家一起唷~~~ 12/27 18:13
24F:推 littleshan: rust 明明就有 smart pointer 12/27 18:48
25F:→ littleshan: 你用 smart pointer 存指标就不需要处理 lifetime 12/27 18:53
26F:→ littleshan: 不想负担smart pointer的额外成本时就要处理lifetime 12/27 18:54
27F:→ littleshan: rust 是给你选择权的,和 C++ 的理念并无太大差异 12/27 18:55
28F:推 CaptainH: rust的卖点就是不必手动管理记忆体吗?结果还是要用smar 12/27 19:03
29F:→ CaptainH: t ptr这种半自动的东西? 12/27 19:03
30F:→ uranusjr: Rust 现在已经没有 smart pointers 了 12/28 00:01
31F:→ littleshan: 呃,perl 的 reference 其实也是 smart pointer 12/28 01:25
32F:→ littleshan: 所以 perl 不算自动管理记忆体? 12/28 01:25
33F:→ littleshan: 然後,rust 的 Box/Rc/Arc 不就是 smart pointer 吗? 12/28 01:28
34F:推 CaptainH: Perl本来就是很糟糕的语言啊 rust是要跟perl比? 12/28 08:38
35F:→ littleshan: perl 的问题与它使用 reference counting 无关 12/28 10:35
36F:→ littleshan: 没有人会否认 perl 有自动化的记忆体管理 12/28 10:40
37F:→ ronin728: 对不起,我错了,我误会了 Swift Orz 12/28 12:05
38F:→ uranusjr: @littleshan 原来你说的是广义的 smart pointer, 误会了 12/28 17:30
39F:→ uranusjr: 因为 Rust 早期就有一种东西叫做 smart pointer 12/28 17:31
40F:→ uranusjr: @CaptainH 好嘛那不提 Perl, Python Objective-C Swift 12/28 17:31
41F:→ uranusjr: 也都是用 ref counting, 你讲的根本站不住脚 12/28 17:32
42F:→ uranusjr: 高阶如 Python 都有专门的 weakref 模组来处理循环引用 12/28 17:33
43F:推 makeman: 似乎没继承 也没多重继承 有个类似interface的东西? 12/28 18:12
Rust 的 trait 可以继承,也可以多重继承,是继承别的 trait trait 本身不能实体化,只有 struct 可以实体化 但 trait 可做为 method 的参数来使用 struct 可以实作 trait 所定义的 method 但 struct 间不能继承,只能透过组成 (composition) 结合 可以想成 struct 是 class,trait 是 interface + abstract class 我以前以为 trait 只有 method 定义,而没有 method 实作 但其实 trait 可以有 method 的实作,例如 Rust 的 Iterator: https://github.com/rust-lang/rust/blob/master/src/libcore/iter/iterator.rs 程式设计者也可以实作自己的 Iterator,只要实作 next 这个 method 其他所有的高阶函式,都由 Iterator 这个 trait 提供 有点像 Java 8 的 interface,可以实作 code 在 interface 里
44F:→ makeman: gui的话,好的framework大多偏oop的写法rust能胜任吗? 12/28 18:15
Rust 是有一些 GUI,大概都是 language binding 像是 GTK: http://gtk-rs.org/ 或是 QT: https://github.com/cyndis/qmlrs (只是其中一个) 看起来,GTK 那边似乎比较活跃 目前来说,GUI 应该不算强项 如果要做的软体是以 GUI 为重,可能要选别的方案比较好 但我还没深入学 gtk-rs,可能有误,仅供参考 Rust 的 OOP 和 C++ 或 Java 不同,写的方式要调整一下 刚开始会不太习惯,後来就会自动调整成 Rusty way ※ 编辑: Neisseria (175.182.138.65), 12/28/2016 20:13:16
45F:推 littleshan: 真要做到 C++ 式继承可以用 composition+deref trait 12/29 02:47
46F:→ littleshan: 不过 OOP 原则上都是鼓励多用组合少用继承 12/29 02:51
47F:→ littleshan: 这样的设计我认为没什麽大碍,GoF 的 design pattern 12/29 02:54
48F:→ littleshan: 都可以实现,除了 singleton 以外 XD 12/29 02:54
其实可以做 singleten,用 lazy_static! + Mutex 本来我也不会做,但 stackoverflow 有强者解答这个问题: http://bit.ly/2i99XvW (Stackoverflow 网址) ※ 编辑: Neisseria (175.180.171.62), 12/29/2016 07:33:36
49F:推 firejox: 那我也来推Crystal (′・ω・`) 12/29 17:38
如果大大有整理 Crystal 的心得,欢迎来 Ruby 版贴 有在用 Ruby 的人应该会对 Crystal 蛮有兴趣的 ※ 编辑: Neisseria (175.180.171.62), 12/29/2016 19:54:25
50F:推 SLMT: 路过,看到版标写 Rust 进来看看 01/03 02:19
51F:→ SLMT: 小的半年前开始摸,以为台湾没什麽人在玩 Rust 01/03 02:20
52F:→ SLMT: 看到这麽多人对 Rust 有这麽深入的了解感觉台湾还是有众多 01/03 02:21
53F:→ SLMT: 高手的XD 01/03 02:21
54F:→ SLMT: 不过 Rust 的学习曲线真有点陡峭 01/03 02:22
55F:→ SLMT: Ownership 的观念要花点时间消化,严格的编译器也常让人沮 01/03 02:24
56F:→ SLMT: 丧 01/03 02:24







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP