Regole per programmare in Occam

Tramite: O2O 23/09/2017
Difficoltà: media
18

Introduzione

Occam è un linguaggio di programmazione sviluppato dall'azienda INMOS per i suoi modelli di microprocessori con architetture parallele. Ideati negli anni Ottanta da una modesta azienda inglese, gli INMOS Transputer rappresentarono l'avanguardia della computazione parallela per circa un decennio, disponibili in modelli a 16-bit, 32-bit e con virgola mobile a 64-bit. Tuttavia, nonostante il costo relativamente basso, le elevate prestazioni e la facilità di programmazione, i Transputer non riuscirono mai a diventare uno standard universale fra le CPU o fra i microcontrollori. Attualmente, i derivati di tali microprocessori vengono comunemente impiegati nei televisori, nei navigatori satellitari e nelle macchine fotografiche digitali.

In questa guida vedremo le caratteristiche principali del linguaggio Occam, nonché le regole e la corretta sintassi per programmare in Occam.

28

Programmazione a basso livello

Il nome del linguaggio di programmazione deriva dal concetto filosofico del Rasoio di Occam, secondo il quale gli sviluppatori di Occam hanno eliminato ogni istruzione superflua, ottenendo così un linguaggio a basso livello similmente all'Assembly. L'Occam è basato sul modello CSP (Communicating Sequential Processes), ovvero sfrutta le meccaniche di scambio dei messaggi nei sistemi a concorrenza, dove un programma concorrente è rappresentato da una rete di processi, ognuno con le sue variabili cooperanti con lo scambio esplicito di messaggi.

38

La sintassi

La sintassi nel linguaggio di Occam è molto semplice, essendo composta da un numero esiguo di istruzioni, ma tuttavia è composta da regole rigorose: in particolare, a differenza di quanto accade comunemente nei linguaggi ad alto livello, in Occam gli spazi così come l'indentatura sono significativi. Altro fattore importante è l'operatore di assegnamento, rappresentato dai due punti seguiti dal simbolo uguale (:=), mentre per quanto riguarda somma e moltiplicazione si usano i normali più (+) e asterisco (*).

Continua la lettura
48

I canali

Nonostante il linguaggio di programmazione sia di per sé molto semplice, basandosi sul modello CSP, il programmatore ha il difficile compito di gestire la comunicazione fra i singoli processi e la loro decomposizione. Di conseguenza ciò avviene con l'invio di messaggi (P! X) e la ricezione di essi (P? Y) attraverso determinati canali. Nella fattispecie, nel linguaggio Occam la comunicazione avviene definendo il canale, seguito da uno spazio e dall'operatore punto esclamativo (!) per inviare un messaggio, o punto interrogativo (?) per riceverlo, seguito quindi da uno spazio e dalla variabile, in questo modo:
canale1! C
canale2? C

58

Struttura di controllo SEQ

Le strutture di controllo del linguaggio di programmazione Occam si basano su quelle della programmazione strutturata, nonostante esse siano state riadattate per la computazione parallela. La struttura di controllo SEQ elabora una serie di istruzioni eseguite in sequenza (modalità generalmente implicita, ma che in Occam deve essere specificata), in questo modo:
SEQ
x := x + 1
y := x * 2
Com'è stato specificato nel paragrafo dedicato alla sintassi generale, è importante inserire gli spazi quando sono necessari, e in questo caso anche le indentature alle stringhe delle operazioni per determinare che fanno parte della struttura SEQ.

68

Struttura di controllo PAR

La struttura di controllo PAR determina invece, com'è intuibile, l'esecuzione delle istruzioni in parallelo, cioè in contemporanea, attraverso una sintassi identica al SEQ. Tuttavia il PAR prevede anche l'uso di una forma complessa analoga al ciclo for, ovvero un ciclo con un contatore, le cui operazioni vengono svolte sempre in parallelo, secondo la seguente sintassi:
PAR i=0 FOR 5
INT n
c[i]? N[i]

78

Struttura di controllo ALT

La struttura di controllo ALT rappresenta infine il concetto di comando di guardia del CSP, secondo cui una guardia è la combinazione di un valore booleano con un'istruzione di input o output. A ciascuna guarda viene associata un'istruzione da eseguire se la guardia ha successo, come nel seguente esempio:
ALT
count1 SEQ
count1 := count1 + 1
merged! Data
count2 SEQ
count2 := count2 + 1
merged! Data
status? Request
SEQ
out! Count1
out! Count2
Ad ogni struttura di controllo, naturalmente, deve essere usata la corretta indentatura per favorire l'adeguato annidamento delle istruzioni.

88

Consigli

Alcuni link che potrebbero esserti utili:

Potrebbe interessarti anche

Segnala contenuti non appropriati

Tipo di contenuto
Devi scegliere almeno una delle opzioni
Descrivi il problema
Devi inserire una descrizione del problema
Si è verificato un errore nel sistema. Riprova più tardi.
Verifica la tua identità
Devi verificare la tua identità
chiudi
Grazie per averci aiutato a migliorare la qualità dei nostri contenuti

Guide simili

Programmazione

Regole per programmare in Ladder

In questo articolo imparerete le 5 regole per programmare in Ladder. Il circuito in Ladder è simile in struttura, elementi, simboli e funzioni di controllo logico. Ci sono anche altri aspetti della fase, ma hanno molte differenze. Quindi per programmare...
Programmazione

Regole per programmare in ActionScript

Action Script è un nome che suonerà familiare a tutti coloro che si intendono di programmazione. Si tratta, infatti, del linguaggio di programmazione di Flash utilizzato per la creazione di videogames basati su browser. Esistono ben tre versioni di...
Programmazione

Regole per programmare in Rust

I linguaggi di programmazione fanno parte dell'universo informatico sin dagli inizi. Tutti noi ricorderemo sicuramente il vecchio prompt dei comandi sul nostro primo PC. Si apriva una finestrella nera in cui dovevamo digitare specifiche espressioni, spesso...
Programmazione

Regole per programmare in Ruby

Il linguaggio di programmazione chiamato Ruby è basato su una piattaforma open source assolutamente dinamico, caratterizzato da una sintassi semplice e produttivo, naturalmente facile da leggere ed agevole da scrivere. Creato in Giappone, Ruby è caratterizzato...
Programmazione

Regole per programmare in Assembly

Prima di tutto, per chi non lo sapesse, una breve presentazione di questo linguaggio di programmazione. L'assembly è stato uno dei primi linguaggi mai sviluppati e viene detto di "basso" livello o meglio definito come linguaggio macchina. Questo perché...
Programmazione

Regole per programmare in Applescript

AppleScript, nato negli anni '90 come una sorta di estensione del MacOS che viene caricata al suo avvio, è un software di programmazione che permette agli utenti di sviluppare diverse tipologie di applicazioni, da quelle più complesse di stampo matematico,...
Programmazione

Regole per programmare in Linda

Linda è il nome di un linguaggio di programmazione non molto diffuso. È un linguaggio che estende quelli più conosciuti, come Java e C++, in modo tale da poter sviluppare applicazioni in ambiente distribuito. Appartiene alla famiglia di linguaggi a...
Programmazione

Come programmare in Axum

Con la realizzazione di Axum, è stato originato un linguaggio strutturato in maniera tale da rendere maggiormente semplice la programmazione simultanea e sicura. Ma di cosa si tratta? Innanzitutto occorre chiarire l'obiettivo di questo progetto: quello...