Az OCCAM programozási nyelv

Bevezetés

Motiváció

A párhuzamos végrehajtás. A koncepció nem új, már Charles Babbage-nél megjelent:

"When a long series of identical computations is to be performed, such as those required for the formation of numerical tables, the machine can be brought in to play so as to give several results at the same time, which will greatly abridge the whole amount of the process".

Az OCCAM története

Az OCCAM nyelv megvalósítja a CSP (Communicating Sequential Processes, szekvenciális processzek kommunikációja) legtöbb irányelvét. A CSP eredeti verziója olyan párhuzamos számítási modellként jelent meg, ahol az elosztott arhitektúrát közvetlenül egy olyan modell reprezentál, ahol processzek halmaza egy kommunikációs hálózaton keresztül van összekapcsolva. A CSP modellek szintén közvetlenül biztosítják a programozó számára a processz, a kommunikáció és a szinkronizáció definíciójának lehetőségét. A CSP-t egyszerűsége és strukturáltsága teszi hatékony és sokoldalú modellé párhuzamos rendszerek leírására. Az egyszerűsége néhány egyszerű, de nagy kifejezőerejű nyelvi szerkezetből adódik, ezekből építhetjük fel a programunk struktúráját. Ez a szabály hasonló, mint amiket szekvenciális programok készítéséhez tanultunk, ciklusokkal, elágazásokkal és szekvenciával.

Az OCCAM nyelvet 1983-ban készítette Prof.Tony Hoare, 30 évnyi tapasztalata és munkássága alapján, valamint egy szoftveres-hardveres csapat az INMOS chipgyártó cégtől. Az OCCAM mint transputer-ek programozási modellje lett tervezve, biztosítva egy hatékony felületet az elosztott arhitektúrára és teljes kontrollt a programozónak a hardverre (processzorokra és a hálózatra). Ugyanakkor a modell függetlensége az elhelyezkedéstől lehetővé teszi olyan modellek készítését, melyek implementálhatóak processzorok osztott hálózatán, vagy akár egy processzoron is.

Az OCCAM strukturált szerkezetű programozási stílusa a processz-orientált strukturáltságából adódik, ami azt jelenti, hogy a program alapvető egységei a processzek. Az egyszerű processzekből kiindulva, mint a SKIP (null processz), STOP (megállított processz), input-output (kommunikációs processzek) és kifejezések, konstruálhatóak hiearhikusan felépített processzek az elágazások (IF), ciklusok (WHILE), szekvenciák (SEQ), nem determiniszikusság (ALT) és párhuzamosság (PAR) konstrukciók segítségével.

Az OCCAM érdemei egyszerűségén, strukturáltságán és hatékonyságán(minthogy a moddellje a transputerek által közvetlenül feldolgozhatóak) túlmutatnak. Az OCCAM erős elméleti alapokon nyugszik. Egyet kiragadva ezek közül az elméleti alapok közül, az OCCAM rendelkezik levezetési szábály szerű törvényekkel, melyek alapján a program működésére vonatkozó intuícióinkat tudjuk ellenőrizni. Minden egyes ilyen törvény egy struktúra vagy az egész program tulajdonságait, viselkedését leírja. Ezzel biztosít egy felületet tervező vagy programozó - aki használja, és a matematikus közt - aki fejlesztette és formalizálta a nyelvet. Ezért nem szükséges egy komplikált matematikai modell használata a program viselkedésének leírására.