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.
