BIOS  è l'acronimo di Basic Input Output System. Quattro parole molto banali che non rivelano affatto l'importanza del BIOS. Per capire di cosa si tratta, ancora una volta facciamo un piccolo passo indietro.

 

Nella 119 abbiamo spiegato che il programma Loader carica e fa partire un programma qualsiasi. In quella risposta si parlava di software sviluppato da un programmatore, la spiegazione rimane valida anche quando il software viene comperato al negozio. Esiste infatti una regola universale per tutti i computer che possiamo esprimere in questi termini:

Ogni programma software viene necessariamente attivato da un altro programma il quale girava in precedenza .

Dunque i programmi formano una catena nel senso che ognuno viene attivato da un'altro. Non è invece necessario che il programma attivato debba per forza generarne un'altro. Ma se parte vuol dire che un'altro programma l'ha fatto partire.

 

A questo punto è naturale domandarsi come tale catena possa cominciare. In particolare il primo programma che gira per primo quando il proprietario accende il suo computer come funziona? Chi lo fa partire?

Poiché il primo programma non viene attivato da nessun altro, si tratta di un programma assai speciale: è infatti il BIOS.

Quali sono le sue principali caratteristiche?

1) Si trova catalogato nella memoria ROM (o EPROM) e non nella RAM come tutti gli altri. In soldoni vuol dire che viene creato e posto nella ROM in fabbrica, seguendo una tecnica diversa da tutti gli altri programmi.

2) Il microprocessore, appena il computer viene acceso, in modo automatico esegue il BIOS.

3) Il BIOS verifica che le periferiche siano correttamente collegate e non ci siano problemi hardware nell'unità centrale.

4) Il BIOS carica il sistema operativo dal disco rigido (oppure da un altro tipo di disco) e quindi lo fa partire (possiamo dire che il BIOS fà il lavoro che normalmente compie il Loader). In questo esso dà il via a quella serie di attivazioni a catena di cui dicevamo sopra.

 

Se l'hardware della macchina viene modificato o se sopravvengono altri tipi di problemi tali per cui il BIOS deve essere modificato, questo lavoro assai delicato deve essere eseguito da specialisti e non rientra nelle normali competenze del programmatore.

 

 

anno 2006

125. Piu' volte ho incontrato la sigla BIOS, ma non so cosa stia a significare.

126. Javascript è una versione speciale del linguaggio Java?

La prima cosa da sfatare è che il linguaggio Javascript non ha niente a che vedere con il linguaggio Java. Il loro nome nasce soltanto per una intesa commerciale. Le cose andarono così.

Nei primi anni novanta Netscape, azienda allora leader nel settore dei browser, capì la necessità di evolvere il web dalle pagine statiche a quelle dinamiche, cioè percepì la crescente necessità di movimentare le pagine con animazioni, figure, elaborazioni. Per tale fine nel 1995 i tecnici di Netscape inventarono un linguaggio che chiamarono Livescript. Quando poco dopo la Sun mise in piedi Java, Netscape firmò un accordo di collaborazione e modificò il nome del suo prodotto in Javascript per sottolineare la sua compatibilità con Java.

Javascript è un linguaggio a marcatura (o tag) (vedi risposta 19) ed appare molto simile all'html. Anche la sua esecuzione è molto simile perché il browser legge una riga la esegue e poi passa alla successiva. Normalmente i comandi Javascript inseriti in mezzo a quelli html sono raccolti tra due tag così fatti:

<SCRIPT Language="Javascript">
...
...
...
</SCRIPT>

Questi tag si trovano in punti qualsiasi della pagina html a secondo delle necessità elaborative: calcoli, animazioni, verifiche input ecc.

Molto spesso una elaborazione viene eseguita da una applet. Tra i vari comandi Javascript ricordiamo quello che carica e lancia una applet Java.
Nell'esempio supponiamo che l'applet si chiami Pippo che la classe sia Pip e che per eseguire l'applet si voglia dare come parametro Pluto

<APPLET NAME="Pippo_applet" CODE="Pip.class" >
<PARAM NAME="jscript" VALUE="Pluto">
</PARAM>
</APPLET>
 

Questo esempio, oltre che chiarire un poco di più Javascript, fornisce un ulteriore dettaglio sulle applet trattate nella risposta 64.

 

 

anno 2006

Fattorizzazione vuol dire scomporre una entità matematica (es. un numero, un polinomio, una matrice, un grafo) in fattori tali che il loro prodotto riproduca l'entità originaria.

La fattorizzazione dei numeri primi è al centro dell'attenzione nel settore informatico perché l'algoritmo RSA, il più geniale algoritmo crittografico fin qui scoperto, utilizza una chiave composta da due numeri primi (vedi 98). Se qualcuno scoprisse una fattorizzazione veloce per tale chiave, farebbe saltare in aria o per lo meno metterebbe in grave crisi l'intero sistema mondiale delle trasmissioni protette per l'e-commerce, l'e-banking ed altro.

Il metodo più noto per trovare i fattori primi di un intero resta quello delle divisioni successive che abbiamo appreso sin dalle scuole medie. Il Teorema dei Numeri Primi asserisce che l'insieme dei numeri primi minori o uguali ad n è circa n/log n. Ciò implica che dovremmo eseguire circa 1058 divisioni per scomporre un numero di 200 cifre. Supponendo di avere un supercomputer in grado di eseguire un miliardo di divisioni al secondo impiegando numeri a 60 cifre impiegheremmo 1041 (miliardi di miliardi di miliardi di miliardi) anni. Tutto questo dà garanzie sull'affidabilità dell'algoritmo RSA, ma lo scenario potrebbe mutare se invece delle brutali divisioni, un metodo sofisticato sfruttasse una qualche proprietà dei numeri primi.

Il primo a stimare l'andamento asintotico dei numeri primi fu Gauss, che valutò la densità dei numeri primi intorno ad n è dell'ordine di:

1/ log n

Da cui deriva la stima dei numeri primi minori o uguali ad n sopra riportata. Oggi ne sappiamo di più.
Sappiamo ad esempio che i numeri primi generano delle progressioni aritmetiche di lunghezza crescente. La seguente tabella riporta le prime cinque serie. La prima riga si legge così: per n=0, n=1, n=2 si ottiene dal fattore di progressione la seguente serie di numeri primi: 3,5,7. La seconda riga produce 5,11,17,23,29 e così via.

Lo studio delle proprietà asintotiche dei numeri primi è oggi di grande attualità. Terence Tao, un giovane matematico che lavora presso la California University, è stato premiato al recente Congresso Mondiale di Matematica tenutosi a Madrid (ICM2006) proprio per un contributo dato in questa direzione.

 

 

anno 2006

127. Più volte ho sentito citare il problema della "fattorizzazione" in informatica, ed anche lei ne ha parlato. Può tornare sull'argomento? 

128. Insegno informatica da qualche anno in ITC ed apprezzo le sue spiegazioni per la grande concretezza. Ha una indicazione metodologica per la didattica della programmazione?

Il software nasce dal fatto che il computer Y assiste un sistema X (es. azienda, singolo professionista, macchina automatica, ufficio) nel portare avanti i suoi compiti nonostante le variazioni ambientali U che li ostacolano (vedi 95). Tali impredicibili eventi ed i correlati impredicibili compiti del computer consigliano il ricorso alla programmazione mentre la pura soluzione circuitale è rigida. Il chip infatti viene costruito in fabbrica e non è modificabile, invece un programma viene compilato agilmente mediante un video terminale e per tale mezzo viene anche rapidamente modificato. 

I compiti affidati al software sono tantissimi, e come diretta conseguenza viene che la tecnologia si suddivide in tanti filoni. Tanto per esemplificare, abbiamo la meccatronica che governa i macchinari di produzione, i sistemi esperti che consigliano l'investimento finanziario, il programma Prolog che dimostra un teorema, un calcolo Fortran di algebra computazionale, una statistica Snobol su testi di greco antico. L'algoritmo di meccatronica, quello in Fortran, quello in Snobol, non hanno niente a che fare l'un con l'altro e neppure con il sistema esperto e questo a sua volta non ha nulla in comune con il software che controlla la rete e con la robotica, tanto per citare altri due filoni del software. In questo settore ci sono tante metodiche, tanti linguaggi, tanti sistemi di implementazione e manutenzione i quali seguono strade diversissime.

La piccola carrellata, sopra riportata, è sufficiente per fa capire che introdurre la programmazione agli studenti è una bella "gatta da pelare". Non si sa bene da che parte cominciare, quale tecnica va preferita, quale può dirsi superiore all'altra. Da qui il problema didattico che è comune a tutti e non soltanto suo.

Un primo accorgimento, ormai seguito da molti insegnanti, consiste nel non chiudersi sulla computabilità matematica perché questo equivale a restringere l'attenzione su una tematica specifica.

Un secondo accorgimento didattico è quello di orientarsi verso un settore significativo quale è quello del software gestionale il quale emerge per la sua ampiezza e generalità. Questo indirizzo di programmazione segue due principali tecnologie e dimostra proprietà molto generali. Infatti si basa essenzialmente sulla:

programmazione strutturata,
programmazione ad oggetti.

Sviluppa una grande quantità di algoritmi che però si riducono a tre prototipi principali:

il programma batch,
il programma interattivo,
il programma ad oggetti.

Dunque abbiamo un settore molto ampio e professionalmente significativo, su cui una didattica della programmazione si può solidamente sviluppare.


Ulteriori dettagli didattici che qui non trovano spazio li trova nei libri citati nella testata della presente rubrica.

 

 

anno 2006