Breve corso di Javascript

Gli attuali sistemi operativi (windows ecc..) rendono inutilizzabili tutti i programmi precedentemente progettati in DOS, che utilizzano la grafica a bassa risoluzione.

Gli attuali pc, dotati di CPU potentissime multi-core e di altrettanto potenti memorie ram  del resto consentono di utilizzare la grafica ad alta risoluzione, con una programmazione a basso costo.

In pratica: nella maggior parte dei casi correnti, ove la mole di calcolo non sia particolarmente onerosa, nè sia richiesta una particolare precisione numerica, non occorre più l’impiego di programmi compilatori (del tipo Fortran, Pascal, Algol ecc), perchè i browsers attuali ( ovvero i programmi tramite i quali è possibile accedere ad internet, come IEsplorer11, Firefox Mozilla, Chrome, ecc..) ospitano un motore apposito, che consente di interpretare programmi scritti in linguaggio java, javascript, PHP, o C.

Questi programmi, a parte C e javascript, girano solo lato-server, o in una virtual-machine.

Diversamente, solo javascript può girare solo lato-client, ovvero sul pc off-line.

La stragrande maggioranza delle pagine web è progettata in javascript, ospitando pagine notoriamente dedite alla realizzazione di blog, filmati, foto ecc..

Potrebbe per chi non lo sa, risultare sorprendente spingere il browser a comportarsi come un vero e proprio compilatore ed assemblatore di programmi matematici e in generale applicativi.

In questo spazio verranno indicate particolari tecniche di programmazione, certamente utili per chi è avvezzo a sviluppare applicazioni scientifiche, ritenendo più utile indirizzarsi in specifici siti in circolazione sul web, che ospitano corsi di apprendimento gratuiti., per l’utente che, partendo da zero, volesse iniziare ad imparare a programmare.

In quest’intesa, segnalerò genericamente alcune possibilità consentite dal linguaggio javascript, con la riserva mentale di realizzare esempi applicativi, che andranno rilegati in un apposito spazio di questo sito, sotto la voce “Studi Teorici ed Applicativi”, di prossima realizzazione.

Inizio col segnalarvi la novità di un nuovo oggetto programmabile, l’oggetto SET, utilizzabile a partire da IEsplorer11 e Firefox 36.

Esso consente di definire gruppi di dati con estrema facilità, paragonabile in un certo qual modo agli oggetti multi-array, ma soprattutto a JSON.

Oggi mi preme di illustrarvi una tecnica molto interessante, che consente di caricare dinamicamente librerie javascript, in base ad una ben determinata scelta dell’utente.

Notoriamente l’utente, quando programma, progetta il suo programma sorgente riducendolo per lo scopo specifico prefissato, che non contempla quindi la possibilità di sviluppare altri problemi.

In pratica: ad ogni problema si progetta un particolare programma.

Diversmente può risultare interessante progettare un unico programma principale che contenga solo un menù di chiamate a programmi differenti.

Questa tecnica in pratica consiste nel progettare una pagina-indice, atta a richiamare altri programmi di fatto autonomi.

La tecnica che qui intendo illustrare, permette invece di definire un piccolo programma generale, che si automodifichi in base alle richieste dell’utente.

Per fare questo, l’utente, dopo aver realizzato una libreria di funzioni in javascript, residenti su molteplici files, e non in un unico grande file troppo oneroso da trasportare, può richiamare dinamicamente solo quel file esterno che contenga le funzioni javascript atte a risolvere un determinato problema specifico.

Quindi il programma chiamante, di fatto, si automodifica in base alla scelta dell’utente.

Ciò risulta di notevole interesse, perchè la gestione del programma risulta molto leggera e d’altro verso, l’utente deve solo concentrarsi allo sviluppo di una singola funzione applicativa.

Pertanto l’utente potrà riferirsi sempre ad un unico programma in grado di ospitare a comando il file dei dati, scritti in javascript, atti a realizzare l’applicazione desiderata.

Tutto è generato da una funzione “miracolosa” che è capace di sfruttare una particolare peculiarità di javascript, consistente in questo:

Come per tutti i programmi che operino su oggetti (vale per tutti autocad che crea e manipola oggetti grafici in linguaggio auto-lisp), la pagina HTML è costituita da un foglio contenente un data-base di oggetti, ognuno dei quali è identificato da particolari attributi ed è manipolabile attraverso funzioni native del linguaggio.

Ogni istruzione pertanto crea o modifica un insieme di oggetti.

Nel caso in esame, l’utilizzo dell’istruzione “src=libreria.js” serve a caricare sul foglio il file libreria.js residente su disco, contenente funzioni e istruzioni in linguaggio javascript che devono essere utilizzate.

Tale istruzione va inserita in testa al sorgente, nella sezione <HEAD> e resta lì immodificata ed è disponibile attraverso la semplice chiamata delle funzioni contenute in detta libreria; in altri termini: il caricamento è statico, nel senso che esso deve essere previsto e inserito nel sorgente e l’utente può prevederne l’utilizzo.

Esse vengono di fatto caricate in una porzione di memoria per esse concepita..

Per caricamento dinamico di librerie si intende manipolare questa zona di memoria, contemplando la possibilità che l’utente possa inserire un evento, tramite il quale stabilire il nome della libreria esterna e quindi caricarla in memoria per essere poi sfruttata.

Appare quindi evidente il vantaggio di questa possibilità.

Nel sito è stata sistemata una piattaforma grafica universale, tramite la quale l’utente può caricare dinamicamente la propria libreria, assegnando al file che la contiene l’estensione “.lib”.

La libreria può contenere tutte le function progettate dall’utente in javascript e alla fine il programma principale deve essere eseguito con un’unica chiamata di una function che deve avere il nome:   function disegno() {……}

Il programma allora ne effettua l’updown ed esegue la funzione disegno()

L’utente potrà costruirsi in javascript tutte le funzioni che vuole, comprese quelle in SVG.

Per praticità la piattaforma interpreta già alcune funzioni SVG native, sufficienti a generare

qualsiasi disegno in SVG.