Scilab, le funzioni e tutte le altre meraviglie

In questo post, continuazione del precedente,si coninua l’esame del pdf progscilab per un illustrazione veloce delle notevoli capacità del package. È utile per arrivare a una mia conclusione, giù in fondo in “Conclusione” 😉

In Scilab le funzioni sono estremamente flessibili. Intanto si distinguono in macro, scritte nel linguaggio di Scilab e primitive, scritte in qualche altro linguaggio (per esempio C, C++, Fortran) e compilate.
Nella maggior parte dei casi non c’è differenza tra i due tipi e per questo si usa il termine generico function. Ovviamente la cosa cambia nel debug.
Le funzioni sono variabili: non male per un progetto partito avendo come riferimento il Fortran 😀
D’altronde oggi è una cosa abbastanza comune, a me capita di farla anche senza volerlo: in Python basta dimenticare le parentesi. Ma è di una comodità unica, conosciuta come callback.
A p.57 e ssg viene spiegato molto bene, con esempi, come creare funzioni con numero di argomenti variabili, sia in input che in output, cose tecniche: se servono leggetevele e sapetele 😉
A p.81 si parla dello scope delle variabili. Diversi casi sono possibili, attenzione! La soluzione più semplice (il livello dello stack) di p.82 può creare problemi, raccontati nelle pagine successive. A me casi del genere sono capitati più volte, provo una discreta Schadenfreude venire a conoscenza che succede anche a altri, tanto spesso che vale la pena di riportarli in un manuale 8)
A p.93 e ssg viene descritto come sia possibile generare dinamicamente le funzioni come stringhe cosa che conferisce a Scilab un livello di flessibilità altrimenti irraggiungibile (ma a me comincia a frullarmi in t’a capa il Lisp).
Le tecniche per rendere l’esecuzione veloce sono descritte a partire da p.99, Performances.
Da copiare l’idea della coppia di funzioni gemelle tic() e toc(): la prima fa partire il cronometro, la seconda lo blocca. In uno dei prossimi post le faccio in Python, newLISP e Fortran, forse, se nel frattempo non me ne sono dimenticato o sono stato attratto da qualcos’altro.
Bello l’esempio d’uso del profiling, da p.102 (profilaggio? la banda del nano usa “briffare” addirittura!).
A p.110 inizia la vettorizzazione, da leggere. Poi vengono i trucchi per ottimizzare il codice, p.115. Regola aurea: usare le funzioni di Scilab e evitare come la peste i cicli for.
Poi basta. Il discorso diventa troppo tecnico e mi sono addormentato 😦

Il pdf 419922 An Introduction to Scilab (un’altra) di Satish Annigeri
(prof. per ingegneri civili) è conciso (55 pagine) e pratico: a p.35 ci dice come gestire file su disco, nella pagina successiva già si occupa di plottaggio di curve polinomiali e poi passa a leggere file di Excel.
A p.47 passa a un caso pratico da ingegneri civili, calcolo di una struttura reticolare piana arrivando a determinare le sollecitazioni nelle aste. Notevole.

Il pdf intro dello Scilab group a p.87 e ssg ci illustra come gestire i grafici.
L’esempio di p.81 mi da errore e allora ho provato a dare le istruzioni direttamente dentro al Terminale si Scilab. Comodissimo il comando xset() che apre la finestra grafica e permette di modificare il grafico. Ecco il mio risultato:

Proseguendo con gli esempi non tutti vengono, ci sono errori nei comandi, alcuni di difficile individuazione, i font sono diversi da quelli del manuale (Windoze strike again!), …
Ci sono però numerosi file di esempi, richiamabili direttamente anche all’interno dell’editor (alle volte sono davvero gnugnu).

Il capitolo 6 a p.101 ci introduce a una delle caratteristiche più avanzate di Scilab: Interfacing C or Fortran programs with Scilab. Chiaramente questo sarà usato solo da utenti skillati per task non banali ma sembra fattibile, semplice e ci sono esempi. No non ci provo, sono troppo vecchio per quest cose. Però: avete nai provato a farlo con M$ DOS (sto parlando quando ancora non si usava Windoze): frustrante. Molto meglio la filosofia *NIX/Linux.

Per la parte matematica sono naturalmente previsti collegamenti con Matlab e Maple.

Conclusione

Il manuale Programming in Scilab di Michaël Baudin, contenuto nel file progscilab-so-v0.6.pdf è fondamentale.
Riassumerlo è impossibile 8)
Ciò porta a una conclusione: questi post su Scilab non possono sostituire il manuale. Per diversi motivi:

  • il manuale è ottimo;
  • Scilab è un tool molto grande e completo, il suo linguaggio di programmazione anche;
  • compito del blog non è fare un corso bensì segnalare le chicche che trovo, anzi che mi piacciono;
  • quando possibile adoro proporre script che per questioni oggettive debbono essere piccoli, se piacciono sarà il lettore a completarli.

Prossimamente

Il modulo Plot2d mi attira. Ma ci sono anche altre cose nel mondo della programmazione. È da parecchio che non nomino il newLISP, Pyhton idem. Poi ci sarebbero altri linguaggi, non quelli predominanti C++ e Java, su quelli c’è già troppa roba, altri meno noti e pubblicizati ma intriganti. E poi ci sarebbe da considerare anche gli utenti di Windows: alcune cosa che con Linux si danno per scontate lì mancano, o co$tano.
Prossimamente, se non mi sto beccando l’influenza, sempre su questo canale 😀

Posta un commento o usa questo indirizzo per il trackback.

Rispondi

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

Logo 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: