program2
Assaggio: javascript e programmazione ad oggetti
Donato Taddei su uictech, 08\02\2013, h. 20.10.

Cosa è javascript?
un linguaggio di programmazione interpretato.

E sarebbe?
Ci sono due modalità con cui viene eseguito il nostro codice, costituito da file di testo.
Alcuni linguaggi come il Delphi o c, c++, cobol, prendono in input una sola volta il file di testo 
col codice che avrete scritto e ne "compilano" una versione binaria, solitamente un file con 
estensione exe o dll.
Lo dice la parola: questi sono linguaggi appunto compilati, che cioè producono come output file 
eseguibili.

Altri linguaggi invece come visualbasic, perl, php, java, python, prendono in input il vostro 
codice ogni volta che volete eseguirlo e anzicchè restituirsi un file exe producono diettamente i 
risultati di ciò che avete scritto nel vostro file di testo.
Poichè però i vostri file di testo appunto non sono programmi eseguibili per eseguirli bisognerà 
associarli a uno specifico programma che li capisce.
Questo programma è detto interprete.
Ergo per ogni codice scritto in un linguaggio interpretato ci vuole uno specifico programma 
interprete
Così per eseguire il codice perl contenuto in un file chiamato script.pl
dovrò scrivere al prompt dei comandi o nella finestra esegui
perl script.pl
Idem vale per php, per java, per visualbasic, nel quale basterà cliccare sul file vbs col codice ed 
automaticamente sarà lanciata la vbasic.dll (o come si chiama) che interpreterà ed eseguirà il 
vostro codice.
Un tipico esempio di linguaggio interpretato noto a tutti sono i file batch:
l'interprete è il command.com o cmd.exe.

Subito qualcuno vorrà smentirmi facendomi osservare che visualbasic professionale produce file exe 
in output e quindi deve ritenersi un linguaggio compilato anzicchè interpretato come sto dicendo 
io, ma sbaglia perchè visualbasic è un linguaggio interpretato e il file eseguibile prodotto dalla 
compilazione non è altro che l'interprete impccato insieme al codice parzialmente compilato in un 
eseguibile.
Un altro esempio di questo è l'interprete python implementato all'interno di nvda.
Quando lanciate il binario nvda.exe esso per prima cosa costruisce l'interprete Python caricandone 
le relative dll e queste fino a non molte versioni fa erano inserite fisicamente nel file exe che 
quindi pesava 5 mega, mentre ora il file nvda.exe sono solo alcune decine di kilobytes.
Dopo di che nvda compila ed esegui le unità di codice con cui è costruito per fare il mestiere che 
fa, vale a dire lo screen-reader.

Tornando a bomba:
javascript è un linguaggio interpretato:
analogamente a quanto accade cliccando su un file di visualbasic (con estensione vbs) se scrivete 
un file javascript (con estensione js) vi si aprirà il window server host pronto ad interpretarlo.
E quello è già un interprete javascript.

Tuttavia javascript nasce come linguaggio specificamente progettato per rendere dinamiche le pagine 
web lato client.
Questo, sorvolando sulla precedente definizione, significa che l'interprete javascript è contenuto 
in ogni browser, non solo Internet Explorer o Firefox ma in ogni browser, su qualsiasi piattaforma, 
(apple mac, Ipad, linux, ogni razza di unix, symbian.
E, con piccole differenze, funzionerà allo stesso modo indipendentemente dal dispositivo e dalla 
piattaforma alla sola condizione che il dispositivo possa connettersi a internet.
Non fraintendete: non è necessario essere connessi a internet per eseguire codice javascript, 
voglio solo dire che ci sia un programma capace di connettersi a internet, cioè un browser.

Che legami di parentela esistono tra java e javascript.
Javascript può essere considerato il figlio bastardo edel principe java o un lontano parente 
miserabile.

Qual'è il linguaggio che più gli si avvicina nel senso delle funzionalità?
visualbasic.
fanno all'incirca le stesse cose, almeno nell'uso che normalmente se ne fa.
La differenza fondamentale tra i questi due linguaggi è che visualbasic deriva dal vecchio basic ed 
è targato Microsoft, dunque funziona sostanzialmente se non esclusivamente sulle macchine con sopra 
installato windows, ed essendo di casa mette a disposizione in pratica tutte le principali funzioni 
di un linguaggio di programmazione rispettabile (si possono fare i giochini, la grafica, files, 
databases ecc.) però se vi fate una calcolatrice o altro programmetto non potrete usarlo sul 
telefonino se non ha un sistema operativo windows.
Viceversa javascript offre molte meno possibilità ma funziona con qualsiasi sistema operativo ed è 
molto più orientato agli oggetti.

A quale linguaggio rassomiglia nella sintassi?
a tutti quelli derivati direttamente o indirettamente dal c, quindi c++, java, perl, php, script di 
jaws, python.

Cosa si può fare con javascript?
Tutto quello che si può fare in una pagina web, aggiungere campi a una pagina, gestire eventi di 
tastiera o di mouse, calcoli, espressioni regolari, menu a comparsa.

Cosa non si può fare con javascript.
In javascript bisogna scordarsi di fare gran parte delle cose che si fanno di solito con i 
linguaggi di programmazione come leggere e scrivere files, o lanciare programmi, ad eccezione della 
connesssione internet via http.
Non pensate che chi l'ha inventato fosse down.
semplicemente non vi lascia scrivere e leggere files, lanciare programmi perchè, essendo incluso in 
ogni browser, questo significherebbe mettere alla portata di un qualsiasi principiante come voi 
password e coordinate bancarie, e non credo sia il caso.

E allora che me ne faccio di questa schifezza, di questo aborto di linguaggio di programmazione?
Non lo ha prescritto il medico.
Se avete mai cercato un percorso a piedi o in mcchina con Google maps o meglio se vedendo ne avete 
apprezzato mappe e cartine, anche interattive, beh quella roba è fatta interamente in javascript e 
scusate se è poco.

Io ho imparato un po javascript perchè mi faceva schifo la calcolatrice del telefonino, così me ne 
sono fatta una che posso usare sia sul pc che sul telefonino.
Ma ci ho fatto pure quella roba dei colori che ho postato un mesetto fa.
Di tanto in tanto con quello verifico anche l'andamento della mia pressione arteriosa esaminando le 
memorie dello stigmomanometro, ovviamente inserendo i dati manualmente.

Continuate a questo punto a dire che siete tanto interessati a javascript o avete cambiato idea?

Passiamo ora ad altro: parliamo di programmazione orientata agli oggetti.
Ne parleremo però con un breve ripasso di analisi grammaticale e logica italiana, quella delle 
elementari, anzicchè nel giargianese di tutti i linguaggi di programmazione.

A Platone, che faceva ora ci vuole troppo il filosofo, qualcuno obbiettò:
"platone, tutto quello che vuoi tu ma una cosa è certa: se io vedo un cavallo vedo proprio un 
cavallo, non vedo mica la "cavallinità" di cui parli.
Ma se Platone faceva troppo il filosofo l'altro era un somaro perchè la cavallinità esiste e come.
Infatti alla scuola elementare ci insegnavano che i nomi astratti sono tali perchè appunto non si 
vedono e non si toccano, ma tuttavia esistono, altrimenti non sarebbero nel vocabolario.
Poi c'era pure che diceva che l'aria è astratta, perchè non si vede e non si tocca.
In ogni caso i nomi astratti, che spesso finiscono con la a accentata come bontà e felicità, 
esistono e sono appunto l'astrazione del relativo insieme concreto di tutti gli individui od 
oggetti che hanno le medesime caratteristiche, nell'esempio quelle del cavallo.
Il nostro somaro materialista infatti non si accorgeva del fatto che quando il suo occhio percepiva 
il cavallo, a livello del suo cervello partiva tutto un processo di filtraggio di quanto gli 
trasmetteva la retina mettendolo appunto in grado di dire che ciò che vedeva era proprio un 
cavallo, perchè aveva tutte le caratteristiche proprie dei cavalli: p.es. la criniera, gli zoccoli, 
la stazza, il profilo.
Le caratteristiche proprie del cavallo e le azioni che solo un cavallo può fare, esempio nitrire, 
sono associate al nome astratto di cavallinità, o diciamo solamente cavallo, con riferimento a un 
individuo che abbia tutte le caratteristiche e attribuzioni tipiche di un cavallo, come dire il 
"cavallo tipo".

In italiano dicesi in senso lato "oggetto" tutto ciò che è appunto "oggetto" della nostra o altrui 
attenzione.
In senso stretto diciamo oggetti o cose tutto quanto è inanimato in quanto non presenta come tratto 
saliente l'individualità che invece caratterizza gli esseri viventi.
Dunque la parola oggetto è quella che meglio rende il concetto di astrazione in quanto meglio 
evidenzia le cratteristiche e gli attributi propri di un determinato insieme di unità, appunto 
identificati dalla condivisione di caratteristiche od azioni uguali o simili.

Tornando all'analisi grammaticale:
abbiamo visto i nomi astratti, il "cavallo tipo" che incarna la cavallinità.
Ma c'erano pure gli aggettivi qualificativi: bello, brutto, alto, basso,
fulvo, moro, per cui diciamo che quel cavallo è moro, o che i cavalli sono quadrupedi.
Gli aggettivi qualificativi qualificano il nome, definendone le caratteristiche o se si preferisce 
gli attributi.
Ma, oltre agli attributi che lo qualificano un nome può anche essere collegato a delle azioni, a 
dei verbi, che chiameremo predicati.
Questo è la diluizione omeopatica del concetto base della programmazione ad oggetti.
Ovviamente siccome non siamo alle elementari ma è roba per professori universitari,
il nome astratto o cavallo tipo lo chiamano "classe" (sono o no dei prof.?), gli aggettivi 
qualificativi e quantitaviti li chiamano "proprietà" (si vede che non sono dei poveracci!) e, cosa 
più bizzarra, le azioni, i verbi, i predicati sapete come li chiamano?
metodi.

Così avremo un oggetto "cavallo", in cui possono riconoscersi tutti gli individui della classe 
cavallo e ogni individuo lo chiamano una istanza della classe cavallo, la quale ha come proprietà:
quadrupede
mammifero
peso
zoccoli
orecchie in un determinato intervallo di ampiezza: se no sarebbe un ciuccio
e una serie di metodi:
trotta
galoppa
nitrisce
morde il freno
s'impenna

Ok abbiamo definitol'oggetto cavallo ma fino a un certo punto

abbiamo detto che il cavallo è un mammifero.
Ma quali saranno le proprietà e metodi dell'oggetto mammifero?
Proprietà:
respirazione polmonare
vertebrato
sangue a temperatura costante

metodi:
partorisce prole viva,
riproduzione gamica

Allora quando tra le proprietà dell'oggetto cavallo noi inseriamo l'oggetto mammifero i professori 
ci dicono che la proprietà mammifero della classe cavallo è stata derivata dall'instanziazione 
della classe mammifero e che quindi ora la classe cavallo ha ereditato proprietà e metodi della 
classe mammifero.
Tutto ciò per dire che il cavallo, essendo mammifero, come tutti i mammiferi, ha
respirazione polmonare
vertebrato
sangue a temperatura costante
partorisce prole viva,
riproduzione gamica
c'è poi una classe vertebrato le cui caratteristiche sono ereditate dalla classe mammifero e quindi 
trasmesse alla classe cavallo.

Più prosaicamente per quelli che masticano o masticherebbero qualche nozione di programmazione, 
quella classica, quella che ora si chiama procedurale, possiamo dire che una classe raccoglie in 
una struttura dati referenziata da un nome una serie di variabili e di funzioni ad esso associate: 
le variabili le chiamano proprietà e le funzioni metodi.
Di diverso c'è, ma c'era anche con l'approccio procedurale nei programmi un po più grossi del "ciao 
mondo" il fatto che variabili e funzioni associate a questa classe od oggetto sono variabili per lo 
più locali a quella classe, proprio come quando si scomponeva un progamma delphi o c in units o 
moduli.
E così penso di aver chiarito come intendo portare avanti i due discorsi che mi sono impegnato a 
portare avanti.
Nota finale:
Tra ieri e oggi ho già scritto ben 21 k di messaggi.
Pertanto continuerò solo quando tutti insieme voi altri avrete scritto altrettanti k in merito, 
ovviamente a netto del quoting.
Mica faccio l'entreneuse per quelli cui di tanto in tanto vengono perversioni programmatorie.
Torna all'indice