本文共 2831 字,大约阅读时间需要 9 分钟。
rust游戏是什么编程语言
为项目选择编程语言通常是一个复杂的决定,尤其是当涉及从一种语言切换到另一种语言时。 对于许多程序员来说,这不仅是一项技术练习,而且是一种深切的情感性练习。 缺乏已知或可衡量的语言选择标准通常意味着选择会陷入一系列情感诉求。
我参与了许多有关选择编程语言的讨论,它们通常以以下两种方式之一得出结论:或者是使用可测量但不重要的标准来做出决定,而忽略了相关但又难以衡量的标准;或者 或者它是通过轶事和情感吸引力制成的。
使用 。本文将探讨与选择一般编程语言(尤其是Rust)有关的几个问题。 它们是:选择编程语言时通常使用的标准是什么,尤其是在大型企业中,为什么这个过程很少成功结束? 为什么到目前为止,Microsoft中对Rust的考虑进展顺利,并且可以从中获得一些一般的最佳实践?
有很多标准可以决定是否切换到新的编程语言。 通常,最容易衡量的标准是最常被谈论的标准,即使它们不如其他更难衡量的标准重要。
第一组标准是技术上的考虑。 它们通常是最容易想到的,因为它们最容易测量。
有趣的是,技术成本(例如,构建系统集成,监视,工具,支持库等)通常比技术收益更容易衡量。 这尤其不利于采用新的编程语言,因为采用的缺点通常是图片中最明显的部分。
虽然可以相对轻松地评估某些技术优势(例如性能),但其他优势则很难衡量。 例如,动态类型系统(如Python)与相对冗长且功能较差的系统(如Java)有什么相对优势,与更强大的类型系统(如Scala或Haskell)相比,这会有什么变化? 许多人都有强烈的直觉,认为在语言方面要认真对待这种技术差异,但它们并不是衡量它们的好方法。
测量容易度差异的副作用是,即使对于完美的信息而言,最容易测量的项目在决策过程中通常也被赋予最大的权重。 这不仅取消了成本/收益分析,而且还取消了将重要性分配给不同成本和收益的过程。
组织标准是第二个考虑因素,包括:
组织标准的成本和收益很难衡量。 人们通常对他们有模糊的“直觉”答案,这会在此问题上产生强烈的意见。 但是,不幸的是,衡量这些标准通常非常困难。 例如,对于大多数人来说,很明显的是TypeScript允许程序员比C更快地向客户交付可运行的,相对没有错误的软件,但是在哪里备份数据?
此外,将重要性权重分配给这些标准通常非常困难。 显而易见,Go比Scala更容易执行标准化的编码实践(由于gofmt的广泛使用),但是很难衡量标准化代码库对公司的具体收益。
这些标准仍然非常重要,但是由于测量它们的困难,它们经常被忽略或通过轶事进行推理。
第三是情感标准,如果不完全忽视,则往往会被忽略。
传统上,软件编程试图模仿更真实的“工程”实践,而技术方面的考虑通常是最重要的。 有人会认为编程语言是“公正的工具”,应仅根据技术标准进行衡量。 其他人则认为编程语言可以帮助程序员完成某些更具艺术性的工作。 这些标准很难以任何有意义的方式进行衡量。
通常,这归结为程序员使用这种语言的快乐程度(从而提高了工作效率)。 这些考虑因素可能会对程序员产生真正的影响,但是这如何转化为使整个团队受益却几乎无法衡量。
由于难以量化这些标准,因此通常会忽略这一点。 但这是否意味着对编程语言的情感考虑不会对程序员或编程组织产生重大影响?
最后,有一组标准经常被忽略,因为一种新的编程语言通常由当前使用的语言所设置的标准来判断。 新语言可能具有其他语言所没有的功能,因此很多人不会熟悉它们。 不具备这些功能可能意味着评估人员在不知不觉中忽略或轻描淡写了它们。
这些标准可以是技术性的(例如,Kotlin数据类优于Java构造),组织性(例如,Elm错误消息对于教给那些刚接触该语言的人有多大帮助)或情感性(例如,Ruby使程序员感觉到的方式)。编写时)。
由于这些方面很难衡量,而且完全不熟悉这些方面的人没有基于经验,直觉或轶事来判断它们的现有框架,因此它们常常被低估,而不是被人们更好地理解的标准(如果不能完全忽略的话)。
这使我们回到了Microsoft对Rust日益增长的兴奋。 我相信到目前为止,关于Rust的采用的讨论相对顺利,因为Rust提供了非常明显和引人注目的优势-不仅在它寻求替代的语言(C ++)上,而且在工业上实际上可用的任何其他语言上:出色的性能,高度控制,并确保内存安全。
微软决定调查Rust(和其他语言)的决定是由于Microsoft产品中大约 (CVE)与C和C ++中的内存安全问题有关。 当发现由于性能问题而无法使用C#有效重写大多数受影响的代码库时,便开始了搜索。 Rust被认为是唯一可以替代C ++的候选人。 它非常相似,因此不必全部重做,但是它有一个与众不同的特征,它可以使它比当前的替代品好得多:能够消除近70%的Microsoft最严重的安全漏洞。
除了内存安全性,性能和控制性之外,还有其他一些原因使Rust更具吸引力(例如,强大的类型安全保证,成为极受欢迎的语言等),但是正如预期的那样,由于难以衡量,因此很难谈论。 总的来说,大多数参与选择过程的人都对验证该语言的其他方面没有比C ++差得多感兴趣,但是由于测量这些方面非常困难,因此没有被认为是采用该语言的积极原因。 。
但是,已经采用Rust的Microsoft团队(例如 )吹捧该语言的其他方面(特别是由于高级类型系统而导致的“正确性”),因为他们最热衷于对该语言进行更多的投资。 这些团队无法为这些标准提供可靠的衡量标准,但是他们清楚地认识到该语言的这一方面非常重要。
在Microsoft的Rust的帮助下,被判断的主要标准碰巧是一个容易衡量的标准。 但是,当组织中最重要的问题难以衡量时,会发生什么? 这些问题同样重要,仅仅是因为它们目前很难衡量。
采用新的编程语言时,拥有明确可衡量的标准很重要,但这并不意味着难以衡量的标准不是真实的,也不应该被认真对待。 我们只是缺乏整体评估新语言的工具。
已经对该问题进行了一些研究,但尚未产生任何已被工业广泛采用的东西。 尽管在Microsoft内部,Rust的情况比较明确,但这并不意味着仅在有明确的技术理由的情况下才应采用新的语言。 除了评估传统语言(例如性能)之外,我们还应该更好地评估编程语言的更多方面。
采用Rust的道路刚刚从Microsoft开始,只有一个理由证明对Rust进行投资是绝对不理想的。 当我们开始形成集体的,轶事的证据来进一步证明Rust的采用时,绝对有必要更好地量化这种理解,并能够以更客观的方式谈论它。
我们仍然不确定如何执行此操作,但是请继续关注,以获取更多信息。
翻译自:
rust游戏是什么编程语言
转载地址:http://iqizd.baihongyu.com/