Alcune lingue più recenti stanno implementando ARC nei loro compilatori (Swift e Rust, per nominare una coppia). Da quello che ho capito, ciò ha ottenuto lo stesso risultato del GC di runtime (sottraendo il compito del deallocazione manuale al programmatore), pur essendo significativamente più efficiente.Qual è il vantaggio del GC di runtime su ARC in fase di compilazione?
Capisco che l'ARC potrebbe diventare un processo complesso, ma con la complessità dei moderni garbage collector sembra che non sarebbe più complesso implementare ARC. Tuttavia, ci sono ancora tonnellate di linguaggi e framework che utilizzano GC per la gestione della memoria, e anche la lingua Go, che si rivolge alla programmazione dei sistemi, utilizza GC.
Non riesco davvero a capire perché GC sarebbe preferibile ad ARC. Mi sto perdendo qualcosa qui?
Per un confronto concettuale generale del tracciamento GC rispetto al conteggio dei riferimenti, questo documento, "Una teoria unificata della raccolta dei rifiuti", mostra come possono essere visti come doppi rigorosi l'uno dell'altro. Varie ottimizzazioni e ritocchi per ciascun approccio ti portano semplicemente lungo uno spettro che li collega: https://www.cs.virginia.edu/~cs415/reading/bacon-garbage.pdf – algal
oh, sì, adoro quel foglio: D grazie per averlo collegato –