Skip to content
This repository has been archived by the owner on Dec 5, 2019. It is now read-only.

Latest commit

 

History

History
16 lines (16 loc) · 2.86 KB

为什么是ruby.md

File metadata and controls

16 lines (16 loc) · 2.86 KB

为什么是ruby

下面这些是2005年左右写的 在框架的开发过程,Metasploit员工不断被问到的一个问题是为什么选择Ruby作为编程语言。为避免个别回答这个问题,作者选择在这份文件中解释他们的理由。 Ruby编程语言是由其他选择选择的,比如python,perl和C ++,原因有很多。Ruby被选中的第一个(也是主要的)原因是因为它是Metasploit员工喜欢写的语言。 在花费时间分析其他语言并考虑过去的经验之后,Ruby编程语言被发现提供简单又功能强大的一个解释型语言。 Ruby提供的反射和面向对象方面是非常适合框架要求的东西。 框架对代码重用的自动化类构造的需求是决策过程中的一个关键因素,也是perl不太适合提供的东西之一. 最重要的是,这个语法是非常简单的,并且提供了与其他更被接受的语言相同的语言特性,比如perl。 Ruby被选中的第二个原因是因为它支持线程平台. 虽然在这个模式下框架的开发过程遇到了一些限制,但是Metasploit的工作人员已经看到了在2.x分支上显着的性能和可用性改进。 未来版本的Ruby(1.9系列)将使用原生线程来支持现有的线程API,解释器被编译的操作系统将解决当前实现中存在的一些问题(例如允许使用阻塞操作). 与此同时,已经发现现有的线程模型与传统的fork模型相比优越得多,特别是在缺乏像Windows这样的本地fork实现的平台上。 Ruby被选中的另一个原因是因为Windows平台支持原生解释器的存在。虽然perl有一个cygwin版本和一个ActiveState版本,但都受到可用性问题的困扰。Ruby解释器可以在Windows上本地编译和执行,这大大提高了性能。此外,解释器也非常小,如果有错误,可以很容易地修改。 Python编程语言也是一种语言候选。Metasploit员工选择Ruby而不是python的原因是由于几个不同的原因。主要原因是一些python强加的语法上的烦恼,比如块缩进。虽然许多人会认为这种方法的好处,但Metasploit的一些工作人员认为这是一个不必要的限制。Python的其他问题围绕着父类方法调用的限制和解释器的向后兼容性。 C / C ++编程语言也被认真考虑过了,但最终很明显,试图用非解释语言来部署一个可移植和可用的框架是不可行的。而且,选择这种语言的开发时间很可能会长得多。 即使框架的2.x分支已经相当成功,Metasploit的工作人员也遇到了一些perl的面向对象编程模型的限制和烦恼,或者缺乏的烦恼.perl解释器是许多发行版默认安装的一部分,这并不是说Metasploit的工作人员觉得这样就值得绕过语言选择。 最后,选择一个为框架贡献最大的人所享有的语言,语言最终选择了Ruby。