<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## 為什么是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。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看