Modularità (informatica): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Ripebot (discussione | contributi)
fix
 
(22 versioni intermedie di 17 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 '''Modularitàmodularità''' è un concetto che trova applicazione nel contesto dell' [[Informaticainformatica]], più precisamente nella [[programmazione (informatica)|programmazione]], così come lale [[Scienzescienze cognitive]] nello scoprire la struttura della [[mente]]. Un '''[[Modulo (programmazione)|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.
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 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 programming(linguaggio languagedi programmazione)|ML]], [[Modula-2]], [[Python]] e [[Ruby (linguaggio di programmazione)|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.
 
== Moduli e classi ==
La differenza tra le [[Classe (informatica)|classi]] ede i moduli sono:
* Le Classi possono essere istanziate per creare [[Oggetto (informatica)|oggetti]],
 
* Le Classi possono essere instanziate per creare [[OggettoEreditarietà (informatica)|oggettiEreditare]] il loro comportamento e dati da altre classi,
* 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 [[Ereditarietà (informatica)|ereditarietà]] il loro comportamento e dati da altre classi,
*Il [[Polimorfismo]] permette la relazione tra istanze di classi di poter cambiare a run-time, mentre le relazioni tra i moduli sono statiche.
 
Le somiglianze con le classi sono:
* Entrambi possono essere usati per nascondere i dettagli dell'implementazione.
* Entrambi possono formare gerarchie di modules/classes.
 
== Linguaggi di interconnessione dei moduli (MILs) ==
*Entrambi possono essere usati per nascondere i dettagli dell'implementazione.
I '''linguaggi di interconnessione dei moduli''' ('''MILs''') forniscono costrutti di grammatica formale per decidere le varie specifiche di interconnesioneinterconnessione 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.
*Entrambi possono formare gerarchie di modules/classes.
 
== La modularità nella scienza delnell'informatica computer==
== Linguaggi di interconnessione dei moduli (MILs)==
La '''modularità''' è una proprietà dei [[Programma (informatica)|programmi]] che misura la estensione di quanto sono composti in parti separate chiamate [[modulo (programmazione)|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 ada uno specifico scopo e comunica con gli altri per produrre un comportamento generale desiderato.
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 (programmazione)|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: [[Programmazione modulare | programmazione modulare]], [[programmazione strutturata]], [[programmazione procedurale]], [[Programmazione orientata agli oggetti]] e [[Programmazione orientata agli aspetti]], [[Calcolo distribuito]].)
 
== Lavori citati ==
* Guimerá, R. & L.A. Nunes Amaral (2005). ''Functional Cartography of Complex Metabolic Networks''. Natura, '''433''': 895-900.
* Yang, A.S. (2001). ''Modularity, Evolvability and Adaptive Radiations''. Evolution and Development, '''3''':2, 59-72.
 
== Voci correlate ==
* [[Programmazione modulare]]
* [[Scienze cognitive]]
* [[Coesione (Informatica)|Coesione]]
* [[Accoppiamento (Informatica)|Accoppiamento]]
* [[Incapsulazione]]
* [[Libreria software]]
* [[Legge di Conway]]
* [[David Parnas]]
* [[Ilities]]
* [[Modularità della mente]]
* [[Filosofia della mente]]
* . Un metodo per creare moduli ed anche sistemi A.I.
 
==Collegamenti esterni==
{{Wikibooks|Ada Programming|Packages|Modules}}
*[http://modules.sourceforge.net/ Environment Modules]
 
== Collegamenti esterni ==
[[Categoria:Teorie della programmazione]]
*[{{cita web|http://modules.sourceforge.net/ |Environment Modules]}}
 
[[Categoria:TeorieConcetti delladi programmazione]]
[[en:Modularity (programming)]]
[[ja:モジュール]]
[[ko:모듈성 (프로그래밍)]]
[[ru:Модульность (программирование)]]
[[tr:Modüler programlama]]