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.
Torna all'indice