program4
Riassunto assaggi di programmazione.
Donato Taddei su uictech, 15\02\2013, h. 21.13.

Prerequisito: nessuno.
Non  necessario nemmeno aver letto o minimamente compreso i messaggi in merito passati in questo 
ultimo scorcio.
Nei romanzi a puntate il riassunto delle puntate precedenti si fa per quelli che hanno saltato la 
puntata oltre che per quelli che non ricordano.
Il riassunto  di per s un procedimento di sintesi, dal particolare si risale a concetti generali, 
cioo si prescinde dai dettagli che ciascuno ha esposto, per astrarre, sintetizzare, generalizzare 
il succo.
Si compie cio un processo di astrazione o di generalizzazione.
Ma, oltre al riassunto, qui si vogliono anche cominciare ad anticipare alcuni concetti che 
potrebbero essere oggetto di una successiva tornata.
Alcune parole o frasi verranno sottolineate, ribadite, sia con delle ripetizioni, dei sinonimi, sia 
attraverso le virgolette.

1) - "linguaggio di programmazione"
 stato questo uno dei principali "oggetti" del contendere, il linguaggio di programmazione  stato 
oggetto di discettazioni varie.
Bene:
"un" linguaggio di programmazione qualunque, ogni linguaggio di programmazione, dunque tutti i 
linguaggi di programmazione
ha come scopo quello di permettere all'uomo di dare istruzioni al computer.
Tutti i linguaggi di programmazione hanno quindi in comune questo scopo, e quindi possiamo dire che 
un linguaggio di programmazione qualsiasi ha comunque la caratteristica, la "propriet", di servire 
a fare programmi.
Questa propriet non  una descrizione, una chiacchiera, si sostanzia nelle azioni che far poi 
compiere al computer.

2) - l'"ambiente di sviluppo"
"un" ambiente di sviluppo, quindi "ogni" ambiente di sviluppo, vale a dire "tutti" gli ambienti di 
sviluppo hanno come scopo ultimo quello di aiutare il programmatore a scrivere programmi in un 
determinato linguaggio.
Questo scopo viene raggiunto:
A) - attraverso la generazione di codice al posto del programmatore,
b) - il riutilizzo di spezzoni dicodice presente nelle sue librerie sempre per far faticare meno il 
programmatore,
c) - fare una serie di cose di cui normalmente il programmatore medio manco si accorge e non ha 
nemmeno una pallida idea che esistano, figurarsi a farle.
Dunque lo scopo viene raggiunto attraverso parecchie azioni.
Allora possiamo dire che tutti gli ambienti di sviluppo condividono un unico fine che si esplicita 
nelle tre azioni che abbiamo detto.

3) - linguaggi e ambienti
Tutti i linguaggi hanno un proprio ambiente di sviluppo?
No.
Dunque l'ambiente di sviluppo non fa parte delle propriet comuni a tutti i linguaggi di 
programmazione perch ci sono pure quelli che non ce l'hanno.

4) - Ambienti di sviluppo accessibili agli orbi.
Solo pochissimi.
Dunque la propriet accessibilit non  una propriet comune a tutti gli ambienti di sviluppo ma 
solo a una esigua minoranza di essi, vale a dire agli ambienti di sviluppo accessibili.

5) - Linguaggi compilati e linguaggi interpretati.
Fanno tutti parte dei linguaggi di programmazione ma hanno due modalit alternative e a volte 
concomitanti di funzionamento:
I linguaggi compilati producono alla fine un file exe,
quelli interpretati vengono eseguiti passando il codice come input a un programma specifico che 
provvede ad eseguirlo.
Un programma scritto in un linguaggio compilato avr un suo codice e il corrispondente file exe 
prodotto dal compilatore.
In un linguaggio interpretato ogni programma avr il proprio codice ma come eseguibile il programma 
interprete del linguaggio in cui il codice  stato scritto, e sar sempre quello per qualsiasi 
programma scritto in quel linguaggio.

6) - il livello dei linguaggi di programmazione
Si dicono a "basso livello" quei linguaggi che sono pi vicini al funzionamento della macchina;
si dicono ad "alto livello" quei linguaggi che sono invece pi vicini al linguaggio e al 
ragionamento umano;
si dicono di "medio livello" quei linguaggi che hanno caratteristiche intermedie tra questi due.
Comunque ogni linguaggio di programmazione ha un suo specifico livello, per cui possiamo dire che 
il livello  una cratteristica comune a tutti i linguaggi, ancorch assuma differenti valori per i 
tre sottoinsiemi di linguaggi considerati.

7) - linguaggi procedurali e linguaggi ad oggetti
Con buona approssimazione possiamo dire che ricadono nei tre sottoinsiemi di cui al punto 
precedente:
i linguaggi ad oggetti corrispondono all'incirc a quelli di alto livello,
quelli molto procedurali a quelli di basso livello,
e quelli cosiddetti "orientati agli oggetti" al medio livello.

8) _ Pensiamo a una applicazione pratica delle banalit suesposte perch non stiamo facendo 
filosofia ma parlando appunto di programmazione.
Potremmo per esempio voler fare un programma che elabori un questionario in merito alle preferenze 
e conoscenze programmatorie dei listaioli.
Ovviamente dovremmo prima di tutto definire la scheda con le voci del questionario, ovvero, per 
usare la terminologia fin qui usata, definire l'"oggetto scheda" e le sue propriet (le voci), 
ovvero definire le propriet che caratterizzano l'oggetto scheda, cio che ogni scheda del 
questionario dovr contenere.
Se qualcuno volesse esercitarsi avrebbe gioco facile: basterebbe riferirsi ai 7 punti precedenti.
Altro paio di maniche invece sarebbe esercitarsi a organizzare il programma che dovr elaborarle, 
nonostante questo sia u caso estremamente semplice, in quanto ogni voce  indipendente dalle altre.
Se parecchie persone vi si cimentassero il risultato sarebbe quello di ottenere tanti programmi 
diversi quanti fossero quelli che facessero l'esercizio, con relativa babele di approcci, di 
linguaggi, distinguo, funzioni che sembrerebbero tutte uguali, ma in realt nella pratica molto 
piene di errori che sfuggirebbero a un esame superficiale di chi legge ma che prolungherebbero 
all'infinito la discussione perch poi ognuno chiederebbe agli altri dove pu stare la causa dei 
suoi errori, cio perch il suo programma non funziona.
La torre di babele sarebbe notevolmente moltiplicata nel caso pi complesso in cui le singole voci 
fossero interdipendenti le une dalle altre, come potrebbe essere il caso in cui, anzicch voci di 
un questionario, le variabili in gioco dipendessero le une dalle altre come un sistema di equazioni 
o le variabili di una formula fisica.
E allora dovreste migrare in massa perch non se ne potrebbe pi di codici, di if, di loop, di 
costrutti, di parentesi, e relativi dibattiti.
Supponiamo infine che prevalga il buon senso e che quindi prima di lanciarsi in esercizi logici e 
dialettici, si faccia uno sforzo di sintesi e di astrazione, tipo quello che state leggendo e che 
si faccia prima di impelagarsi, non dopo come questo riassunto.
 garantito che la babele sar molto minore e pi breve.
Si potr allora dire che il problema del questionario ai listaioli  stato affrontato con uno stile 
di programmazione orientato agli oggetti.
Come avete potuto vedere in questo riassunto si  parlato di linguaggi di programmazione senza aver 
avuto bisogno di nominarne neppure uno, e si pu continuare senza ricorrere ai costrutti e alla 
grammatica e sintassi di alcun linguaggio per cominciare a sviluppare il programma.

L'esercizio potrebbe essere proprio questo.
Chi legge ed  digiuno di queste cose non conosce alcun linguaggio di programmazione, ma conosce 
l'italiano, la logica e il buon senso, o almeno si spera.
