Modularità (informatica): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
fix
 
(36 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 [[cognitive science]] 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 [[cognitivescienze sciencecognitive]] 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 [[interface (computer science)|interface]] 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 programming language|Ada]], [[D programming language|D]], [[F programming language|F]], [[Fortran]], [[Pascal programming language|Pascal]] (alcuni derivati), [[ML programming language|ML]], [[Modula-2]], [[Python (programming language)|Python]] e [[Ruby programming language|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 [[interfaceInterfaccia (computer scienceinformatica)|interfaceinterfacce]] 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 programming language(linguaggio)|Ada]], [[D programming(linguaggio languagedi programmazione)|D]], [[F programming(linguaggio languagedi programmazione)|F]], [[Fortran]], [[Pascal programming language(linguaggio)|Pascal]] (alcuni derivati), [[ML programming(linguaggio languagedi programmazione)|ML]], [[Modula-2]], [[Python (programming language)|Python]] e [[Ruby programming(linguaggio languagedi 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 [[classClasse (computer scienceinformatica)|classi]] ede i moduli sono:
* Le Classi possono essere instanziateistanziate per creare [[objectOggetto (computer scienceinformatica)|oggetti]],
* Le Classi possono [[inheritanceEreditarietà (object-oriented programminginformatica)|inheritEreditare]] il loro comportamento e dati da altre classi,
* Il [[PolymorphismPolimorfismo (computer scienceinformatica)|Polimorfismo]] permette la relazione tra istanze di classi di poter cambiare a run-time, mentre le relazioni tra i moduli sono statiche.
 
Le simiglianzesomiglianze con le classi sono:
*Le Classi possono essere instanziate per creare [[object (computer science)|oggetti]],
* Entrambi possono essere usati per nascondere i dettagli dell'implementazione.
*Le Classi possono [[inheritance (object-oriented programming)|inherit]] il loro comportamento e dati da altre classi,
* Entrambi possono formare gerarchie di modules/classes.
*Il [[Polymorphism (computer science)|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 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.
 
== La modularità nella scienza delnell'informatica computer==
*Entrambi possono essere usati per nascondere i dettagli dell'implementazione.
La '''modularità''' è una proprietà dei [[computerProgramma program(informatica)|programmi]] che misura la estensione di quanto sono composti in parti separate chiamate [[modulemodulo (programmingprogrammazione)|modulesmoduli]]. Un approccio modulare sta guadagnando popolarità nel campo della [[A.I.Integrazione Systemssistemi Integrationintelligenza artificiale|artificialintegrazione di intelligencesistemi systemsintelligenza integrationartificiale]], 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.
*Entrambi possono formare gerarchie di modules/classes.
 
I programmi che hanno molte correlazioni dirette tra qualsiasi parti del codice di programmazione sono meno '''modulari''' (più strettamente [[CouplingAccoppiamento (computer scienceinformatica)|coupledaccoppiati]]) dei programmi le cui relazioni avvengono solo tramite ben specificate interfacce di moduli. between modules.
== 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.
 
Le tecniche di '''programmazione modulare''' sono quelle che incrementano la modularità. (Vedi anche: [[Modularprogrammazione Programming | modular programmingmodulare]], [[structuredprogrammazione programmingstrutturata]], [[proceduralprogrammazione programmingprocedurale]], [[object-orientedProgrammazione programmingorientata agli oggetti]] e [[aspect-orientedProgrammazione orientata agli programmingaspetti]], [[distributedCalcolo computingdistribuito]].)
==La modularità nella scienza del computer==
La '''modularità''' è una proprietà dei [[computer program]] che misura la estensione di quanto sono composti in parti separate chiamate [[module (programming)|modules]]. Un approccio modulare sta guadagnando popolarità nel campo della [[A.I. Systems Integration|artificial intelligence systems integration]], 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.
 
== Lavori citati ==
I programmi che hanno molte correlazioni dirette tra qualsiasi parti del codice di programmazione sono meno '''modulari''' (più strettamente [[Coupling (computer science)|coupled]]) dei programmi le relazioni avvengono solo tramite ben specificate interfacce di moduli. between modules.
* Guimerá, R. & L.A. Nunes Amaral (2005). ''Functional Cartography of Complex Metabolic Networks''. [[Nature (journal)|Nature]]Natura, '''433''': 895-900.
* Yang, A.S. (2001). ''Modularity, Evolvability and Adaptive Radiations''. Evolution and Development, '''3''':2, 59-72.
 
== Voci correlate ==
Le tecniche di '''programmazione modulare''' sono quelle che incrementano la modularità. (Vedi anche: [[Modular Programming | modular programming]], [[structured programming]], [[procedural programming]], [[object-oriented programming]] e [[aspect-oriented programming]], [[distributed computing]].)
* [[Programmazione modulare]]
 
* [[Scienze cognitive]]
==Lavori citati==
* [[Coesione (Informatica)]]
*Guimerá, R. & L.A. Nunes Amaral (2005). ''Functional Cartography of Complex Metabolic Networks''. [[Nature (journal)|Nature]], '''433''': 895-900.
* [[Accoppiamento (Informatica)]]
*Yang, A.S. (2001). ''Modularity, Evolvability and Adaptive Radiations''. Evolution and Development, '''3''':2, 59-72.
* [[Incapsulazione]]
 
* [[Libreria software]]
==Vedi anche==
* [[ModularLegge programmingdi Conway]]
* [[Cognitive Science]]
* [[Cohesion (computer science)|Cohesion]]
* [[Coupling (computer science)|Coupling]]
* [[Encapsulation]]
* [[Library (computing)]]
* [[David Parnas]]
* [[Ilities]]
* [[ModularityModularità ofdella mindmente]]
* [[PhilosophyFilosofia ofdella mindmente]]
* [[Constructionist design methodology]]. A methodology for creating modular, broad A.I. systems.
 
==Collegamenti esterni==
{{Wikibooks|Ada Programming|Packages|Modules}}
*[http://modules.sourceforge.net/ Environment Modules]
 
[[Category:Cognitive science]]
[[Category:Programming paradigms]]
 
[[en:Modularity (programming)]]
[[ja:モジュール]]
[[ko:모듈성 (프로그래밍)]]
[[ru:Модульность (программирование)]]
[[tr:Modüler programlama]]
 
== Collegamenti esterni ==
*[{{cita web|http://modules.sourceforge.net/ |Environment Modules]}}
 
[[Categoria:Concetti di programmazione]]
{{soft-eng-stub}}