calcolo scientifico
JOSS è stato uno dei primi sistemi interattivi per il calcolo scientifico. Ebbe origine alla RAND Corporation nel 1964 per il calcolatore JOHNNIAC, e fu successivamente realizzato in varie versioni e con nomi diversi (CAL, CITRAN, ISIS, PIL/I, TELCOMP) su altri calcolatori, fra cui PDP6; la versione su PDP è indicata come JOSS II e contiene alcune significative estensioni al linguaggio.
I tipi di dato di JOSS sono i numeri scalari o matrici di una o due dimensioni con indice da 0 a 99; i nomi delle variabili sono una lettera maiuscola o minuscola. I comandi iniziano con la lettera maiuscola e terminano con il punto, il loro tracciato è libero. JOSS accetta istruzioni dirette o indirette, queste sono individuate da un numero frazionario, e sono successivamente eseguibili singolarmente tramite il comando Do step ii.dd. L’insieme delle istruzioni che hanno la parte intera uguale, è eseguibile come un sottoprogramma con il comando: Do part ii.. Do corrisponde ad un richiamo con ritorno, il trasferimento del controllo avviene con il comando To step ... o To part ....
Le istruzioni Demande e Type forniscono semplici operazioni di input output, Type ha diverse opzioni fra cui quella di stampare i dati numerici formattati. Il comando per assegnare ad una variabile un valore è Set v=espressione., il comando analogo Let, introdotto in JOSS II, è, di fatto, la dichiarazione di una funzione:
: Let S=sin(a)
: Set a=355/226
: 355/226 è un'approssimazione di pigreco/2 *
: Type S
S = 1
I commenti sono individuati da * in prima colonna, lo stesso carattere, in fine riga, informa l’interprete di non considerare la riga stessa.
Nelle espressioni possono comparire gli operatori aritmetici usuali, e alcune funzioni fra cui seno, coseno e tangente, logaritmo esponente e radice quadrata. Il valore assoluto ricalca la notazione manuale: |a|.
Le istruzioni possono essere eseguite in modo condizionato: Istruzione if condizione.:
: Set q=cos(2)
: Type q,"negativo" if q <0
q = -0.416147
negativo
Esiste la possibilità di iterare un’istruzione o un blocco di istruzioni: Do step ii.dd for x = a(b)c. e Do part ii. for x = a(b)c. dove a è il valore di inizio ciclo, b l’incremento e c il valore di fine ciclo. To step ii.dd e To part ii. trasferiscono il controllo alle istruzioni all’indirizzo indicato. Infine Delete e alcune subcomandi di Type permettono di editare il programma.
JOSS II, oltre la già citata possibilità di dichiarare formule, prevede la gestione di file, di un timer (Reset timer, Type timer), alcune funzioni su liste numeriche (sum, prod), funzioni su liste di predicati (conj, disj, first), la funzione tv(predicato) per trasformare Vero e Falso in 1 e 0 e ampliamento di alcuni comandi. Inoltre venne introdotta l’iterazione nella forma Do step_or_part for v s(i)e dove in cui la variabile v assume valore iniziale s, è incrementata del valore i ed il ciclo termina quando raggiunge il valore e. Gli iteratori possono essere inseriti anche nelle funzioni a lista.
|
|
L’esempio che segue è una semplice simulazione.
|
|