前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为什么需要一个聪明且强势的编译器

为什么需要一个聪明且强势的编译器

作者头像
用户2936994
发布2019-08-06 14:49:44
5460
发布2019-08-06 14:49:44
举报
文章被收录于专栏:祝威廉祝威廉祝威廉

rust-programming-language.png

英文版链接:Why a smart/mighty compiler is required

我从2005年开始学习编程。到现在为止的这段期间,我已经使用了非常多的语言。包括C, Java, Ruby,JavaScript, Groovy, Scala.

所有这些语言都尽可能给予程序员灵活性以及一些强大的功能特性。不过他会告诉你,你需要为你的代码负责。这就好比,某人给了你尽可能强大的武器,甚至是核武器,你可以随意使用他们,但是即使你乱用,把武器对着自己,这个给你武器的人不会阻止你。

人们如果走错了路,总是需要被纠正才好。但是现在,如果我写了不好的代码,我可能只能寄希望于有人能够告诉我哪里做错了,或者我找一些工具,这些工具会警告我不该那么做。但是最大问题是,这些都不是强制的。

随着对程序员的需求越来越大,每年会有很多新手进入程序员这个行当。他们可能因为缺少经验而写出错误的代码,但是没有人发现和组织,他们自己也不知道这些是有问题的,这些充满bug的代码可能没有测试就直接被部署,最终在线上奔溃了。

产生这些问题很大一部分原因是,编译器仅仅将代码转化为二进制可执行文件作为自己的唯一责任。但是如果编译器发现了你做的不对,能否直接阻止你编译呢? 编译器应该要这么做,而不是放任错误在那,还依然让你上线,最后奔溃。

比如我们都知道,Java/Scala里普通的HashMap是不能用在多线程环境里的,这会导致问题,但是这个误用却一次又一次的发生,最终导致的灾难也一次又一次发生。 在Rust里,这是不会发生的。因为编译器一旦发现你这么做,就会阻止你,并且更让人欢快的是,编译器还会主动告诉你,你应该怎么做。Rust团队花了很多时间去让错误变得更加清晰,同时给你提供给一个良好的解决这个问题的指导。

有了编译器的这种支持,Rust可以保证内存安全,线程安全,并且可以让帮你消灭非常多的常见bug。

Rust语言同时为编译器和用户设计。有的时候,为了让编译器具备能够帮助的用户的能力,Rust团队可能会选择去限制使用者,这也是人们总是抱怨Rust的学习曲线。因为Rust总是阻止你做这做那。试着去理解编译器的抱怨,同时听从编译器让你干的时,世界就会变得很美好的。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.08.02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档