019.你为什么要学习Rust

说起我为啥会学Rust,在这篇《编程语言》中有提到。2018年初,我开始学习Rust,那个时候主要是通过官方文档学习。对于有一些C++基础的我来说,Rust并不简单。

再来说说这本Rust编程之道,这本书我拿到手是2019年1月5号,应该算是首批读者。后面进了读者群,和更多喜欢Rust的同学和本书作者张老师有了更多的交流,慢慢算是入门了Rust。

Rust编程之道

本书分为13章,初学者建议按照章节顺序阅读,如果有读不懂的可以跳过,毕竟你不会只读一遍这本书。

Rust编程之道从第1章介绍Rust发展历史开始,先引出了Rust的设计哲学。然后再是语言架构,下图为Rust概念层次结构

想要改变世界的Rust语言

第2章是基本语法,很多同学在这里就卡壳了很久,可以把书的源代码下载,先跑通,再修改一些,再跑,看看出错信息,熟悉一下Rust的编译器。

第3章到第5章分别讲类型系统,内存管理,所有权。这是Rust最核心的概念,需要好好练习,可以进行横向的对比。Rust因为融合了多种语言特性和多种编程范式,会出现在其他语言没有接触过的内容,还是需要多多的练习去理解它。

第6章到第9章分别介绍Rust的常用的语法,编程风格,数据类型和异常等概念,这几章比较好理解,不要放弃。

第10章到第13章分别介绍了包管理工具Cargo,见识一下现在编程语言的一大特色,还介绍了安全并发,元编程和Safe,UnSafe的特性,算是高级特性了。

最后,你需要的是多练习,遇到问题的时候再去翻书翻文档,解决它,让编译器为你服务。

观点

程序员修炼之道中有个建议,就是想要抵抗技术过时的风险,就得每年学一门语言。

语言学得多并不会混淆,而且还会有一种百通的感觉,不然怎么会有七周七语言这种书呢。

Rust连续第五年成为Stack Overflow年度调查中,程序员最喜欢的编程语言是有它的道理的。

Rust的本质是在改善C++,它和Java通过GC,VM字节码等来改善C++的方向不一样,它一来就是加强编译器,通过编译器来虐程序员,所以学习Rust的曲线是很陡峭的,你得首先和Rust编译器达成共识,让它变成你的朋友。

对于Rust后面的发展,我是比较看好的。在我熟悉的领域里面,已经有人在用Rust开发一些落地应用了,比如: huggingface的tokenizer,更多的科技公司和开发者也参与了进来,期待Rust重构整个世界。

这几年,我的感觉是程序员世界在分化,要想成为高手,终身学习是必备条件。最后,Rust值得你投入精力学习。

总结

推荐理由:  诚意满满的Rust编程书,让你快速掌握Rust,体验使用Rust的乐趣。不适合没有编程经验的人学习。

总体打分:4星半

相关推荐


本书作者张汉东老师在极客时间开了《张汉东的Rust实战课》,有一定Rust基础的同学可以继续学习,如果还没有入门Rust,可以先看《Rust编程之道》入个门。

开篇词——你所不知道的神经网络攻防

你好,我是P小二,很高兴我又要更新了。

不出意外,你看到这篇的时候,2020年已过去一半。从7月份开始更新,是我立的FLAG。在这里,我想就整个专栏的安排说明一下,也算是给读者一些学习建议。

为什么要出这个专栏?

首先,因为我高兴。我想开一个AI安全的专栏来讨论这方面的学习进展。如果还写得不错,得到了几个赞许,也是大大的幸福感。

其实人们对AI的安全担忧早就有之,不过更多的是从伦理道德和工作层面上进行批判,宣扬AI威胁论。就现在所处的弱人工智能阶段来说,这些担心大可不必,随着深度学习大火,各种攻击AI系统的技术被发明发现,攻击者与防御者的博弈真正的开始了。未知攻焉知防,研究矛,加强盾是一条必经之路。

其次,AI安全是近些年才出现的热潮,世面上的资料质量参差不齐,特别是中文领域没有好的教程。如果能给后来者一些跳坑的经验之谈,已达到了目的。

我要学习,需要什么样的基础

在我看来,你不需要任何基础,你需要是强烈的学习兴趣。

如果你没有编程基础,可以通过网上的一些开源教程补充一些Python语法。
如果你计算机科班毕业,恭喜你,你可以补充一些机器学习的基础知识。
如果你正在读机器学习方向的研究生,太好了,把TF和Pytorch多多玩溜吧。
如果你是博士,欢迎你,加入我们读论文的队伍里来吧,特别需要您。

如果你是安全研究人员,Just do it,整就牛。

我认为的专栏特色

说说和一些课程相同的特色

  • 以实战为主,会有很多练习出现在专栏中
  • 有代码有解答,以jupyter notebook的形式输出
  • 跟进最新的研究进展,会去复现论文,跑通demo
  • 会尝试用视频形式输出,直观易懂

当然我也有不一样的特色,那就是会断更,静静等待就好。

专栏网址: http://aipwn.org/HackingNeuralNetworks
Github: https://github.com/AIPwn/HackingNeuralNetworks
公众号: P小二

知识星球: AI与安全

你可能需要的推荐资源

Python基础:

  • Python编程:从入门到实践
  • Python Cookbook
  • 流畅的Python

机器学习基础:

  • coursera课程: machine learning Standford Andrew Ng
  • coursera课程: Deep Learning Specialization deeplearning.ai
  • Deep Learning: Adaptive Computation and Machine Learning series
  • Deep Learning with Python
  • 动手学深度学习

计算机视觉:

  • cs231n

自然语言处理:

  • coursera课程: Natural Language Processing Specialization deeplearning.ai
  • cs224n
  • Deep Learning for NLP at Oxford with Deep Mind 2017

深度学习框架:

  • coursera课程: TensorFlow in Practice Specialization deeplearning.ai
  • 官方书: deep learning with pytorch
  • keras 官方文档

AI安全科普书:

  • Adversarial Machine Learning(中文版:对抗机器学习:机器学习系统中的攻击和防御)
  • AI安全之对抗样本入门
  • Web安全之强化学习与GAN
  • 人工智能安全

对抗样本比赛:

论文集合:

开源项目:

  • cleverhans
  • adversarial-robustness-toolbox
  • AdvBox
  • foolbox
  • OpenAttack