program3
Costruiamo una applicazione windows utilizzando nvda: piacere, python
Donato Taddei su uictech, 11\02\2013, h.09.20.

anche questo messaggio non richiede alcun prerequisito.
Mi limiter a spiegare il motivo per cui mi sono proposto per javascript e python dando qualche 
informazione generalissima su questo serpente.
Ho scelto questi due temi non per capriccio e nemmeno per sfoggiare le mie conoscenze su di essi, 
che non sono i linguaggi che conosco meglio.
O zappatore non s'a scorda a mamma e io, a lustri di distanza, non scordo il c, e quando ho bisogno 
di piccole elaborazioni di file non faccio altro che scrivere qualche riga in fondo al file 
contenente codice perl e lo eseguo attraverso l'interprete e non sono nemmeno legato al perl perch 
me ne sono compilato una versione minimale portabile.
E ovviamente me la sono compilata con un compilatore c, liscio, perch quello addizionato ed 
emulsionato cio il c++ non mi ha mai interessato, tanto meno mi interesserebbe ala vecchiaia se 
non altro perch sta passando di moda.
E ho sulle mie macchine almeno tre compilatori c-c++ ma da tempo non ne uso alcuno.

Ho scelto python perch, a differenza di javascript che per funzionalit e dimensioni  
assimilabile al linguaggio di script di jaws, nel senso di essere un linguaggino dedicato interno a 
qualche applicazione, il browser nel caso di javascript, il python  invece un linguaggio 
interpretato di alto livello.

Che vuole dire di alto livello?
Vuol dire che ad esempio tutto il codice, anche detto codicesorgente o soloo sorgente, di nvda che, 
per quanto pi piccolo e semplice di jaws,  pur sempre un programma di una certa complessit, 
assomma a qualche centinaio di k.
Per scrivere lo stesso programma in c o in delphi sarebbe stato necessario scrivere qualche mega di 
codice e decine di mega per un linguaggio di basso livello come l'assembler.
Anche questo era uno dei motivi che ai tempi della lista nv-programmare di Andrea, nonostante 
c'erano programmatori come Di Grande, Tranfaglia, lo stesso Andrea, Giorgio Abraini, ci facevano 
sembrare quasi impossibile riuscire a fare noi uno screen-reader ed  ovviamente anche queto il 
motivo per cui Curran, in python, nvda invece l'ha fatto e anche da solo.

Altro esempio:
anche il visualbasic  un linguaggio di livello medio-alto ed  questo il motivo per cui Guido 
Ruggeri, da solo, ha sviluppato e mantiene winguido, che pure ha tante funzionalit da permettere a 
un cieco digiuno di windows di usare decentemente il computer, e Giuliano Artico ha fatto il doc 
per leggere i libri.
A tal proposito qualcuno avev chiesto se in visualbasic si possono scrivere files: evidentemente s
ma bisogna fare un distinguo tra i files vbs che si eseguono usando come interprete il windows 
server host e il visualbasic compilato fatto con un ambiente di sviluppo:
nel linguaggio interpretato ci sono dei limiti anche se anche con quelli si possono fare ad esempio 
degli spyware e quindi evidentemente se ne possono fare di cose.

Ai tempi del dos, come tanti, anche io ho cominciato col quick basic e mi divertivo perch in capo 
a un mesetto gi facevo qualcosa, appunto perch era un linguaggio di alto livello da cui l'attuale 
visualbasic discende, anche nella sua versione orientata ai server, vale a dire l'asp.
(ne avete incontrati no degli indirizzi web che finiscono con la parola asp?
Bene vuol dire che l'indirizzo rimanda a una pagina sui cui gira un "advanced server program", che 
 il nipote di quel quick basic o qbasic).

Ma allora i miei interessi erano diversi: come diceva Francesco Melisi mi interessava il discorso a 
basso livello, mi interessava toccare i registri, gli indirizzi di memoria, e perci passai al c, 
all'inizio con grande frustrazione perch era molto pi lungo e lento da scrivere e per fare una 
cazzatina che in qbasic avrei messo 5 minuti l impiegavo tre giorni.
Per, anche se poi non mi  capitato o quasi di farlo, il dito nei registri potevo infilarlo, ma 
anche l fino a un certo punto e cos tra le mie cianfrusaglie tengo pure un ottimo compilatore 
assembler, almeno per quei tempi.

Altro esempio:
Tempo fa inviai qui il link ad una mia paginetta in php che esplora la struttura di una qualsiasi 
pagina html
http://donatotaddei.altervista.org/dom.php
di soli 24 k ma se un pazzo avesse voluto farla in c o delphi, gestendosi connessione, server e 
tutto quanto, avrebbe dovuto scrivere tonnellate di codice.
Ad essere precisi il codice php di questa pagina non supera le 100 righe perch il resto  
costituito dall'html da generare.

Ma chi se ne frega, direbbe Gabriele, tanto io prendo, scelgo da una toolbar, trascino, il 
controllo che voglio creare, premo un tasto e il compilatore lo scrive per me, il che  ovviamente 
vero.
Ovviamente il compilatore non pensa il programma al posto tuo, non infila errori logici nel codice, 
non fa errori sintattici, non si scorda parentesi, ghirigori, ma se disgraziatamente bisogna 
metterci le mani, il che ovviamente succede quasi sempre, specie ai principianti, sono cavolini 
acidi e tanto pi cavolini acidi quanto pi sono i chili di codice implicati.

Ok allora il python  un linguaggio interpretato di alto livello, inventato da un italiano, un 
certo Guido Rosso o Rossi, in una universit ma non quella di Cassino o di Chisciano ma quella di 
Amsterdam e perci si fa chiamare Guido Wan Rossum.
Il python non  orientato agli oggetti ma  esso stesso un oggetto che ha le propriet e metodi di 
un linguaggio di programmazione ad oggetti, interpretato di alto livello.
Nasce proprio per formalizzare le acquisizioni in materia di programmazione ad oggetti affermatesi 
nell'ultimo ventennio del 900.
Il problema degli altri linguaggi orientati agli oggetti come perl o c++ o php era infatti una 
sintassi alquanto farraginosa e perfino criptica, occorreva qualcosa di meno arzigogolato e pi 
immediato ed  questo il motivo per cui pur essendo nato per ultimo verso il 2000 sta prendendo 
rapidamente quota.
Tra i linguaggi di programmazione  quello con sintassi pi semplice: niente if, niente parentesi 
graffe, niente puntatori, una sintassi spartana e leggibilissima quando ci si  fatta l'abitudine.

Questo normalmente manda nel pallone chi  abituato con altri linguaggi di programmazione: delphi, 
c, visualbasic perch all'inizio non ci si raccapezza una mazza.
Perci anche a me  venuto un po indigesto.

Viceversa per, ed  questo il motivo per cui l'ho proposto, per chi dovesse cominciare da zero ed 
 quindi "tabula rasa" risulterebbe molto pi digeribile perch  molto pi simile a quella cosa 
che chiamano pseudo-codifica, vale a dire quando si simula un linguaggio di programmazione usando 
l'italiano: se-allora-altrimenti, ripeti finch, ripeti fino a che non, scegli opzione ecc.
Allora ho proposto javascript e python, sia pure cos differenti per dimensioni e potenza, perch 
entrambi sono nati come linguaggi ad oggetti puri, perch ritengo che chi si avvicinasse oggi alla 
programmazione, anche nel suo interesse, dovrebbe giocoforza programmare ad oggetti, tranne chi 
deve programmare a basso livello bazzicando con l'hardware e i circuiti perch un driver per 
gestire un aggeggio da collegarsi al pc od anche autonomo non pu farlo in perl, php, python e deve 
avere 2 palle per farlo in c, ci sono gli assembler e gli eprom per quello.

Ricapitolando, il python  interpretato, p la personificazione (qualcuno direbbe l'instanziazione) 
della programmazione ad oggetti, ha una sintassi semplice e priva di ghirigori.

Altra cosa che manda nel pallone chi viene da un linguaggio tradizionale,  il fatto che non ha una 
interfaccia o ambiente di sviluppo integrato (ide) in sigla) che ti fa pure il caff come ho 
attribuito a Gabriele.
Infatti il cosiddetto pythonwin, una interfaccia minimale per window  una finestra vuota senza 
quasi strumenti, insomma somiglia molto da vicino alla console python di nvda, e allora tanto vale 
usare quella perch si hanno anche sotto mano tutte le funzioni di accessibilit dello 
screen-reader.
nei 50 mega in cui si espande l'insaccato di 12 mega di nvda voi avete oltre allo screen-reader 
tutto il pitone per manipolare a vostro piacere il vostro pc e per farci velocemente le cose che ci 
vorrete programmare, avete, sia pure con le sue particolrit, tra le mani
un ambiente di sviluppo di alto livello, programmato ad oggetti..
Perci paragona la terra a un piccolo asteroide chi paragona python al linguaggio di script di jaws.

Ma anche questo ha il suo rovescio positivo:
Gabriele non si sente pi perch dopo essersi scaricato tre manuali e 120 mega di compilatore avr 
il suo bel da fare solo a fare una scorsa per capire cosa ha scaricato, poi avr il suo problema di 
familiarizzare con l'interfaccia, trovare le scorciatoie che gli fanno pi comodo, esplorare menu, 
documenti multischeda, capire cosa fanno: il problema di sapersene servire  di l da venire cio 
quando si sar cominciato a sciroppare pi di qualche capitolo di manuali.
Come detto il python queste cose semplicemente non ce l'ha e quindi chiunque si avvicinasse da zero 
alla programmazione non deve passare quello che sta passando Gabriele.
Dico per dire, ovviamente perch a quest'ora magari Gabriele, zac, za, ha gi fatto due o tre 
programmetti elementari in c++.
L'altro giorno ho mostrato come  banale scrivere una funzioncina in javascript, analogamente avrei 
potuto fare in python ee chi ha solo una semplice curiosit e non l'ambizione di fare il 
programmatore pure si  fatto una idea di che si tratta.
E grosso modo  pi o meno questo che si pu fare in una lista tecnica s ma generalista.
Per non ho avuto bisogno di perdere settimane a discutere:
su che linguaggio usare,
quale manuale scaricare,
quale ambiente di sviluppo scaricare e da dove,
come fare per aprire il primo progetto,
in quale men trovare una certa cosa e combinazione di tasti usare,
(che ovviamente valgono solo per quell'ambiente,
come le combinazioni di tasti da utilizzare.

Purtroppo i computer hanno raggiunto dimensioni al di fuori della portata di un individuo.
Quante dll avete nel vostro computer?
centinaia solo nella directory c:\windows\system32
e quante funzioni sono contenute in una dll mediamente?
alcune centinaia il che fa decine e decine di migliaia di funzioni che ovviamente non si usano 
tutte ma solo a voler sapere ognuna a cosa serve si impazzisce.
E certo a farle entrare tutte in una lista  fare entrare il mare nel secchiello.
Credo a questo punto di aver chiarito perch mi sono venute queste due idee bizzarre del javascript 
e di nvda.
Ed ora che vi lascio vado ad approfondire proprio una banalit del javascript relativa alla 
costruzione di oggetti decisamente pi complessi della funzioncina per misurarsi la grossezza delle 
scatole, che non ho ben metabolizzato e per metabolizzare intendo trarre tutte le conclusioni e le 
implicazioni perch in queste cose, superato le astrusit iniziali, dopo sembra tutto tanto 
semplice, tanto banale, che alla fine non si  capaci di servirsene, cio di trarne le implicazioni 
pi profonde.
