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