mago30 ha scritto:Da cio' che ho capito, un programma e' la "sommatoria" di tutti i sottoprogrammi di cui si compone.
Bisogna stare attenti anche al contesto nel quale vengon scelte le parole. Qui, il contesto (proprio su tua specifica richiesta) era necessariamente "semplificatorio": e andare a semplificare è sempre un po' anche "sbagliare"... Ad esempio: dire che un Programma è "la sommatoria" dei sottoprogrammi che lo compongono è, al tempo stesso, "esatto" e "inesatto". Sembra un po' un controsenso, ma lo si spiega molto facilmente: il punto sta nel significato che attribuiamo (o non attribuiamo) alla parola "sommatoria" (nel nostro caso specifico, intendo). Se intendiamo che "sommatoria" stia a significare la semplice "sommatoria aritmetica" dei fattori, allora sbaglieremo. Perché NON è per nulla vero che l'insieme delle "parti" che compongono una cosa (qualsivoglia) sia pari ad una pura e semplice "sommatoria aritmetica". Vale, invece, in questo caso come in tantissimi altri, l'idea che "l'insieme delle parti" sia di gran lunga SUPERIORE alla semplice "somma aritmetica delle parti". Insomma, se è vero (come è vero) che un Programma si compone dell'insieme di TUTTI i suoi sottoprogrammi, è da considerarsi FALSO che il medesimo Programma sia da riguardarsi come "la somma aritmetica di tutti i suoi sottoprogrammi".
mago30 ha scritto:Un processo non puo' dirsi in esecuzione in quanto vengono eseguiti i sottoprogrammi e non i processi.
L'esecuzione di TUTTI i sottoprogrammi (ossia, l'insieme di tutti i "sottoprocessi") è cosa differente dall'esecuzione del Programma, giacché "eseguire il Programma" (che è il "Processo") dà luogo ad un'ENTITÀ assai
più complessa di quel che è, invece, la semplice "somma algebrica di tutti i sottoprocessi".
Per aver chiaro quel che intendo, dovresti riferirti al concetto di
Gestalt. Perché risponde al vero che, in qualsivoglia struttura, all'aumentar della complessità corrisponde un aumento di POTENZIALITÀ (ossia delle "cose che la struttura è teoricamente capace di fare") che travalica di gran lungo la pura e semplice cifra di quelle a disposizione della sola "somma di tutte le sue parti". Come ben vedi, è praticamente impossibile CAPIRE come funzionano le cose se non le si studia ed analizza APPROFONDITAMENTE. Il voler "essere semplici", in questo genere di cose, conduce dritto-dritto al pensar di capire,
ma... senza aver capito veramente.
mago30 ha scritto:Cio' mi induce a pensare che quindi il programma sia una struttura formata da tanti sottoprogrammi che possono essere in esecuzione tutti insieme,una parte o anche soltanto uno.
Idea che risponde al vero. Ma non va scordato che anche l'esecuzione ha sue proprie "istruzioni" (suoi "codici", suoi "regolamenti"), e questo vale SEMPRE: non solo nell'esecuzione di un Programma (o un suo sottoprogramma), ma anche nell'esecuzione di una Partitura (o di una sua singola pagina). Non ci si può semplicemente sedere, ogni orchestrale per i fatti suoi, a strimpellare a caso le note che stan scritte: bisogna andarle ad "eseguire" -in modo sempre coordinato- secondo ben precise regole e stabilite direttive.
mago30 ha scritto:Se leggo quindi che e' un programma e' in esecuzione,vuol dire che almeno un processo e' in fase di svolgimento e quindi le azioni previste da un certo sottoprogramma si stanno concretizzando e gli ordini in esso contenuti in fase di svolgimento.
Anche questa idea corrisponde al vero.
mago30 ha scritto:se ho in una cartella di programma due files exe e due files dll come posso interpretarli?
Gli EXE sono files "eseguibili". Le DLL sono "Librerie Dinamiche" Insomma: gli EXE vengono effettivamente ESEGUITI, mentre le DLL sono "Librerie Software" che vengon CARICATE "dinamicamente" in fase di esecuzione (anziché esser COLLEGATE "staticamente" ad un ESEGUIBILE durante la COMPILAZIONE del Programma).
Quale vantaggio si ha, usando una DLL? Semplice: si posson suddividere i Programmi in "pezzi concettualmente separati", ciascuno dei quali verrà "caricato in memoria" soltanto quando serve (e non altrove).
Ma c'è pure di più: la stessa DLL può essere "usata" (dato che viene "caricata" durante l'effettiva esecuzione) da più di un solo ESEGUIBILE. Ergo: svariati EXE possono "dipendere" da una medesima DLL. Il che non è solo un'eventualità remota, ma accade di frequente, per non dir quasi sempre. La stessa DLL serve sia all'esecuzione di un certo processo che all'esecuzione di un altro (diverso) e magari anche di un terzo, di un quarto, etc... etc...
"Librerie software" di questo tipo esiston non soltanto "per Windows" (e queste si chiamano proprio "DLL"), ma anche per gli altri Sistemi Operativi. In UNIX (in Linux, per esempio) vengon denominate semplicemente "Librerie condivise" (e hanno -ovviamente- una struttura un poco differente).
mago30 ha scritto:Posso cliccare su uno qualsiasi di questi files per attivare un processo?
A volte, si può cliccare su un EXE e questo attiva un Processo (o dei sottoprocessi oppure solo un unico sottoprocesso... secondo i vari casi). Ma non è detto che ciò sia sufficiente in tutti i casi (ci son Programmi che richiedono venga prima attivato un "launcher" che poi, a sua volta, attiva l'EXE). Inoltre, è possibile (ad esempio, per la mancanza di questa o quella DLL [in Windows] o "Libreria condivisa" [in UNIX], il file, eseguibile che di tali "Librerie" ha assoluta necessità, NON riesca affatto ad attivarsi [nemmeno a cannonate])
mago30 ha scritto:I files dll sono eseguibili come gli exe ?
No: le DLL sono "Librerie-Collegate-Dinamicamente" (Dynamic-Link-Library) che vengon "caricate direttamente in memoria" durante l'esecuzione del Processo (o del sottoprocesso) che proprio di loro abbisogna. Dal che, capisci bene che NON si tratta di veri EXE.
mago30 ha scritto:il Programma e' un concetto astratto in quanto in realta' e' solo un insieme di tanti sottoprogrammi oppure esiste un elemento che possa differenziare il Programma dai tanti sottoprogrammi che lo formano?
Esiste un
concetto di base (quello per il quale ti ho indicato come "bussola di riferimento" il concetto di "Gestalt") che differenzia NETTAMENTE il Programma dall'insieme di tutti i sottoprogrammi che lo compongono e il Processo (totale) dalla semplice "sommatoria" (molto più "povera" di potenzialità) di tutti i sottoprocessi che lo compongono. Puoi immaginar tale concetto usando questa frase: "La totalità è più complessa -dunque, ha molto maggior potenziale- dell'insieme delle parti che la compongono".
mago30 ha scritto:Se fosse come detto nella prima ipotesi,parlare di Programma non avrebbe molto senso,dal momento che ci sono tanti sottoprogrammi interconnessi.
Il punto che trascuri, qui, è l'importanza di una parola che par quasi irrilevante, "di contorno" e, invece, è basilare: "interconnessi".
È proprio questa "interconnessione" che DIFFERENZIA in maniera netta il Programma (il tutto) dal puro e semplice "insieme di tutte le parti che lo compongono".
Perché questa "interconnessione" è, se ci pensi, in realtà, la RELAZIONE fra le diverse "parti". Ed è proprio la varietà e l'importanza di codeste "relazioni" che rende sempre "il tutto maggiore delle sue parti".
Considera, ad esempio, una lampadina
... essa può assumere due differenti STATI: o è accesa oppure è spenta.
Bene. Adesso, aggiungi, al suo fianco, verso destra, una seconda lampadina (identica). Anche essa, può assumer gli stessi due STATI: può ritrovarsi "accesa" oppure "spenta".
Adesso, aggiungi una terza lampadina, a fianco delle precedenti due, ancora verso destra, identica pure essa: anch'essa potrà essere accesa oppure spenta.
E chiediti quante possibilità ("stati potenziali") possiam cavare fuori da questa situazione.
Se consideriamo le lampadine separatamente, avremo solo due possibili situazioni: o c'è della luce (accesa) oppure no (spenta).
Se le sommiamo assieme, avremo quattro situazioni: o sono tutte accese, o due sono accese o una sola è accesa oppure sono tutte spente.
Adesso, però, prova a considerare NON già le singole "lampadine", ma la
totalità che esse formano e che chiameremo: "
riga di lampadine". Quanti "stati potenziali" mostra la nostra "riga di lampadine"?
Ne mostra ben otto: possiamo aver tutte le lampadine accese, possiamo averle tutte spente, possiamo aver la prima lampadina accesa e le altre due spente. Possiamo aver la seconda lampadina accesa e la prima e la terza spente. Possiamo aver la terza lampadina accesa e la prima e la seconda spente. Possiamo avere la prima lampadina spenta e le altre due accese. La seconda spenta e le altre due accese e, infine, la terza spenta e le altre due accese.
Qui, nell'esempio che ho appena fatto, la "relazione" fra gli elementi (le lampadine) era semplicemente quella spaziale (non eravamo più dinnanzi a TRE lampadine, ma innanzi ad una RIGA di tre lampadine). Ed è questo, il punto vero che è importantissimo capire: una "riga di lampadine" è cosa differente (e più complessa e più "ricca" di potenziale) rispetto alle tre lampadine (considerate separatamente) che la compongono.
Esattamente come un Processo è cosa diversa (e più "ricca") della semplice somma aritmetica dei sottoprocessi (considerati separatamente) che lo formano e come il Programma è cosa più ricca (e diversa) dalla semplice somma aritmetica dei sottoprogrammi (considerati separatamente) che lo compongono.
Tu dirai:
"Ti avevo chiesto una spiegazione semplice!"... Beh, pensa quello che vuoi ma credo onestamente che sia proprio
questa la spiegazione più "semplice" che -volendo darti modo di capir davvero- sono capace di darti...