参考:
https://github.com/rapid7/metasploit-framework/blob/master/documentation/developers_guide.pdf
在本框架的开发过程中,Metasploit的开发人员总是会被问到这样一个问题,那就是为什么选择了Ruby作为开发语言。
为了避免从太多个人化的角度回答这样问题,作者们在这篇文章里解释了他们的原因。
相较与其他的选择,比如Python, Perl, C++,选择了Ruby这门语言是有几个原因的。
第一个,也是最重要的原因呢,其实就是Ruby是Metasploit的开发人员最喜欢用的语言。在花时间分析了其他语言以及过往经验的各个方面之后,发现Ruby在解释型的语言中,算是一个既简单又强大的。//TODO
选择Ruby的另一个原因是对Windows平台Ruby解释器的扩展支持。而且Ruby解析器可以在Windows平台上编译执行,这大大提高了性能。再者解释器也非常小,即便有bug发生的时候想修改也很容易。
Python
Python语言其实也是可供选择的一门语言。Metasploit的开发人员最终选择了Ruby而不是Python是有几个原因的。其中最主要的原因是他们不喜欢Python麻烦的语法,比如块缩进(block-indention)。虽然很多人会说这种方式的好处怎样怎样,然而Metasploit的开发人员这种语法限制很没有必要。另外一个围绕着Python的问题是父类方法的调用限制,以及解释器的后向兼容性。
C/C++
C/C++语言其实也慎重地考虑了的,但是最终很显然,想要将一个可移植的框架部署到一个非解释型的语言中,不是很可取。而且,对于C/C++语言的研发的时间线很可能会更长一些。