back.gif (164 byte) Chi non usa il computer prema subito questo bottone prima di addormentarsi

 

Hanni e il computer                Hanni and computers

Mi e' sempre piaciuta la scienza e non la tecnica. Non mi sono mai entusiasmato per come

funziona la mia automobile o la mia radio e quando sul mercato comparvero i primi PC

che consideravo ( e lo sono ) macchine calcolatrici ipertecnologiche, li odiai senza neanche

conoscerli. Non li mettevo neppure un istante in connessione con qualcosa che invece,

da appassionato di fantascienza, mi affascinava, e cioe' la AI intelligenza artificiale e la

VR realta' virtuale.

Ancora oggi, anzi oggi men che meno, non so rimediare al minimo guasto Hardware, ho

difficolta' a inserire una nuova scheda nel PC, ma e' anche vero che si puo' essere bravi

a guidare un'automobile o un aereoplano senza essere dei meccanici.

 

L'argomento che segue e' solo per chi capisce qualcosa di informatica. Gli altri cadranno

addormentati dopo le prime righe, quindi e' meglio che smettano qui.  

 

Uno dei primi usi dei computer fu il calcolo degli orbitali dell'idrogeno, una cosa di cui

potevo parlare ai miei studenti, ma che  non  potevo mostrare. Con le calcolatrici tascabili

i calcoli erano troppo lunghi e noiosi. Cosi' decisi di sacrificarmi ed acquistai uno SPECTRUM,

un aggeggetto grande quanto il palmo di una mano che si poteva collegare al televisore

e a un registratore a cassette.  Il televisore funzionava come   monitor e il registratore

come memoria di massa, cioe' come un dischetto floppy.  La ROM dello Spectrum era di

soli 15 Kbyte ma era fatta in modo cosi' geniale (piu' tardi imparai il linguaggio assembler

Z80 e misi le mani su un esemplare di manuale della ROM) che permetteva di fare gia'

quello che i computer Olivetti o IBM facevano, con in piu' la gestione dello schermo a

colori! So che esistono ancora patiti dello Spectrum che si scambiano programmi o

simulazioni dello Spectrum stesso ma non sono un archeologo e appena ho potuto

sono passato a un PC IBM piu' evoluto. Il genio dello Spectrum nel frattempo aveva

mandato tutto in malora investendo tutte le sue risorse in due progetti: un orologio

da polso-televisore e un triciclo da citta' aperto!.

Comunque c'era un semplicissimo manualetto con nozioni del linguaggio BASIC

supportato dallo Spectrum che era quasi uguale a quello IBM.

Fu l'inizio di una passione. Non sapevo staccarmi dal computer se non a tarda notte.

Programmavo gli orbitali si, ma anche un sacco di giochini e perfino la simulazione

di una centrale nucleare sotto forma di gioco che poi addirittura fu usata in un

congresso di ingegneri nucleari. . La parola magica era: simulazione!

 

Lo Spectrum era comunque lento specialmente nella grafica. Allora un programma scritto

in Basic veniva letto dalla macchina e tradotto in istruzioni riga per riga (interprete).

Oggi invece i linguaggi di programmazione evoluti (anche il Basic) usano compilatori

che leggono il programma e lo trasformano in file eseguibile .exe

C'era un modo per accelerare le cose e cioe' usare il linguaggio macchina.

Questo si poteva fare inserendo sequenze di numeri in formato binario, e ogni sequenza

corrispondeva a un'istruzione, o in formato esadecimale piu' comodo. Sono arrivato

a fare questo anche se per piccole routines, mentre per le piu' grandi gia' esisteva il

linguaggio assembler piu' lontano dai numeri e piu' vicino al linguaggio umano, ma

sempre molto distante dai linguaggi evoluti tipo Basic, Pascal, o C.

Quindi imparai l'assembler per lo Spectrum, poi quando passai ai computer IBM

dovetti passare all'assembler Microsoft (MASM) gia' molto piu' potente.

Imparai anche linguaggi come il LOGO, il PROLOG, il Pascal, il C++ .

Cosi'  mi sorbettai manuali di informatica che avrebbero sconfitto la

piu' invincibile insonnia di questo mondo e dovetti vedermela con la mentalita' degli

ingegneri Microsoft, che scrivono manuali pessimi. Infatti, come tutti gli ingegneri,

scrivono  pensando di essere letti non da utenti normali, ma esclusivamente da ingegneri.

 

Con l'aumentare della velocita' dei computer usai sempre di meno le routines in assembler

finche' finii per programmare solo in BASIC, sotto forma di Turbo-Basic, Quickbasic e

Visual Basic.

Assemblai tutti i programmi di chimica che andavo facendo insieme a diversi giochini

in un istituto virtuale di chimica dal titolo: "CHIMICA!" concepito per vari livelli

di apprendimento fino a quello universitario.

CHIMICA! e' stato usato con soddisfazione dai miei studenti per vari anni.

La sua prima versione fu anche commercializzata, ma non ci sono diventato ricco,

soprattutto per la resistenza (e in parte per l'impossibilita') degli insegnanti di chimica

di allora (e anche di adesso!) a  servirsi del computer.

Ora sono in pensione e ho smesso di sviluppare "CHIMICA!".

Inoltre ho scoperto che l'ultima versione di Windows, Windows xp,

non e' piu' completamente compatibile con CHIMICA! e con altri programmi

MS-DOS, a meno di non confomarla previamente allo scopo.

La Microsoft  scarica e uccide i suoi figli piu' vecchi!

Cosi' ho lasciato praticamente perdere la programmazione, tanto non ho piu'

bisogno di CHIMICA!.

 

Guardando indietro  a tutto questo lavoro, posso dire che e' stato creativo, ma

troppo dispendioso in termini di tempo, tempo che avrei potuto spendere meglio

a disegnare e scolpire, tanto per dirne una.

 

Il sito in cui siete ora l'ho fatto usando un normale web-editor, un programma di

trattamento di foto e un animatore di immagini GIF, ma naturalmente tutto questo

non ha nulla a che fare con la programmazione.

 

Ho pensato qualche volta di imparare il linguaggio di programmazione JAVA per

progettare siti WEB, ma siccome in realta' non ne ho bisogno ho lasciato perdere.

 

Sto invece sbirciando il linguaggio JAVASCRIPT che sta al JAVA un po' come il

vecchio Basic interpretato sta al Quickbasic compilato. Infatti il codice che si trova scritto

nella pagina web o in una di riferimento, viene letto e interpretato dal browser  che se trova

errori li segnala  ( di solito ).

E' una roba strana, pero' divertente ,  e' orientato un po' alle funzioni, un po' agli oggetti.

Come struttura tende ad assomigliare al C  ( piu' probabilmente al Visual C  che non conosco).

Non ho un manuale, ma ho scaricato qualche lezione degli infiniti corsi che si trovano, quasi tutti

gratis, sul web.

Un grosso problema e' la compatibilita' con i vari browsers. Il migliore sembra Explorer 5  o 6

della Microsoft. Le versioni precedenti non supportano molte cose.   Anche Netscape non e'

del tutto compatibile e possiede ulteriori funzioni diverse. Percio' il programmatore

professionista ha la vita complicata perche' deve tener conto di tutte le incompatibilita'

e quindi allungare di molto l'intestazione dei suoi codici.

Con il Javascript ho fatto qualche piccola animazione di questo sito   e apportato migliorie alla

visualizzazione delle immagini che non si potevano ottenere con il semplice HTML.

Sto facendo anche qualche giochino per passare il tempo. Vedi la pagina precedente.

I miei programmi sono compatibili con Explorer versione 5 e oltre   e basta. Se avete Netscape

con tutta probabilita' non funzioneranno.

 

Invece non ho mai voluto imparare l'HTML. Ne so qualcosa perche' basta sbirciare la sorgente delle

pagine web. Si tratta essenzialmente di una visualizzazione di oggetti, come immagini o scritte,

a cui  si possono collegare riferimenti ad altre pagine o altre immagini.  Sia Java che il Javascript

lavorano anch'essi sugli oggetti  della pagina ma in modo piu' interattivo.

 

NOTA.  CHIMICA! e' formato da files eseguibili .exe e pertanto non ho potuto

               inserirli in questo sito perche'  LIBERO non li  supporta per paura di

                infezioni virali. Chi fosse interessato puo' farne richiesta a  catalucci@libero.it .

              E' un software di dominio pubblico concepito per  studenti di lingua italiana

              Contiene comunque una versione in inglese della simulazione della centrale

              nucleare   ("Power Station  Crackital 1")  e del gioco del  poker ("Catpoker").

              Il pacchetto occupa circa 170 MB

 

 

 

 

Appendice:   COME FAR ESEGUIRE AL COMPUTER L'ADDIZIONE 2+3 ED OTTENERE IL RISULTATO                           SULLO SCHERMO:

         -    Assembler Z80:                   Assembler 8086/8088                                               C

                   go                                    stack       segment stack                                           main ()

                   org 50000                                      dw 128 dup(?)                                 {         

                   push af                            stack        ends                                                           int a, b, c;

                   ld a, 2                               code          segment                                                   a = 3;

                   add a, 3                             somma     proc  far                                                   b = 2;

                   add a, 48                          assume   cs: code,  ss: stack                                   c = a + b;

                   rst 16                               push ds                                                                      printf ("10%d", c);

                    pop af                              mov ax, 0                                                             }  

                    ret                                   push ax

                   finish                               mov al, 2

                                                            add al, 3

                                                            add al, 48

                                                            mov ah, 14

                                                            int 10h

                                                            ret

                                                            somma endp

                                                            code ends

                                                            end

 

                       FORTRAN                                                    PROLOG                                                    PASCAL

              PARAMETER   ( A = 2 ; b = 3)                        predicates                                            PROGRAM SOMMA

              C = A + B                                                            somma                                                   var

               PRINT * C                                                         goal                                                        a, b, c : integer;

               END                                                                     somma                                                   b := 2;

                                                                                          clauses                                                    a := 3;

                                                                                            somma if                                               c := a+b;

                                                                                      RISULTATO = 3 + 2                                 writeln (c);

                                                                                      write (RISULTATO)                                 end.

 

                      LOGO                                                          BASIC                                               VISUAL BASIC

                 TO SOMMA                                               PRINT 2 + 3                                              PRINT 2 + 3   (*)

                 PRINT 2 + 3

                 END

JAVASCRIPT                                              

<script>                                                     

var a=2;

var b=3;

var c=a+b;

document.write(c.toString());

</script>

____

 *  In Visual Basic il Form dove viene scritto il risultato deve avere la proprieta' Autoredraw impostata su: True altrimenti non visualizza.

back.gif (164 byte)