原创:星宫数据
“ 掌握一门全新的编程语言,最短5分钟就可以。”
开篇
学习掌握一门编程语言,难不难?怎么学?要多久?怎么样算掌握了?相信这是很多想做程序员的同学们的困惑。但如果我告诉你,掌握一门全新的编程语言,最短5分钟就可以,是不是惊掉了你的下巴?
当然,这里说的5分钟掌握一门语言,前提是你已经有很多这方面的积累,这门新的语言的语法和使用,也还没有完全跳跃式的演进和变化,例如从面向对象的语言中,突然接触函数式编程语言scala,那就不是几分钟能搞定的事了。但是有Java基础,学习JavaScript真不需要太多时间,又或者有C++基础,学习golang都非常轻松。我为此在前几年的时候录了些视频,上传到了大鱼号,因为不知道怎么推广,视频播放量几乎是0。
Rust这门语言是我这么多年来掌握的各种编程语言中,少有的学习过程中有一种很愉悦的感觉,这种感觉除了早年的C++,近10年应该只曾经在学习使用Ruby的时候有过。所以就特别想把学习的过程跟大家分享下,也想通过征服公认的学习曲线很陡峭的Rust这门语言的亲身经历来告诉大家,学习掌握一门新的语言,没那么难,你只要跟着我,用我的方法去学习任何新的编程语言,都不会让你抓狂,相反过程令人愉悦,时间也短。
准备工作
买一本书
学习一门新的编程语言,我一般喜欢买一本纸质书放在手边。推荐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的水平立即就进阶到很顶级的水平。
本文章由微信公众号“星宫数据”原创提供。严禁商用转载,仿盗必究。若要了解更多详情欢迎关注微信公众号——星宫数据
有疑问加站长微信联系(非本文作者)