Perché l'interprete di Ruby è così piccolo? [chiuso]

-2

Ho notato che la dimensione del file dell'interprete di Ruby sembra sospettosamente piccola.

Mi sarei aspettato che /bin/dash fosse il più piccolo di tutti, ma è 20 volte più grande di Ruby:

Interpreter       Bytes
------------  ---------
Node 0.10.32  8,790,152
Python 3.4.0  4,061,272
Bash 4.3.11   1,021,112
gawk 4.0.01     441,512
Dash            121,272
Ruby 1.9.3        6,304

So che, a differenza di Node / Python, quel file binario Ruby non avvia REPL. Forse l'interprete è costruito in modo modulare che si diffonde su più file anziché raccoglierli in un unico grande binario?

(irb binary anche sospettosamente piccolo:)

irb 1.9.3           319

Inoltre: questo è Ubuntu 14.04.1 LTS

    
posta Caleb Paul 24.07.2015 - 01:52
fonte

1 risposta

6

È davvero difficile rispondere, perché mancano molte informazioni:

  • Come hai misurato quelle dimensioni? Includono le librerie richieste per eseguire l'interprete? Includono i runtime?
  • Di quale implementazione Python stai parlando? Ci sono quattro implementazioni pronte per la produzione di Python in uso corrente (PyPy, IronPython, Jython, CPython), oltre a Stackless Python, più un paio di quelli privi di produzione (ad esempio Pynie).
  • Di quale implementazione Ruby stai parlando? Ci sono sei implementazioni pronte per la produzione di Ruby attualmente in uso (Rubinius, MagLev, JRuby, MRuby, YARV, oltre a MRI, che non è più in fase di sviluppo ma è ancora in uso), più i MacRuby e IronRuby abbandonati, più gli in- sviluppo Topaz, Cardinale e molti altri.

Ad esempio, contali questo come l'intera dimensione di irb :

#!/usr/bin/env ruby
#
#   irb.rb - interactive ruby
#       $Release Version: 0.9.6 $
#       $Revision$
#       by Keiju ISHITSUKA([email protected])
#

require "irb"

IRB.start(__FILE__)

Quindi, non include la dimensione della libreria IRb, né le dimensioni delle altre librerie della libreria standard utilizzate da IRb, né la dimensione della libreria di base di Ruby, né la dimensione dell'interprete Ruby, né le dimensioni di alcuna libreria utilizzata dall'interprete Ruby, né le dimensioni di qualsiasi servizio di runtime che l'interprete Ruby potrebbe utilizzare, né le dimensioni di qualsiasi componente del sistema operativo, sistemi del kernel, driver hardware, ecc. che l'interprete potrebbe bisogno di operare Contate solo quelle due righe di codice come l'intera dimensione di IRb.

    
risposta data 24.07.2015 - 02:38
fonte

Leggi altre domande sui tag