搜索
bottom↓
回复: 32

我参加翻译的译作《Rust权威指南》上市——Rust语言简介、本书简介与购买排雷

[复制链接]

出30入25汤圆

发表于 2020-6-25 13:55:00 | 显示全部楼层 |阅读模式
本帖最后由 shamiao 于 2020-6-26 22:07 编辑

《Rust权威指南》上市——Rust语言简介、本书简介与购买排雷



基本信息
====================
《Rust权威指南》
[美] Steve Klabnik, Carol Nichols 著,毛靖凯、唐刚、沙渺 译
电子工业出版社 2020年6月第1版 (ISBN: 9787121387067)

    本书首页: http://www.broadview.com.cn/book/5838
    购买1: https://item.jd.com/12878638.html
    购买2: https://detail.tmall.com/item.htm?id=619425342235


基于原书: The Rust Programming Language (No Starch Press)

Rust语言简介
====================

Rust是一门近年问世的新型编程语言,其基本特征为:编译型、全静态类型、多平台、多范式。Rust语言拥有以下特点:

    编译到底,无运行时,等同于C/C++。
    能够编译到众多硬件架构,除了PC之外,更可以应用在ARM/Linux、ARM/MCU裸机系统等场景下。
    独具特色的所有权、借用管理与生命周期系统,能够在不引入GC(垃圾回收)和额外运行时的前提下,实现与市面主流语言同等的内存安全性,可靠消灭C/C++程序中常见的segmentation fault等内存安全问题。
    极尽强调静态检查,强调将错误消灭在编译期,尽最大可能阻拦存在潜在问题的代码通过编译。
    重糖、重优化,提供诸多函数式语言的特性,但编译后仍能生成高效率的代码。
    可以和C语言无条件、双向、无代价的直接互操作。也就是说可以直接调用现有C函数库,也可以把自己编译成C函数库供C/C++调用。


Rust深受开发者喜爱,曾经连续5年获得Stack Overflow网站评选的“编程语言粘性排行榜”(粘性=用了还想继续用)的第一名,在TIOBE编程语言排行榜上最高到达第20名。被视为近年少有的准确对标C++的有力竞争者。

本书简介
====================

原书 The Rust Programming Language 是 Rust 官方编写的语言标准教程,被社区直接简称“The Book”,可见其基础性和重要性。它本身是一本开源的书籍(github: https://github.com/rust-lang/book )。

本书是经官方授权出版的 The Rust Programming Language 的纸质中文译版。官方另外也出版过英文和日文的纸质版本。

本书的翻译团队是出版社从国内 Rust 语言的使用者圈子中联络组建的:

    毛靖凯(shawn): 第一译者,职业游戏设计师。
    唐刚(mike): 第二译者,区块链开发者,国内大多数Rust社区的牵头组建者。
    沙渺(shamiao): 第三译者,嵌入式开发者,国内Raspberry Pi社区早期参与者。
    张汉东(alex): 技术审校,Rust原创书籍《Rust编程之道》的作者。
    黄东旭(dongxu): 技术审校,PingCAP CTO,Rust应用专家。

我的介绍
====================

我是腾讯大连子公司的软件高级工程师,以写C/C++服务器为业。嵌入式方面,我曾经是国内Raspberry Pi开发社区的早期参与者,对ARM/Linux环境下的开发有粗浅的了解。现在正在使用Rust从事裸机编程相关的尝试。

我在本书中承担了第11-15章的翻译工作。

我在amobbs本论坛是2008年注册的老用户。不是嵌入式从业人员(是互联网的从业人员),少有贡献,非常抱歉。
以后也许会考虑多创作一些Rust嵌入式的知识内容发到论坛。(也会发到我的blog上 https://shamiao.cn/blog/

排雷A:应该学习Rust吗?
====================

Rust从语言特性上来说,可以用于包括低至嵌入式裸机、高至服务器高并发编程在内的几乎一切场景。并且Rust倡导提前发现错误,将大量的运行时错误提前到编译期间暴露出来,在降低生产风险上有毋庸置疑的价值。

但是Rust也是一门新兴的语言,缺少大量的函数库和周边生态,甚至缺少一些方便的语言特性尚未稳定。

我个人的意见是:Rust值得长期投资学习。但如果期望今天就拿来出活,还是太早

从现实主义的观点来看,学习Rust并将一些设计思想带到C/C++项目中变通应用,加强现有C/C++工程的质量是比较好的。

排雷B:应该购买本书吗?
====================

由于原书是开源书籍,所以网上已经有了一个其他网友翻译的在线译版 ( https://kaisery.github.io/trpl-zh-cn/ )可供免费阅读。

本书是独立翻译的纸质译版,与在线译版没有直接关系。我们个人认为:本书的意义在于专门组建翻译和审校团队,对翻译质量做出保证。初学者使用本书,能够阅读体验通顺自然一点,同时尽可能避免遇到网友在线译版中存在的个别技术问题。

但说实话,大部分情况下,如果你是有经验的开发人员,尤其是C/C++开发背景,阅读网友在线译版很可能是足够的(如果个别地方感觉不对,配合原版)。

我个人建议:先阅读在线译版和原版。如果足够你所需,或者至少够急用,则不要购买纸质书。如果真想买一本,也请等网店折扣够大才买。这不是一本急用的书。

另外提一句:翻译没多少钱赚的,我只是认可这件事情而去做了,并非为了钱。如果仅为了支持我和翻译团队的营收,请不要购买本书

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2020-6-25 14:32:38 | 显示全部楼层
是刚上市的吗?早点知道的话在 618 这波就能一块买了
这种比较新、还不成熟的语言确实不适合马上就拿来用

平时看到提 Rust 的地方基本都是在调侃它,例如“凌晨三点,办公室灯火辉煌。c++程序员正在编译程序,rust 程序员正在让程序通过编译”之类的

出30入25汤圆

 楼主| 发表于 2020-6-25 15:05:48 | 显示全部楼层
wudicgi 发表于 2020-6-25 14:32
是刚上市的吗?早点知道的话在 618 这波就能一块买了
这种比较新、还不成熟的语言确实不适合马上就拿来用


对!唯一一门“过不了编译”不是骂人的语言,哈哈……

但是,编译时真想撞墙,也好过上线后真想跳楼,哈哈

出0入42汤圆

发表于 2020-6-25 16:02:27 来自手机 | 显示全部楼层
这个和go有啥区别,可以简单介绍一下吗

出30入25汤圆

 楼主| 发表于 2020-6-25 16:44:40 | 显示全部楼层
我是一个大白菜 发表于 2020-6-25 16:02
这个和go有啥区别,可以简单介绍一下吗

相似点很多,尤其是静态类型、编译到底、单一文件产出物等本质特征。

最大的区别是rust没有gc,也没有运行时,真的和c/c++一样,能编出纯粹没有负担运行的代码。
也因此,rust是一门“系统编程语言”,适合编写裸机和os本身。
go不行。go带gc。虽然编译出的是机器代码,但变量分配却需要一个运行时负担。
不过这也造成了rust学习的复杂。rust虽然能够管理变量的生存周期、保证内存安全,但必须依赖程序员对变量的生存周期做出明示,rust只负责监视生存周期有矛盾时编译不让过。
而go学着就简单,交给gc,程序员不伤脑。
当然这肯定都比c++这种自己管,管炸了就死的语言强多了。

另外rust的特性集也更加强大,尤其是使用Option<T>杜绝null,使用Result<T,E>统一错误处理范式等。在编程中都相当的趁手。
go在这方面差一些,go有nil,函数的错误值处理也很不优雅。

还有不少,不再一一对比。
rust难学,却是现代编程语言工程化应用的集大成者,学会了则知道爽。Stack Overflow的编程语言粘性榜(粘性:现在用,以后还要接着用)五年霸榜不是白来的。
而go则特性集更少,学习曲线更平缓,更容易招人,出活更快。但最终能达到的高度较低。

不愿厚此薄彼,只愿更多人知道并接触rust,必要的时候能想起来有这么一号不错的语言就行。

出0入148汤圆

发表于 2020-6-25 16:45:03 | 显示全部楼层
我是一个大白菜 发表于 2020-6-25 16:02
这个和go有啥区别,可以简单介绍一下吗

比go的优势是无gc
比C/C++的优势是大多数情况下内存安全

缺点也很明显,大多数轮子要自己造,而且为了内存安全,写起来比C/C++麻烦(人生苦短,还是python好点)
不过看起来Rust很适合写嵌入式,或者操作系统层面的代码,在这些领域内存安全的优点太重要

出30入25汤圆

 楼主| 发表于 2020-6-25 16:47:41 | 显示全部楼层
yplin27 发表于 2020-6-25 16:45
比go的优势是无gc
比C/C++的优势是大多数情况下内存安全

嵌入式rust可能真的会成为一种重要的可能性。
裸机没有OS和MMU保护,内存写烂了,真的就是烂了,太可怕了。
相比之下,操作系统下有segmentation fault真的已经是一个恩惠。

出0入90汤圆

发表于 2020-6-25 20:37:35 | 显示全部楼层
不错,楼主兄弟的软件水平还是相当高的。专家级别。

出500入109汤圆

发表于 2020-6-25 21:35:27 | 显示全部楼层
像C一样简单,像C#一样的面向对象和语法糖那就无敌了,
单片机工程越来越大, 代码越来越多, 急需一个面向对象的语言, 只要能在STM32103上流畅跑就行, 这样的语言貌似只有C++可选
再低端的MCU就放弃吧,老老实实C

出30入25汤圆

 楼主| 发表于 2020-6-25 22:50:41 | 显示全部楼层
momo_li 发表于 2020-6-25 21:35
像C一样简单,像C#一样的面向对象和语法糖那就无敌了,
单片机工程越来越大, 代码越来越多, 急需一个面向对象 ...

虽然资料很少,但Rust确实的支持STM32F103。我正在正点原子的F103板子上玩这个东西。

出0入42汤圆

发表于 2020-6-25 23:28:44 来自手机 | 显示全部楼层
shamiao 发表于 2020-6-25 16:44
相似点很多,尤其是静态类型、编译到底、单一文件产出物等本质特征。

最大的区别是rust没有gc,也没有运 ...

非常感谢您的讲解,学习一下

出110入0汤圆

发表于 2020-6-26 01:20:35 | 显示全部楼层
shamiao 发表于 2020-6-25 22:50
虽然资料很少,但Rust确实的支持STM32F103。我正在正点原子的F103板子上玩这个东西。 ...

STM32板子上使用rust开发,是前后台还是RTOS?
rust当前对嵌入式开发已经支持到何种程度了?

正在了解,还没啥头绪,望解惑

出150入8汤圆

发表于 2020-6-26 08:01:52 | 显示全部楼层
据说RUST 能 非常好的编译出 webassembly,  提高web 应用的潜能。
某国产EDA 软件,会在做这方面的探索。

出16170入6148汤圆

发表于 2020-6-26 08:04:25 | 显示全部楼层
帖子移动通知:
原分论坛:阿莫推荐
目标分论坛:电子综合
移动时间:立即移走

出0入0汤圆

发表于 2020-6-26 08:19:56 来自手机 | 显示全部楼层
RUST语言也很火,微软现在把很多软件用rustkai fa

出30入25汤圆

 楼主| 发表于 2020-6-26 10:58:49 | 显示全部楼层
armok. 发表于 2020-6-26 08:04
帖子移动通知:
原分论坛:阿莫推荐
目标分论坛:电子综合

我在想,论坛是否值得开一个“新兴编程语言”板块,包容收纳全部Python Java Go R Rust Julia Wolfram等电子行业少用的编程语言的帖子?

这类帖子总觉得和电脑综合、电子综合这两个已有板块,都有点不搭的感觉。

(我对新兴编程语言的理解:除了C/C++,再除去C#/VB/VB.net/Delphi/LabView这几门经典上位机语言之外,其余的语言对于电子行业,好像都是新兴的)

出30入25汤圆

 楼主| 发表于 2020-6-26 11:01:03 | 显示全部楼层
Flyback 发表于 2020-6-26 01:20
STM32板子上使用rust开发,是前后台还是RTOS?
rust当前对嵌入式开发已经支持到何种程度了?

对于机器资源,有寄存器库和HAL库可以用。完善程度还行。
开发模式只有裸机代码,最多可以带个协作式协程的运行时。
支持很浅,真早期玩具。

出0入17汤圆

发表于 2020-6-26 11:28:12 | 显示全部楼层
shamiao 发表于 2020-6-25 22:50
虽然资料很少,但Rust确实的支持STM32F103。我正在正点原子的F103板子上玩这个东西。 ...

有人用Rust做了gd32VF103的库

出30入25汤圆

 楼主| 发表于 2020-6-26 11:35:26 | 显示全部楼层
本帖最后由 shamiao 于 2020-6-26 11:38 编辑
zjykwym 发表于 2020-6-26 11:28
有人用Rust做了gd32VF103的库


我的朋友-华中科大的小洛佳做的。他也是参加rust-embedded官方嵌入式工作组的开发者。年轻的有为之才啊。
Rust的RISC-V裸机支持也没有理论障碍,但目前缺个中断没开发完,所以更难用一点。

我也做过RISC-V的支持库,是针对Freescale RV32M1芯片的。

出0入17汤圆

发表于 2020-6-26 11:39:54 | 显示全部楼层
shamiao 发表于 2020-6-26 11:35
我的朋友-华中科大的小洛佳做的。他也是参加rust-embedded官方嵌入式工作组的开发者。年轻的有为之才啊。 ...

是他写的。

出0入0汤圆

发表于 2020-6-26 11:48:53 来自手机 | 显示全部楼层
楼主位的介绍写得很好,赞一个

出0入0汤圆

发表于 2020-6-26 14:45:36 | 显示全部楼层
楼主搞树莓派很厉害吧!

出40入45汤圆

发表于 2020-6-26 17:32:29 | 显示全部楼层
收藏 + 点赞!
这又涨了一点知识,很好,感谢楼主。

出0入25汤圆

发表于 2020-6-26 19:51:55 | 显示全部楼层

好不好不敢说,,毕竟不会。。

可为什么就非要搞出奇怪的语法呢??什么let、mut,,

就不能用C/C++、Java、C#这些主流编程语言的语法吗??
习惯了C语系(C/C++、Java、C#)的语法,再看Rust脑仁疼

出30入25汤圆

 楼主| 发表于 2020-6-26 21:19:42 | 显示全部楼层
XIVN1987 发表于 2020-6-26 19:51
好不好不敢说,,毕竟不会。。

可为什么就非要搞出奇怪的语法呢??什么let、mut,,

let相当于c#的var了。近年的新语言都认为变量类型后置比较好,可以避免C语言声明“函数的指针的数组”这种复杂类型的时候,有的修饰符写在前,有的却写在后的语法迷惑。

其他的很多奇怪语法,多数都是由于常用语言没有这个概念,所以rust必须发明新概念和新语法导致的。包括mut表示可变,’a表示生命周期,trait表示特征,:和where和返回值的impl表示要求一个量必须符合特征等等,C语言里找不到这些。

还有不少语法关键字缩减得厉害,不少开发者有微词,例如fn impl。

rust语法脑壳疼,费程序员,这都不假。但多数是设计上事出有因,并非随意为之,而是不得不如此。一般推荐程序员多理解设计的理由并适应为上。

出0入0汤圆

发表于 2020-6-26 21:59:21 | 显示全部楼层
标题看的有点尴尬,这书的作者要是看到了你形容这本书是“拙作”会作何感想?

出30入25汤圆

 楼主| 发表于 2020-6-26 22:04:08 | 显示全部楼层
krguang 发表于 2020-6-26 21:59
标题看的有点尴尬,这书的作者要是看到了你形容这本书是“拙作”会作何感想? ...

好像确实是也许没有协作者的书才应该这么用词。
我搞错了,请原谅。

出0入42汤圆

发表于 2020-6-27 15:34:11 | 显示全部楼层
yplin27 发表于 2020-6-25 16:45
比go的优势是无gc
比C/C++的优势是大多数情况下内存安全

谢谢您的指点

出0入0汤圆

发表于 2020-6-27 15:50:30 | 显示全部楼层
shamiao 发表于 2020-6-26 11:35
我的朋友-华中科大的小洛佳做的。他也是参加rust-embedded官方嵌入式工作组的开发者。年轻的有为之才啊。 ...

freescale有risc-v?

出30入25汤圆

 楼主| 发表于 2020-6-27 23:29:27 | 显示全部楼层

有一个RV32M1,是一个ARM大+ARM小+RV32大+RV32小的四核混合的奇异SoC。
RV32M1是学术实验性质的芯片,不供货,只安装在官方推出的VEGAboard或VEGA-Lite“织女星”这两种开发板上提供。
当年推出的时候略有点关注度,可惜后来官方推动没力度,归于沉寂。
现在当然要玩兆易创新GD32VF103了。

出615入1076汤圆

发表于 2021-9-8 13:19:10 来自手机 | 显示全部楼层
本帖最后由 dukelec 于 2021-9-8 13:45 编辑
shamiao 发表于 2020-6-25 16:47
嵌入式rust可能真的会成为一种重要的可能性。
裸机没有OS和MMU保护,内存写烂了,真的就是烂了,太可怕了 ...


我寫底層代碼,把內存寫爛的幾乎都不是代碼本身,而是各種 DMA、cache、中斷 的錯誤操作導致

資源非常少的 mcu 不適合上 rust 吧?應該会增加很多開銷吧。

資源豐富一點的,上 rust 不如上 rtos,沒 MMU 有 MPU 內存保護也夠了

再上層一點會選擇高級語言了,python 之類的

最簡單的鏈表,用 c 幾行代碼搞定,用 rust 實現死的心都有,有這個功夫不如多給 c 程序做測試,rust 就算內存不容易出錯,功能上依然有可能出錯

除非哪天 linux 內核核心部分也換成 rust 實現(幾乎不可能),否則我不去追 rust 潮流,人生很短暫,玩一些更有意思的東西不好嗎

感覺 rust 主要就是照顧那些 堆 和 棧 還有各種 指針 內存 匯編 調度 搞不清的工程師,代價則是我們的時間和精力,如果我們主動迎合 rust 就上當了

出0入0汤圆

发表于 2021-9-8 14:20:34 来自手机 | 显示全部楼层
真有那么严谨的语言,希望能推广。现在公司里那群年轻人写代码 看得都揪心,一大堆警告从来不管,各种溢出全然不觉。说多了都累 个个都这样。

出615入1076汤圆

发表于 2021-9-8 14:28:24 来自手机 | 显示全部楼层
tianxian 发表于 2021-9-8 14:20
真有那么严谨的语言,希望能推广。现在公司里那群年轻人写代码 看得都揪心,一大堆警告从来不管,各种溢出 ...

人(態度)不行估計上啥都不行
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 09:53

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表