Modularità (informatica): differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
fix |
|||
(29 versioni intermedie di 23 utenti non mostrate) | |||
Riga 1:
{{U|Programmazione modulare|informatica|dicembre 2013}}
La '''Modularità''' è un concetto che trova applicazione nel contesto dell' [[Informatica]], più precisamente nella [[programmazione]], così come la [[Scienze cognitive]] nello scoprire la struttura della [[mente]]. Un '''modulo''' può essere definito in molteplici modi, ma di solito si tratta di un componente di un più vasto sistema, che opera in quel sistema indipendentemente dalle operazioni di altri componenti.▼
▲La '''
I moduli forniscono una separazione tra le [[Interfaccia (informatica)|interfacce]] e la [[implementazione]]. Una interfaccia di un modulo esprime gli elementi che sono forniti e necessari al modulo. Gli elementi definiti in una interfaccia sono visibili agli altri moduli. L'implementazione contiene il codice operativo che corrisponde agli elementi dichiarati nell'interfaccia. I linguaggi che supportano esplicitamente il concetto di modulo includono [[Ada]], [[D (linguaggio di programmazione)|D]], [[F (linguaggio di programmazione)|F]], [[Fortran]], [[Pascal (linguaggio)|Pascal]] (alcuni derivati), [[ML programming language|ML]], [[Modula-2]], [[Python]] e [[Ruby]]. Il sistema IBM i (nominato come AS/400 e iSeries) utilizza i moduli nel suo RPG, COBOL e CL quando si programma nel suo ambiente ILE.▼
▲I moduli forniscono una separazione tra le [[Interfaccia (informatica)|interfacce]] e la [[implementazione]]. Una interfaccia di un modulo esprime gli elementi che sono forniti e necessari al modulo. Gli elementi definiti in una interfaccia sono visibili agli altri moduli. L'implementazione contiene il codice operativo che corrisponde agli elementi dichiarati nell'interfaccia. I linguaggi che supportano esplicitamente il concetto di modulo includono [[Ada (linguaggio)|Ada]], [[D (linguaggio di programmazione)|D]], [[F (linguaggio di programmazione)|F]], [[Fortran]], [[Pascal (linguaggio)|Pascal]] (alcuni derivati), [[ML
== Moduli e classi ==
La differenza tra le [[Classe (informatica)|classi]]
* Le Classi possono [[Ereditarietà (informatica)|
* Il [[Polimorfismo (informatica)|Polimorfismo]] permette la relazione tra istanze di classi di poter cambiare a run-time, mentre le relazioni tra i moduli sono statiche.▼
▲*Le Classi possono essere instanziate per creare [[Oggetto (informatica)|oggetti]],
* Entrambi possono essere usati per nascondere i dettagli dell'implementazione.▼
▲*Le Classi possono [[Ereditarietà (informatica)|ereditarietà]] il loro comportamento e dati da altre classi,
* Entrambi possono formare gerarchie di modules/classes.▼
▲*Il [[Polimorfismo]] permette la relazione tra istanze di classi di poter cambiare a run-time, mentre le relazioni tra i moduli sono statiche.
== Linguaggi di interconnessione dei moduli (MILs) ==▼
▲Le simiglianze con le classi sono:
I '''linguaggi di interconnessione dei moduli''' ('''MILs''') forniscono costrutti di grammatica formale per decidere le varie specifiche di
▲*Entrambi possono essere usati per nascondere i dettagli dell'implementazione.
La '''modularità''' è una proprietà dei [[Programma (informatica)|programmi]] che misura la estensione di quanto sono composti in parti separate chiamate [[
▲*Entrambi possono formare gerarchie di modules/classes.
▲== Linguaggi di interconnessione dei moduli (MILs)==
▲I '''linguaggi di interconnessione dei moduli''' ('''MILs''') forniscono costrutti di grammatica formale per decidere le varie specifiche di interconnesione dei moduli necessarie ad assemblare un completo sistema software. I MILs permettono la separazione tra la '''programmazione in piccolo''' e la '''programmazione in grande'''. Scrivere un modulo rappresenta la programmazione in piccolo, mentre assemblare un sistema tramite l'aiuto del MIL rappresenta la programmazione in grande. Un esempio del MIL è il MIL-75.
▲==La modularità nella scienza del computer==
▲La '''modularità''' è una proprietà dei [[Programma (informatica)|programmi]] che misura la estensione di quanto sono composti in parti separate chiamate [[Modulo|moduli]]. Un approccio modulare sta guadagnando popolarità nel campo della [[Integrazione sistemi intelligenza artificiale|integrazione di sistemi intelligenza artificiale]], dove un sistema A.I. generale in larga scala system è composto di moduli dei quali ognuno serve ad uno specifico scopo e comunica con gli altri per produrre un comportamento generale desiderato.
I programmi che hanno molte correlazioni dirette tra qualsiasi parti del codice di programmazione sono meno '''modulari''' (più strettamente [[Accoppiamento (informatica)|accoppiati]]) dei programmi le cui relazioni avvengono solo tramite ben specificate interfacce di moduli.
Le tecniche di '''programmazione modulare''' sono quelle che incrementano la modularità. (Vedi anche: [[
== Lavori citati ==
* Guimerá, R. & L.A. Nunes Amaral (2005).
* Yang, A.S. (2001). ''Modularity, Evolvability and Adaptive Radiations''.
==
* [[Programmazione modulare]]
* [[Scienze cognitive]]
* [[Coesione (Informatica)
* [[Accoppiamento (Informatica)
* [[Incapsulazione]]
* [[Libreria software]]
* [[Legge di Conway]]
* [[David Parnas]]
* [[Ilities]]
* [[Modularità della mente]]
* [[Filosofia della mente]]
==Collegamenti esterni==▼
*[http://modules.sourceforge.net/ Environment Modules]▼
▲== Collegamenti esterni ==
[[Category:Teorie della programmazione]]▼
|