Ho letto questo articolo di Wikipedia , ma l'ho trovato abbastanza astratto. Come può un sistema di effetti aiutarmi come programmatore?
Ho letto questo articolo di Wikipedia , ma l'ho trovato abbastanza astratto. Come può un sistema di effetti aiutarmi come programmatore?
Un sistema di effetti è per side-effect s che tipo-sistema è per tipo s.
Un sistema di effetti tiene traccia degli effetti delle subroutine, classifica le subroutine in modo esente da effetti ed efficace (e probabilmente quale tipo di effetti ha una subroutine), traccia gli effetti tra le chiamate subroutine ecc.
La stragrande maggioranza delle lingue non si preoccupa degli effetti. Alcune lingue, come haskell o Pulisci gli effetti del modello come tipi. Tuttavia, anche gli effetti di tracciamento separatamente dai tipi sono una possibilità. java ha un sistema di effetti semplici (molto limitato): le eccezioni sono effetti collaterali e Java ha controllato le eccezioni , che sono un'estensione dei tipi di metodi . Nella ricerca, i sistemi di effetti sono stati impiegati per fare cose come assicurare il corretto blocco delle strutture di dati nei programmi concorrenti, per esempio.
Ha senso (o non ha senso) tracciare gli effetti per le stesse ragioni per cui ha senso (o non senso) per tracciare i tipi - anzi, i programmatori funzionali direbbero che gli effetti dovrebbero essere parte del tipo comunque: robustezza, sicurezza , documentazione, correttezza, manutenibilità, ottimizzazione, ecc.
Leggi altre domande sui tag programming-languages