专业程序员通过创作和维护解决问题的软件提供价值。 (还有其他重要的方法可以提供价值的专业程序员,但这篇文章是aboutprogramming。)
程序员依靠各种工具来作者软件。可以说是最重要的和后续选择的工具是编程语言。
在这篇文章中,我将阐明为什么我相信Rust是一种高度批评的软件专业人士的编程语言。我将确定硬化软件将软件分类到较低的缺陷率,降低总行失和部署成本,并且非常满意。在短时间内,我希望说服您学习和部署生锈。
在我走得太远之前,I' m针对这篇文章,针对专业程序员 - 在人们(或通过管理等角色支持编程)asheir初级工作或在工作之外花费足够的时间编程的人的人员(或支持编程)。我认为自己是一个专业的程序员,因为我是软件行业的一个全时工程,因为我为我的日常工作之外的一些重要的商业项目做出了贡献。
声明锈病是专业人士并不意味着任何逻辑变种。例如我并不暗示Rust不是非专业人士。相反,主题/论文只是定义了我想说的观众:人们在长期的成果中获得了大量的时间创作,维护和支持软件,并在其长期结果中被投资。
我认为关于编程语言的意见作品受益于创新作者'在编程的体验中受益。我第一次开始在1990年底'秒开始黑客攻击。自2007年以来,我是一家全日制软件开发商,在计算机工程学位(中止的生物医学工程后,您是硬件和生物学的亲和力。在以下语言中编程:C,C ++(仅限++ 11),C#,Erlang,Go,JavaScript,Java,Lua,Perl,PHP,Python,Ruby,Rust,Shell,SQL和Verilog 。显着从此列表中缺少是一个LISP和SACKELL / SCALA类型语言。这些语言,I'在C,C#,JavaScript,Perl,PHP,Python和Rust中度过了最多的时间。
我不是那么强大的计算机科学或语言理论:在描述计算机SCIECEAND编程语言概念等算法,键入理论和常用术语时,许多同事针织圈在我周围谈话。 (因为这里有局限性,我失败了很多技术面试。)相比之下,我认为我的技术优势是应用程序工程严谨和实用性解决问题。我在乎很大地监督如何/为什么事情就像他们所做的方式以及我们在软件方面做出的实际后果/选择。我发现,我倾向于往往比其他人更广泛的2次和第3次订单效应和更广泛或长期后果。有些人会称这个系统工程。
我编程了各种不同的软件。后端Web服务,桌面应用程序,网站,Firefox浏览器内部,MercurialVersion控制工具,构建系统,系统/机器管理。值得注意的是迷失移动编程(例如iOS / Android)和严重的嵌入式系统(I'带覆盆子PIS和Arduinos的车辆,但那些似乎非常友好地对其他嵌入式设备)。我最强大的亲和力可能朝着系统软件和通用工具:我喜欢在其他人用来建造东西的软件。如果您愿意,基础设施。
最后,我在这篇文章中表达了我的个人意见。我不会在雇主,礼物或前者讲。虽然我很乐意在MyCurrent雇主看到更多Rust,但这篇文章并不试图影响Laughmy雇主' S墙上的发生影响:有更好的方法可以成功地进行Nemawashi /根回し而不是Pulidblog帖子。我在任何CompanationBeond中都没有与Rust项目隶属于一个非常不频繁的代码贡献者和发布文件:我将自己视为Anormal Rust用户。我在Mozilla工作了 - 该公司在最常见的初始开发中加入了最常见的。我甚至在与Graydon Hoare的同一个小的温哥华办公室,生锈'初级记入发明者!虽然我热衷于成功,因为它是与我的雇主隶属于,但我在Mozilla的时候最重要的是一个生锈福音师或粉丝男孩。我有利于这篇文章的个人受益:我写它,因为我喜欢写作,我相信这封信很重要。
当我回顾我的专业自我时,当我在20多岁时,我觉得我曾经是计算机,技术,新软件和那样的愚蠢和愚蠢而且过于旺盛。一个较旧的,更富有的专业人士,我现在接受它是ISA奇迹计算机和软件工作的现实,以及他们经常这样做。 Point在计算机上的任何共同任务和冰山的复杂性和细微偏执下的冰山。我们的行业在重复经过验证的次疗优惠中取比。你看到几十年中追查的实践货物(如80个字符终端/线宽和零终止的字符串,它可以追溯到19世纪后期的Hollerith Pundards)。你的位置摆动的循环,同样的曲线和趋势,只是用不同的标签(微野跑是新的SOA,Yaml是新的XML等)。我可以肯定地对这个行业的人们想要放弃一切并搬到一个农场orsomething(但我在印第安纳长大,让奶牛在街上生活,所以我知道这个生活方式是' t对我而言)。
Rust是第一个编程语言我'在多年来遇到的兴奋剂。而不仅仅是正常兴奋:令人兴奋的兴奋。就像你天真的兴奋一样,关于它的限制和Don' ton' t更好(如许多区块链/加密货币倡导者)。 ifeel喜欢生锈的发现是将我送回我的年轻人,在我发现了计算机和软件工作的丑陋现实之前,Andis给我希望更好的工具,更好的建筑软件可以存在。通道我内心的Marie Kondo:Rust引发了快乐。
当我在2018年开始学习生锈时,我以为这是一个侥幸。 ITIS只是你认为你坠入爱河的蝴蝶,我告诉自己。给它时间:你的非理性兴奋会褪色。但是在使用RUDE〜2.5年后,我对它的积极情绪只有更强大。 ' SA原因Rust声称堆栈溢出的顶部点'最亲爱的语言调查,5年和跑步。而不是牙齿的皮肤:锈的吹出水中的竞争。在类型签字和python上的19%。 Kotlinand的23%Go。如果这是一份公司提供的产品的Forrester报告,Rirtwould是明确的市场领导者,营销人员和销售人员将使用这一结果来注册开发人员的新客户,并将钱交出拳头。
在你学习了足够的编程语言之后,开始看到commonPatterns。手动与垃圾收集的内存管理。除非,否则,控制流程的流量可用的类型。变性声明语法。列表继续。
对我来说,Rust引入了许多新概念,例如匹配控制流,枚举作为代数类型,借用检查器,选项和结果类型/枚举等。还有不同于我知道的语言不同的生锈行为:变量默认是不可变的,结果类型usenust and#39; t一个错误,避免编译器警告,如果有可检测的内存访问问题,则拒绝编译,并且更多。
许多新的概念都在' t小说生锈。但考虑到我的exposureto许多流行的编程语言,许多人对我来说是新的,这意味着TheSearen'常见的特征在主流语言中。学习铁锈感觉像是我的新航空:这是一种旨在是通用的一种语言,并进入进入工业的采用,同时也愿意从过去几十年开始降低大股的许多趋势。
违背传统实践时,非常容易从潜在用户无意中无意中彻底地努力。设计一种在常见使用中的编程语言过于unikehything,您将遇到困难的时间吸引人。这是许多学术/自以为期的编程语言(或者我听到)的问题。 Rust确实冒险远离尝试并受欢迎。这确实有助于陡峭的学习曲线。然而,生锈的核心语言中有足够的摩里尼,在学习生锈时会给你一个立足点。(和生锈'官方学习资源。)
我觉得自己疯狂'他的语言设计师举行了使用现代想法和忽视旧的,不当的语言的语言,实现了他们所需要的语言,熟悉熟悉的语言,以实现市场的合理妥协这是新的和新颖,但熟悉不完全疏远其大型用户群。
如果你不喜欢暴露在新的想法和工作方式,生锈' Saproach可能是一个消极的。但是,如果你喜欢我,并且享受着你的知识和测试新的想法,Rust' Snovelty和愿意是不同的,是一个非常受欢迎的属性。
它曾经是编程语言只是编译器或口译员。近年来,我们看到了越来越多的编程语言,其他工具,如构建/包装工具,代码格式,intinters,linters,文档生成器,语言服务器,集中包存储库等等。
我不确定是什么刺激了这一趋势(也许是去的?),但我认为这是一个很好的举动。编程语言是生态系统和编译器/译员只是复杂系统的一部分。如果您关心最终用户体验,则采用(特别是如果您是一种新语言),则希望尽可能成为转牌顿的登机体验。我认为当你提供凝聚力,多工具策略吸引和留住用户时更容易拔下'
我们将编程语言参考与包含电池的综合标准库。我将参考编程语言与编译器/解释器之外的添加工具作为工具禁止。
RUDE,是一个工具箱包括语言。 (除,想要体验Rust以Itsmaintainers预期的方式 - 导演'如果您愿意,请通过Rustup安装Rust。)
除了生锈编译器(RustC)和Rust标准库外,以下组件都是正式开发的,并作为GitHub上的Rust编程语言的部分提供:
vscode-rust - Visual Studio代码扩展名为Forth添加支持。 (Jetbrains为他们的IDES拥有自己的高质量延伸,他们培养自己。)
作为最终用户,拥有我指尖的所有这些工具和资源,由官方生锈项目维护是绝对的快乐。
对于本地工具,Rustup可确保它们作为一个组升级,所以我不' Thave担心管理它们。我定期运行Rustup Update ocensure My Rust Toolbox是最新的,并且所有我所要做的所有'
与Say Node.js,python和Ruby对比,Wherethe Package Manager是核心Langamageand的单独发布节奏,我必须考虑管理多个工具。 (生锈可能HAVETO越过这座桥梁,一旦有多种生锈或多次流行的套餐管理者。但直到那时,事情很简单。)
与JavaScript / node.js,python和Ruby等语言进行了相反的对比,其中代码格式化器,linter和文档生成的工具' t始终在核心项目伞下开发。作为最终用户,您必须知道寻找这些额外的值 - 添加工具。此外,您必须知道哪些使用以及如何配置它们。该案也倾向于产生不同水平的质量和最终过分率,以损害最终用户。相比之下,锈的工具箱感觉简单和抛光。
RUDER' S Toolbox包含的方法使我能够遵循统一实践(可争议的最佳实践),同时消耗最低努力。结果,以下几乎每个生锈项目都往往非常相似.LLRUN进入:
作为构建系统,货物通常是微风。 ConfigurationFiles是TOML。添加依赖项通常是to cargo.toml文件的1行。依赖关系通常只是在第一次尝试时工作。它' snot say say c / c ++,在那里拍摄新依赖性,可以轻松消费的一天或两个,以便在您的构建系统中集成并兼容您的源代码库。我可以' t强调它带来的快乐能够利用它只是工程为系统建立工具 - 水平编程:我发现自己在像解析精灵,pe和mach-o二进制文件那样做事因为它如此简单地将低级功能范围集成到任何生锈程序中。货物很无聊。当它来到造成讲解系统时,'是一种巨大的恭维!
没有其他语言I' ve使用的是一个工具箱的全面和强大的工具箱。该工具箱由RustCommunity高度杠杆杠杆化,导致项目跨越项目卓越。这本来使得更容易理解,使用和贡献回更多的生锈项目。将其与C / C ++进行对比,其中大代码Baseoften在同一空间中使用多个工具在Chesame代码库的不同部分,导致认知不应和开销。
作为专业的程序员,Rust' SURIVE和友好的工具忠诚的工具,比其他语言更轻松地构建生锈软件。我花费更少的时间绞刑工具和更多时间编码。翻译通过软件的开销较少提供价值。其他语言会明智地模拟生锈的方面。
所有的编程语言I'已经使用过的,rust似乎同情最适合用户。
很多关怀似乎已经进入了Therust工具箱的最终用户体验。
Rust编译器通常提供极其可操作的错误和警告。如果出现问题,它会告诉我为什么它是错误的,常常究竟在源代码中的位置驻留在哪里,绘制了源代码的源代码。在许多情况下,编译器将发出建议的修复,我可以通过按IDE中的一些键来填充。将此与C ++对比,甚至可以转移,这往往具有太简洁的actionabledor过于简洁地呈现给予的反馈意见。相比之下,来自其他编译器的产出往往伴随着居高临下,仿佛他们aresaying gud,白痴。 Rust' S编译器输出往往会遇到I'对不起你有问题:我该怎么帮忙?我觉得自己认为我的[有价值]时间和满足。它想要让我流入。
我喜欢Clippy的一件事是 - 就像编译器 - 许多LintScontain建议,我可以通过IDIDE自动融入。这么多其他的林德斯只是告诉你有什么问题和守恒似乎似乎恭敬我的时间来尊重我的时间来解决它。
Clippy的另一个方面是我爱的是,它就像是一个不可见的Rustummentor,不断提供建设性的反馈,以帮助我升级近距离。我不知道我知道有多少次' VE写了多少次的铁锈代码,类似于我如何用其他语言编写代码,CLIPPY建议更古老的研究。大多数时候我和#39; m喜欢哦,我没有知道这个问题:那个' sa比我写的更好的模式/解决方案!
我一直同意Clippy吗?不。但是,与其他林德,我确实发现它的信号儿童比例非常高。使用。Clippy配置和覆盖是微不足道的,因此分歧是易于管理的。像生锈编译器一样,我觉得Clippy是尊重我的时间,并且拥有MySoftware在心脏的长期可维护性和正确性。
然后在生锈界 - 核心生锈项目后面的人民。铁锈界是最专业和最热情的I' VESEEN。他们的行为准则足够全面和可行。他们像任何其他社区一样有活力。但谈话是民事的。在播种时丢弃了守护行。
在谈话中,我在几年后在生锈举行的肥胖化器上做了关于蟒蛇多,我发表了评论,通过关于我遇到的否定评论,我遇到了ona生锈子reddit。在谈话结束后,那个位于受众(Unbebownst的Sub的主持人接近了更多信息,所以他们可以调查他们所做的。
我曾经推特大约有点令人困惑,不是非常可操作的编译器。几分钟后,一些编译器开发人员在回复中加剧。几个小时后,创建了一个拉出请求,并且在短订单中合并了更好的错误消息。我不是在这里的一个专家:i'在堆栈溢出的问题上困扰了跨越的问题和其他论坛,其中生锈核心开发人员看到某人遇到令人困惑的问题,质疑将它们达到这一点的过程,安直尽量减少将来发生。实践非常相似于同情产品经理和超速设计师。
不是许多其他社区(或公司的公司)似乎对他们的人来说似乎很高的同情和同理心。要诚实,我不确定铁锈的设法如何将其拉下来,因为这在人们的时间方面往往非常昂贵,它很容易不优先考虑。有一件事是肯定的:锈细节被载有关心用户产品的福祉的同情心。它从论坛中的互动显示了他们生产的软件工具。对于在Therust社区提供贡献的每个人:谢谢你所做的一切,并为我们其他人设立一个anexample来锻炼身体。
我避免学习生锈的原因之一是我认识到水平过低,因此乏味。 Rust正在被广告为ASA Systems编程语言,您可以听到借用检查员的故事。我假设我需要思考记忆和所有权。我假设作者的成本并保持生锈代码。我以为锈病将是一个更安全的C / C ++,许多软件的生命周期施用。而对于软件我一次怀疑,Rust的价值主张似乎很弱。我觉得c的组合,并说python足够好。当我暂停烙氧化器时,我初始化呼叫进入Python解释器C API的运行时间代码将被用Rust编写,其余的将是Python。
当我实际开始编码生锈时,我感到震惊,这是如何令人震惊的。现在,根据软件的空间,Rust代码可以享注低级和繁琐的(不像C / C ++不同)。但是,对于我作者的TheVast大多数代码,Rust比C.而不是C. Andeven较低级别的代码比C甚至C ++的水位高得多。
在我看来,Rust的表现力非常接近高级,动态语言(如JavaScript,Python和Ruby),同时保持C / C ++的原始速度,而无需在需要时牺牲低级控制Forcase。它在保持强度保证的同时确实如此(不同于
......