2009-02-06 10 views

risposta

39

Ruby è "forte digitato".

La tipizzazione forte indica che il tipo di un oggetto (non nel senso OOP, ma in senso generale) viene controllato prima che un'operazione su di esso richieda un determinato tipo.

Debole digitato significa che non viene effettuato alcun controllo per garantire che l'operazione possa avere esito positivo sull'oggetto. (Ad esempio, quando una funzione accede a una stringa come e array di float, se non viene eseguito alcun tipo di controllo, l'operazione è consentita)

Modifica: Sono trascorsi 6 anni da quando è stata inviata questa risposta e penso che ne meriti chiarimenti aggiuntivi:

nel corso degli anni l'idea che "la sicurezza tipo è una linea non è un assoluto" ha iniziato ad essere utilizzato a favore del significato binario (sì/no)

Ruby è "più forte" digitato (con un "er") rispetto alla maggior parte dei linguaggi dinamici tipici. Il fatto che il ruby ​​richieda istruzioni esplicite per la conversione IE: Array ("foo"), "42" .to_i, Float (23), avvicina il quadrante di digitazione Ruby alla fine dello spettro "Strong Typed" del "weak typed" .

Quindi direi che "Ruby è un linguaggio dinamico forte tipizzato della maggior parte dei linguaggi dinamici comuni"

+0

Grazie per il chiarimento. Aiutato. :). 1 per te. – Chirantan

+23

La tipizzazione statica * non * implica una digitazione forte. Ad esempio, C è tipizzato staticamente perché il compilatore conosce il tipo di ogni variabile, ma non è fortemente digitato perché la memoria è solo memoria e può essere trattata in qualsiasi modo dal programma. – yfeldblum

+0

@Justice, immagino tu abbia un punto ... –

-2

La risposta eccessivamente semplificata è che sia ruby ​​sia javascript sono digitati debolmente.

Tuttavia, questa domanda non è così chiara come potrebbe sembrare - vedere this wikipedia article per una discussione più approfondita sulla differenza tra lingue fortemente e debolmente tipizzate.

+2

sembra essere contraddetto da: http://www.rubyfleebie.com/ruby-is-dynamically-and-strongly-typed/ curiose ? – weepy

7

IMHO Ruby è tipicamente ma dinamicamente digitato.

11

Mentre è possibile entrare in discussioni circa la definizione di coloro termine direi:

Rubino in modo dinamico e fortemente tipizzato, mentre è in modo dinamico e debolmente tipizzato JavaScript.

25

Wikpedia etichette come "dinamico ('anatra') digitato".

Per quanto riguarda il commento di Pop sul fatto che sia "fortemente tipizzato" - non sono sicuro che la sua spiegazione corrisponda effettivamente a ciò che accade sotto le copertine. L'MRI in realtà non "controlla" per vedere se un'operazione può essere eseguita su un oggetto; invia semplicemente l'oggetto al messaggio, e se quell'oggetto non accetta quel messaggio (o mediante una dichiarazione di metodo o gestendolo in #method_missing) lo fa barfs. Se il runtime ha effettivamente verificato che le operazioni fossero possibili, #method_missing non funzionerebbe.

Inoltre, si dovrebbe notare che poiché tutto in Ruby è un oggetto (e intendo dire tutto), non sono sicuro di quello che ha detto su "non in un senso oo" è accurato. In Ruby, sei un oggetto o un messaggio.

+3

questa è in realtà la risposta corretta – andy