Occam (programovací jazyk) - Occam (programming language)
Paradigma | Rozkazovací způsob, procesní, souběžně |
---|---|
Navrhl | David May |
Vývojář | Inmos |
Poprvé se objevil | 1983 |
Stabilní uvolnění | 2,1 (oficiální), 2,5 (neoficiální), 3 (není plně implementováno) / 1994 |
Dialekty | |
occam-π (pi) | |
Ovlivněno | |
Komunikace postupných procesů | |
Ovlivněno | |
Ulehčit, Jít, Krajta |
occam je programovací jazyk který je souběžně a navazuje na komunikující sekvenční procesy (CSP) procesní algebra,[1] a sdílí mnoho z jeho funkcí. Je pojmenována po filozofovi Vilém z Ockhamu po kom Occamova břitva je pojmenován.
occam je rozkazovací způsob procesní jazyk (např Pascal ). Byl vyvinut společností David May a další na Inmos (ochranná známka INMOS), doporučeno Tony Hoare, jako nativní programovací jazyk pro jejich transportér mikroprocesory, ale jsou k dispozici implementace pro jiné platformy. Nejznámější verzí je occam 2; jeho programovací manuál napsal Steven Ericsson-Zenith a další na adrese Inmos.
Přehled
V následujících příkladech je pro analýzu kódu důležité odsazení a formátování: výrazy jsou ukončeny na konci řádku, seznamy výrazů musí být na stejné úrovni odsazení. Tato funkce, pojmenovaná pravidlo mimo stranu, se také nachází v jiných jazycích, například Haskell a Krajta.
Komunikace mezi procesy probíhá prostřednictvím pojmenovaných kanály. Jeden proces vydává data do kanálu prostřednictvím !
zatímco další zadává data pomocí ?
. Vstup a výstup nemohou pokračovat, dokud druhý konec není připraven přijmout nebo nabídnout data. (V nepostupuje případě se často říká, že proces bloky na kanálu. Program se však nebude točit ani dotazovat; tedy výrazy jako Počkejte, pověsit nebo výtěžek může také sdělit chování; také v kontextu, že nebude blok další nezávislé procesy od spuštění.) Příklady (c je proměnná):
klávesnice? C
obrazovka! C
SEKV
zavádí seznam výrazů, které se vyhodnocují postupně. To není implicitní, jako je tomu ve většině ostatních programovacích jazyků. Příklad:
SEQ x: = x + 1 y: = x * x
PAR
začíná seznam výrazů, které lze současně vyhodnotit. Příklad:
PAR p () q ()
ALT
specifikuje seznam hlídané příkazy. The stráže jsou kombinací logické podmínky a vstupního výrazu (oba volitelné). Každá ochrana, pro kterou je podmínka pravdivá a vstupní kanál je připraven, je úspěšná. K provedení je vybrána jedna z úspěšných alternativ. Příklad:
Počet ALT1 <100 & c1? data SEQ count1: = count1 + 1 sloučeno! počet dat2 <100 & c2? data SEQ count2: = count2 + 1 sloučeno! stav dat? Vyžádejte si SEQ! počítat 1 ven! count2
Tím se načtou data z kanálů c1 nebo c2 (podle toho, co je připraveno) a předají se do sloučeného kanálu. Pokud countN dosáhne 100, budou čtení z příslušného kanálu deaktivována. Na požadavek na stavovém kanálu se odpoví výstupem počtu ven
.
Jazykové revize
occam 1
occam 1[2] (vydáno 1983) byla předběžná verze jazyka, který si vypůjčil David May Práce na EPL a CSP Tonyho Hoare. To podporovalo pouze datový typ VAR, což byl integrální typ odpovídající délce nativního slova cílové architektury, a pole pouze jedné dimenze.
occam 2
occam 2[3] je rozšíření vyrobené společností Inmos Ltd v roce 1987, které dodává plovoucí bod podpora, funkce, vícerozměrná pole a další datové typy, jako jsou různé velikosti celých čísel (INT16, INT32) a bajtů.
S touto revizí se occam stal jazykem schopným vyjadřovat užitečné programy, zatímco occam 1 byl vhodnější pro zkoumání algoritmů a zkoumání nového jazyka (kompilátor occam 1 byl však napsán v occam 1,[4] takže existuje důkaz o existenci, že v Occam 1 lze i přes jeho limity psát užitečné programy s přiměřenou velikostí).
occam 2.1
occam 2.1[1] byl posledním z řady jazykových vývojů occam, které přispěl Inmos. Definováno v roce 1994, bylo ovlivněno dřívějším návrhem na occam 3 jazyk (během svého raného vývoje označovaný také jako „occam91“) vytvořený Geoffem Barrettem ve společnosti Inmos na počátku 90. let. Revidovaná referenční příručka popisující occam 3 byla distribuována pro komentář komunity,[5] ale jazyk nebyl nikdy plně implementován v kompilátoru.
Occam 2.1 představil několik nových funkcí Occam 2, včetně:
- Pojmenované datové typy (DATA TYPE x IS y)
- Pojmenované záznamy
- Sbalené záznamy
- Uvolnění některých pravidel převodu typu
- Noví operátoři (např. BYTESIN)
- Přepisování kanálů a pole kanálů
- Schopnost vrátit pole s pevnou délkou z funkce.
Úplný seznam změn je uveden v příloze P dokumentu Referenční příručka Inmos occam 2.1.
occam-π
occam-π[6] je obecný název pro variantu occam implementovanou novějšími verzemi kompilátoru Kent Retargetable occam (KRoC ). Přidání symbolu π (pi) na název occam je narážka na KRoC occam včetně několika nápadů inspirovaných π-počet. Obsahuje několik významných rozšíření kompilátoru occam 2.1, například:
- Vnořené protokoly
- Vytvoření procesu za běhu
- Mobilní kanály, data a procesy
- Rekurze
- Protokol dědictví
- Pole konstruktéři
- Rozšířené setkání
Viz také
- The Programovací jazyk XC, který je založen na occam, ale se syntaxí ve stylu C.
- Souběžné programovací jazyky
- Seznam souběžných a paralelních programovacích jazyků
Reference
- ^ A b occam 2.1 Referenční příručka (PDF). SGS-Thomson Microelectronics Ltd. 1995-05-12. Dokument Inmos 72 occ 45 03
- ^ Příručka k programování occam. Prentice-Hall. 1984. ISBN 0-13-629296-8.
- ^ Ericsson-Zenith, Steven (1988). occam 2 Referenční příručka. Prentice-Hall. ISBN 0-13-629312-3.
- ^ Cook, Barry M; Peel, RMA (11.04.1999). „Occam na poli programovatelných hradlových polí“. V Cook, Barry M. (ed.). Architektury, jazyky a techniky pro souběžné systémy. Technické setkání 22. skupiny uživatelů Occam a Transputer Group. Keele, Velká Británie: IOS Press. p. 219. ISBN 90-5199-480-X. Citováno 2016-11-28.
- ^ Barrett, Geoff; Ericsson-Zenith, Steven (31.03.1992). „Referenční příručka occam 3“ (PDF). Inmos. Citováno 2008-03-24. Citovat deník vyžaduje
| deník =
(Pomoc) - ^ Barnes, Fred; Welch, Peter (2006-01-14). „occam-pi: Míchání toho nejlepšího z CSP a pi-kalkulu“. Citováno 2006-11-24.
- Tento článek je založen na materiálu převzatém z Zdarma on-line slovník výpočetní techniky před 1. listopadem 2008 a začleněno pod "licencování" podmínek GFDL, verze 1.3 nebo novější.
Další čtení
- Komunikace procesních architektur 2007 - WoTUG-30. IOS Press. 2007. str. 513 stran. ISBN 978-1-58603-767-3. [1]
- Communicating Process Architectures 2006 - WoTUG-29. IOS Press. 2006. s. 391 stran. ISBN 978-1-58603-671-3. [2]
- Communicating Process Architectures 2005 - WoTUG-28. IOS Press. 2005. s. 405 stran. ISBN 978-1-58603-561-7. [3]
- Kerridge, Jon, ed. (1993). Transputer a Occam Research: Nové směry. IOS Press. str.253 stránek. ISBN 0-8247-0711-7.
- Roscoe, Andrew William; Hoare, Charles Antony Richard (1986). Zákony programování Occam. Programming Research Group, Oxford University.
- Egorov, A., Technická univerzita - Sofie, (1983-2011) Записки по Компютърни архитектури
externí odkazy
- Informace, překladače, editory a nástroje na stránkách occam WoTUG
- Překladače, dokumentace, příklady, projekty a nástroje v archivu paralelního výpočtu na internetu (již není udržováno)
- Knihy Occam na Transputer.net
- Jazyk occam-pi.
- Tock occam kompilátor - (překladatel z occam do C z Kentu) překladač Haskell pro occam a související jazyky.