Introduzione a Scilab

Scilab è una meraviglia. Molto di più di quello che avevo immaginato, ma c’è sempre un punto di partenza e che io sono n00b (niubbo) di prima categoria non è una novità. Per cui questo post va preso come un primo assaggio, assolutamente parziale e non esaustivo, diciamo un assaggino.

L’installazione di Scilab è davvero all’antica: scompattate il file tar o zip o quello che è (naturalmente è multipiattaforma: Linux, Windows e MacOS) dove vi pare e piace e avrete la subdirectory bin con lo script scilab per aprire il terminale.

È luogo comune trito e ritrito che Ankh-Morpork non è stata costruita in un giorno, ogni cosa richiede tempo. E bisogna ambientarsi. E con calma, arrabbiarsi non serva anzi è controproducente.

Allora io ho scompattato il tar il ~/apps; ho creato nella directory ~/bin il symlink per scilab trovato in bin di Scilab  ed eccomi pronto.
A dire il vero un geek lo installerebbe in /usr ma Ubuntu ti obbliga ogni sei mesi a reinstallare tutto; in questo caso basta backuppare la directory ~/apps 8)

Da quando K&R hanno inondato il mondo (la parte di esso che ci interessa) con “The C Programming Language” si deve partire con “Hello World!“. Non sono solo: il pdf introscilab.pdf scaricato dalla pagina della documentazione mi guida passo-passo. Quindi apro il terminale nella dir dove provo i miei pasticci e lancio il comando

scilab

che apre il Teminale di Scilab nel quale posso sbizzarrirmi come da figura


Visto che tutto è OK posso scrivere quit per uscire. E per oggi basta. No! fermi lì! scherzavo.

Intanto per non bloccare il terminale conviene dare il comando scilab & cosa di cui mi ricordo sempre un secondo dopo aver premuto Invio.

Dal Terminale di Scilab lancio Applicazioni/SciNotes che mi apre l’editor dentro al quale posso scrivere il mio script hello.sce, come in figura


A questo punto posso, dopo aver salvato lo script posso trascinare (draggare) il file da Nautilus alla finestra del Terminale che lo esegue, fin troppo bene: l’istruzione finale quit chiude il terminale stesso! Allora i casi sono due: 1) commentare l’istruzione quit inserrendo // all’inizio della riga in modo che la sua esecuzione nel Teminale (di Scilab) non lo chiuda; oppure 2) lanciare da terminale (quello della shell) il comando scilab -nwni -nb -f hello.sce
Chiaramente preferisco la soluzione 2. Le opzioni sono elencate in fig. 11, p. 20 di introscilab.

il mio desktop è sempre molto affollato

OK, funziona. I file .sce si possono benissimo editare con gedit, vi, Emacs anche se l’editor di Scilab colora la sintassi, ha l’help, etc.

Una delle caratteristiche peculiari di Scilab è il tipo di dati che predilige. Qui le alternative operate dai vari linguaggi sono innumeri: il Forth ha solo gli interi, il Basic preferisce i reali, il Lisp parla di atomi e liste, nel C tutto quello che non è intero è un puntatore (sì, lo so semplifico, dai! non ho mai capito a fondo la cosa 😦 ma non mi cazziate che tanto cancellerò i commenti). Scilab usa le matrici, p.31. Inoltre, anche se non detto esplicitamente sono matrici bidimensionali.
Ah se l’avessi avuto 25 anni fa! Quanti cicli mi sarei risparmiato! Inoltre è veloce a trattarle:

a Scilab script which performs the same operations with loops is
typically from 10 to 100 times slower.

Una cosa divertente: la matrice Identità come la chiamiamo? I può generare confusione, sembra una variabile o, peggio ancora, un indice. Pas de panique: la chiamiamo eye, ingénieux! vraiment.

Una cosa che può creare confusione è l’interpretazione come interi di numeri float (p.45): l’interpretazione avviene sempre per troncamento e non per arrotondamento. Da ricordarsene.

L’istruzione for (p.52) usa una sintassi sua quando si precisa il passo; d’altronde capita la stessa cosa con le sequenze. E qui anche Python è particolare e a volte me ne dimentico. Ma il più balzano di tutti era il Fortran di una volta (prima del 1978) che pretendeva di fare comunque sempre un giro anche quando non doveva e si doveva mettere un if di guardia con relativo goto: be tempi, sigh!

Le funzioni (p.55 e ssg) hanno anche loro una sintassi particolare, ma va bene, basta saperlo. A p.59 racconta come creare le proprie librerie e ci dice che inoltre ci sono i moduli che qui non affronta.

A p.66 inizia il capitolo Plotting. La decisione di esaminare Scilab da parte mia è nata da un post di Gianluigi Filippelli, qui. . Poi ho scoperto che Scilab è ben altro. E dice il dr. prof

Scilab viene usato un bel po’ nel mio laboratorio […] anche come generatore di codice C per sistemini embedded. Ecco ad esempio un’applicazione:
http://www.evidence.eu.com/content/view/361/432/

Ma per fare grafici è ottimo, poi si possono esportare nel formato voluto (p.74).

Ho provato a giochicchiarci ottenendo questo. Ho dovuto usare il manuale per plot.

// esempio di grafico fatto quasi senza guardare il manuale

xt = linspace(0, 10, 11)
c1 = [0, 10, 8, 6, 4, 2, 4, 6, 8, 5, 8]
plot(xt, c1, "r-o")

xr = linspace(5, 10, 6)
c2 = [3, 2, 1, 5, 4, 6]
plot(xr, c2, "b-p")

m = [4, 3, 2, 4, 2, 2, 6, 8, 6, 5, 2]
plot(xt, m, "k:*")

ps = [4, 4, 3, 2, 5, 6, 4, 3, 5, 7, 5]
plot(xt, ps, "m--d")

xtitle("Ultimi indici rilevati", "tempo", "valore indice")
legend("c1", "c2", "m", "ps")
xs2png(0, "indici.png")

Quant’è grosso il manuale? 4001 pagine! Panico, paura, terrore 😦

Aussi en français

Ho provato a usare livret_lycees_2010.pdf

L’objectif de ce livret est de vous guider pas à pas dans la découverte des différentes fonctionnalités de base du logiciel Scilab dans le cadre d’une utilisation en classes de lycées. Cette présentation se limite volontairement à l’essentiel pour permettre une prise en main facilitée de Scilab.

ho (re)imparato diverse parole nuove (crochet, suite), altre le sapevo già (logiciel, taper) ma poi mi sono perso con afficher (== disp) e histogramme (== histogram). Questi francesi! hanno tradotto anche i comandi; cosa vecchia peraltro, è una loro fissa 😉

Conclusione

Scilab dell’INRIA è molto di più, ci sono anche altre cose, ad esempio Xcos. Il sito web è bello, chiaro e esaustivo: un modello. Credo che ne parlerò ancora in futuro.

Posta un commento o usa questo indirizzo per il trackback.

Trackback

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.

%d blogger hanno fatto clic su Mi Piace per questo: