如何快速优雅的掌握Rust | 01

星宫数据科技 · · 1047 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

原创:星宫数据

“ 掌握一门全新的编程语言,最短5分钟就可以。

开篇


学习掌握一门编程语言,难不难?怎么学?要多久?怎么样算掌握了?相信这是很多想做程序员的同学们的困惑。但如果我告诉你,掌握一门全新的编程语言,最短5分钟就可以,是不是惊掉了你的下巴?

当然,这里说的5分钟掌握一门语言,前提是你已经有很多这方面的积累,这门新的语言的语法和使用,也还没有完全跳跃式的演进和变化,例如从面向对象的语言中,突然接触函数式编程语言scala,那就不是几分钟能搞定的事了。但是有Java基础,学习JavaScript真不需要太多时间,又或者有C++基础,学习golang都非常轻松。我为此在前几年的时候录了些视频,上传到了大鱼号,因为不知道怎么推广,视频播放量几乎是0。

Rust这门语言是我这么多年来掌握的各种编程语言中,少有的学习过程中有一种很愉悦的感觉,这种感觉除了早年的C++,近10年应该只曾经在学习使用Ruby的时候有过。所以就特别想把学习的过程跟大家分享下,也想通过征服公认的学习曲线很陡峭的Rust这门语言的亲身经历来告诉大家,学习掌握一门新的语言,没那么难,你只要跟着我,用我的方法去学习任何新的编程语言,都不会让你抓狂,相反过程令人愉悦,时间也短。

准备工作

买一本书

《Programming xxx》

学习一门新的编程语言,我一般喜欢买一本纸质书放在手边。推荐OReilly出版的《Programming xxx》系列

好处是你可以通读这本书,对一门编程语言有一个全貌的了解,OReilly的《Programming xxx》系列,质量是有保证的。

配置环境

我使用Mac来编程序很多年,这里插一下,一个有点逼格的程序员,不可能使用Windows的,都是用Mac,所以在Mac上安装配置Rust的就是自然。过程其实不复杂,首先照官网安装Rust的命令行编译环境,在有些时候,你懂的,需要梯子。


然后选择IDE,我喜欢VSCode,用它编C++,Python,Go,现在Rust也不例外,查了下,大家基本都推荐VSCode,所以安装几个插件如RLS,Debugger之类的,VSCode的插件配置有时灵光有时又不太灵光,这一次运气挺好,没费什么周章就把debugger(断点,单步等)搞定了,这个在调试的时候发挥了很大的作用,后面应该会讲到。

准备一个样板工程

这里我选择的是parity-ethereum,这个就是最早使用rust构建的一个大型复杂项目,可以从github上clone下来学习,多看别人的优秀代码,成长才会更快。


设定学习目标

这个非常重要,很多人很迷茫,不知道学到什么程度算掌握了一门编程语言,无休止的学习肯定不是好的办法。以我多年的经验,通过实现一个500行左右的算法,系统的掌握这门语言的基本类型、方法接口调用、工程和模块组织、单元测试,就可以算是基本入门,然后在此基础上,学习模仿样板工程的代码,不断迭代提高自己的经验和水平。

看过我前面文章的人,知道我带领的团队都要求他们独立实现poker算法,我自己也实际上把实现poker算法作为学习任何一门语言的试金石,poker这个算法相对比较复杂,容易出错,所以必须要结合单元测试来保证算法的稳定和可靠。单元测试,单元测试,单元测试,重要的事情说3遍,学习任何一门语言,必须要很快的掌握如何编写单元测试。

把学习目标确定下来:通过实现poker算法,掌握Rust的基本类型、方法接口调用、工程和模块组织、单元测试,达到了基本入门的水平。入门之后,写复杂工程和代码,其实都是算法、数据结构和设计模式这些基本功,这是所有编程语言相通的,很多东西凭着直觉都可以。

更高阶的水平,只能通过亲身做更复杂的工程才可能达到。以我本人学习golang为例,我在花了也差不多2-3天时间学习掌握了golang以后,我的团队写了一个巨复杂庞大的golang工程,我大概是在他们投入30个人已经做了8个月的时候,产品迟迟不能稳定下来,我抽出几天时间,潜心理解代码结构,并引入有限状态机和中间件模式对代码进行重构,立竿见影的提升了工程质量,同时自己golang的水平立即就进阶到很顶级的水平。

本文章由微信公众号“星宫数据”原创提供。严禁商用转载,仿盗必究。若要了解更多详情欢迎关注微信公众号——星宫数据


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:星宫数据科技

查看原文:如何快速优雅的掌握Rust | 01

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:701969077

1047 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传