Share to: share facebook share twitter share wa share telegram print page

Occam (programming language)

occam
ParadigmImperative, procedural, concurrent
Designed byDavid May
DeveloperInmos
First appeared1983; 41 years ago (1983)
Stable release
2.1 (official), 2.5 (unofficial), 3 (not fully implemented) / 1994; 30 years ago (1994)
Dialects
occam-π (pi)
Influenced by
Communicating sequential processes
Influenced
Ease, Go, Python

occam is a programming language which is concurrent and builds on the communicating sequential processes (CSP) process algebra,[1] and shares many of its features. It is named after philosopher William of Ockham after whom Occam's razor is named.

occam is an imperative procedural language (such as Pascal). It was developed by David May and others at Inmos (trademark INMOS), advised by Tony Hoare, as the native programming language for their transputer microprocessors, but implementations for other platforms are available. The most widely known version is occam 2; its programming manual was written by Steven Ericsson-Zenith and others at Inmos.

Overview

In the following examples indentation and formatting are critical for parsing the code: expressions are terminated by the end of the line, lists of expressions need to be on the same level of indentation. This feature, named the off-side rule, is also found in other languages such as Haskell and Python.

Communication between processes work through named channels. One process outputs data to a channel via ! while another one inputs data with ?. Input and output cannot proceed until the other end is ready to accept or offer data. (In the not proceeding case it is often said that the process blocks on the channel. However, the program will neither spin nor poll; thus terms like wait, hang or yield may also convey the behaviour; also in the context that it will not block other independent processes from running.) Examples (c is a variable):

 keyboard ? c
 screen ! c

SEQ introduces a list of expressions that are evaluated sequentially. This is not implicit as it is in most other programming languages. Example:

 SEQ
   x := x + 1
   y := x * x

PAR begins a list of expressions that may be evaluated concurrently. Example:

 PAR
   p()
   q()

ALT specifies a list of guarded commands. The guards are a combination of a boolean condition and an input expression, both optional. Each guard for which the condition is true and the input channel is ready is successful. One of the successful alternatives is selected for execution. Example:

 ALT
   count1 < 100 & c1 ? data
     SEQ
       count1 := count1 + 1
       merged ! data
   count2 < 100 & c2 ? data
     SEQ
       count2 := count2 + 1
       merged ! data
   status ? request
     SEQ
       out ! count1
       out ! count2

This will read data from channels c1 or c2 (whichever is ready) and pass it into a merged channel. If countN reaches 100, reads from the corresponding channel will be disabled. A request on the status channel is answered by outputting the counts to out.

Language revisions

1983 "occam" by INMOS Limited

occam 1

occam 1[2] (released 1983) was a preliminary version of the language which borrowed from David May's work on EPL and Tony Hoare's CSP. This supported only the VAR data type, which was an integral type corresponding to the native word length of the target architecture, and arrays of only one dimension.

occam 2

occam 2[3] is an extension produced by Inmos Ltd in 1987 that adds floating-point support, functions, multi-dimensional arrays and more data types such as varying sizes of integers (INT16, INT32) and bytes.

With this revision, occam became a language able to express useful programs, whereas occam 1 was more suited to examining algorithms and exploring the new language (however, the occam 1 compiler was written in occam 1,[4] so there is an existence proof that reasonably sized, useful programs could be written in occam 1, despite its limits).

occam 2.1

occam 2.1[1] was the last of the series of occam language developments contributed by Inmos. Defined in 1994, it was influenced by an earlier proposal for an occam 3 language (also referred to as "occam91" during its early development) created by Geoff Barrett at Inmos in the early 1990s. A revised Reference Manual describing occam 3 was distributed for community comment,[5] but the language was never fully implemented in a compiler.

occam 2.1 introduced several new features to occam 2, including:

  • Named data types (DATA TYPE x IS y)
  • Named records
  • Packed records
  • Relaxation of some of the type conversion rules
  • New operators (e.g. BYTESIN)
  • Channel retyping and channel arrays
  • Ability to return fixed-length array from function.

For a full list of the changes see Appendix P of the Inmos occam 2.1 Reference Manual.

occam-π

occam-π[6] is the common name for the occam variant implemented by later versions of the Kent Retargetable occam Compiler (KRoC). The addition of the symbol π (pi) to the occam name is an allusion to KRoC occam including several ideas inspired by the π-calculus. It contains several significant extensions to the occam 2.1 compiler, for example:

See also

References

  1. ^ a b occam 2.1 Reference Manual (PDF). SGS-Thomson Microelectronics Ltd. 1995-05-12. Inmos document 72 occ 45 03
  2. ^ occam Programming Manual. Prentice-Hall. 1984. ISBN 0-13-629296-8.
  3. ^ Ericsson-Zenith, Steven (1988). occam 2 Reference Manual. Prentice-Hall. ISBN 0-13-629312-3.
  4. ^ Cook, Barry M; Peel, RMA (1999-04-11). "Occam on Field-Programmable Gate Arrays". In Cook, Barry M. (ed.). Architectures, Languages and Techniques for Concurrent Systems. 22nd World Occam and Transputer User Group Technical Meeting. Keele, United Kingdom: IOS Press. p. 219. ISBN 90-5199-480-X. Retrieved 2016-11-28.
  5. ^ Barrett, Geoff; Ericsson-Zenith, Steven (1992-03-31). "occam 3 Reference Manual" (PDF). Inmos. Retrieved 2008-03-24. {{cite journal}}: Cite journal requires |journal= (help)
  6. ^ Barnes, Fred; Welch, Peter (2006-01-14). "occam-pi: Blending the best of CSP and the pi-calculus". Retrieved 2006-11-24.

Further reading

Read other articles:

Uss north carolina pada 3 juni 1946 USS North Carolina (BB-55) adalah kapal pemimpin dari kelas North Carolina dan kapal perang keempat di Angkatan Laut Amerika Serikat yang akan dinamai dari negara bagian North Carolina. Ia merupakan kapal perang Amerika termuda yang baru saja dibangun dan langsung memasuki layanan selama Perang Dunia II. Ia ikut mengambil bagian dalam setiap serangan angkatan laut terutama di Palagan Pasifik (15 pertempuran), membuatnya kapal perang Amerika yang paling sangat …

Cet article est une ébauche concernant un acteur turc. Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les conventions filmographiques. Haluk Bilginer Haluk Bilginer en 2022 Données clés Nom de naissance Nihat Haluk Bilginer Naissance 5 juin 1954 (69 ans)Izmir Nationalité Turque Profession Acteur Films notables Winter Sleep 2013Innocence 1997Şahsiyet (Confession) (Web-série, 2018) modifier Haluk Bilginer, né le 5 juin 1954 à Izmir en Turquie est un a…

بئر الجير مقر البلدية خريطة البلدية الإحداثيات 35°44′12″N 0°33′15″W / 35.736666666667°N 0.55416666666667°W / 35.736666666667; -0.55416666666667  تقسيم إداري  البلد  الجزائر  ولاية ولاية وهران  دائرة دائرة بئر الجير عاصمة لـ دائرة بئر الجير  خصائص جغرافية  المساحة 32٫46 كم2 (12٫53 …

Buddhist temple in Ayutthaya province, Thailand This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Wat Na Phra Men – news · newspapers · books · scholar · JSTOR (August 2022) (Learn how and when to remove this template message) Wat Na Phra Menวัดหน้าพระเมรุThe ubosot and the striking ga…

Korean television program The name of this television reality uses a disambiguation style that does not follow WP:NCTV or WP:NCBC and needs attention. If you are removing this template without fixing the naming style to one supported by WP:NCTV, please add the article to Category:Television articles with disputed naming style. Great EscapePromotional poster of the fourth seasonAlso known asBig EscapeHangul대탈출 GenreReality television, Room EscapeCreated byJung Jong-yeonWritten byKim Jung-su…

Joe Manchin Joseph Manchin III[1] (lahir 24 Agustus 1947) adalah seorang politikus Amerika Serikat yang menjabat sebagai Senator Amerika Serikat senior dari Virginia Barat sejak 2010. Berasal dari Partai Demokrat, ia menjadi gubernur Virginia Barat ke-34 dari 2005 sampai 2010 dan sekretaris negara bagian Virginia Barat ke-27 dari 2001 sampai 2005. Referensi ^ Senator Joseph Manchin (Joe) (D-West Virginia) - Biography from LegiStorm. legistorm.com. Diakses tanggal 2019-09-30.  Bacaan…

لوحة جداريةمعلومات عامةصنف فرعي من فنون جميلةواجهة المبنىwall art (en) الاسم الأصل peinture murale (بالfr-ca) [1] وسم murals[2] لديه جزء أو أجزاء mural painting (en) ceramic mural (en) تعديل - تعديل مصدري - تعديل ويكي بيانات لوحة جدارية بريشة الفنان جان أندريه ريكسنز. قاعة المصورين، لو كابيتول، تولوز، فرن…

Men's 100 metre freestyleat the Games of the I OlympiadSwimming at the 1896 Summer OlympicsVenueBay of ZeaDateApril 11Competitors10 from 4 nationsWinning time1:22.2 ORMedalists Alfréd Hajós Hungary Otto Herschmann Austria1904 (100 yd) → Swimming at the1896 Summer OlympicsFreestyle100 mmen500 mmen1200 mmen100 m sailorsmenvte The men's 100 metre freestyle was one of the four swimming events on the Swimming at the 1896 Summer Olympics programme. The 100 metre freest…

Upcoming 2023 video game 2023 video gameThe Day BeforeSteam headerDeveloper(s)FntasticPublisher(s)MytonaEngineUnreal Engine 5Platform(s)WindowsRelease7 December 2023 (Early Access)Genre(s)Survival horror, open worldMode(s)Multiplayer The Day Before is an upcoming multiplayer open world survival horror video game developed by Fntastic and published by Mytona. Plot Set in a post-apocalyptic version of the United States, the world has been overrun by zombies after a pandemic.[1] Development…

This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Johnny Frank Garrett's Last Word – news · newspapers · books · scholar · JSTOR (October 2016) (Learn how and when to remove this template message) 2016 American filmJohnny Frank Garrett's Last WordTheatrical release posterDirected bySimon RumleyWritten byBen Ketai…

Star Micronics Co., Ltd. スター精密株式会社TypePublicTraded asTYO 7718.TIndustryElectronics and printersFoundedTegoshi, Shizuoka, Japan1947; 76 years ago (1947)HeadquartersShizuoka, JapanKey peopleHajime Sato (President and CEO)Productsprinters, electronic components, precision partsRevenue ¥35,717 million (£267 million) (Year ended 28 February 2011)[1]Number of employeesApprox 2,500WebsiteStar Micronics Co., Ltd. Star Micronics Co., Ltd. (スター精密株…

В Википедии есть статьи о других людях с такой фамилией, см. Шкорич. Миле Шкорич Общая информация Родился 19 июня 1991(1991-06-19)[1][2] (32 года)Винковцы, Вуковарско-Сремская жупания, Хорватия Гражданство  Хорватия Рост 187 см Позиция защитник Информация о клубе Клуб свободн…

For the 2010 film, see Flipped (2010 film). 2015 American filmFlippedDirected byHarris DemelWritten byHarris DemelRob GreenbergProduced byRob GreenbergJason MandlChris ShengStarringMichael MadsenStella MaeveEvan TaubenfeldCinematographyJosh SilfenEdited byCharles T. JonesMark ScovilMusic byHayden ClementRelease date December 15, 2015 (2015-12-15) CountryUnited StatesLanguageEnglish Flipped (also known as Blood Rush) is a 2015 psychological/survival thriller film starring Michael M…

Netherlands' ministry responsible for foreign relations Ministry of Foreign AffairsMinistry overviewFormed12 March 1798; 225 years ago (1798-03-12)JurisdictionKingdom of the NetherlandsHeadquartersRijnstraat 8, The HagueEmployees3,000Annual budget€13 billion (2023)[1]Minister responsibleHanke Bruins Slot, Minister of Foreign AffairsDeputy Minister responsibleLiesje Schreinemacher, Minister for Foreign Trade and Development CooperationMinistry executivePaul Huijts, Sec…

Songhay language of southwestern Niger ZarmaDjerma, ZabarmaZarma ciineNative toNiger, Mali, Burkina Faso, NigeriaRegionWest AfricaEthnicityZarma peopleNative speakers(6.0 million cited 1987–2021)[1]Language familyNilo-Saharan? SonghaySouthernZarmaDialects Songhoyboro Ciine Writing systemArabic (Ajami) Braille LatinLanguage codesISO 639-3djeGlottologzarm1239  ZarmaLocation of Songhay languages[2] Northwest Songhay:   Korandje   Koyra Chiini  &#…

遠東航空104號班機空難客機失事現場概要日期1969年2月24日摘要機械故障地點 中華民國(臺灣)台南縣歸仁鄉(今台南市歸仁區)飞机概要机型亨德里·佩奇信使者(英语:Handley Page Dart Herald)營運者遠東航空註冊編號B-2009起飛地 中華民國(臺灣)高雄國際機場目的地 中華民國(臺灣)台北松山機場乘客32機組人員4死亡36受傷0生還者0 遠東航空104號班機是由高雄國際…

For the river in Chile, see Negro River (Chile). For the town in Palena Province, see Hornopirén. City and Commune in Los Lagos, ChileRío NegroCity and CommuneTop: Volcán Osorno, Middle left: Plaza de Armas, Middle right: Negro River seen from Chapaco Bridge, Bottom left: Locality of La Toma Bottom right: Remains of the Río Negro-Osorno railroad Location of Río Negro commune in Los Lagos Region Río NegroLocation in ChileCoordinates (city): 40°47′S 73°12′W / 40.783…

此條目需要擴充。 (2015年3月14日)请協助改善这篇條目,更進一步的信息可能會在討論頁或扩充请求中找到。请在擴充條目後將此模板移除。 此條目没有列出任何参考或来源。 (2015年3月14日)維基百科所有的內容都應該可供查證。请协助補充可靠来源以改善这篇条目。无法查证的內容可能會因為異議提出而被移除。 重庆电视台国际频道国家/地区 中华人民共和国所有者重庆…

Asian–European political dialogue forum This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages) This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Asia–Europe Meeting – news · newspapers · books · scholar · JSTOR …

2003 French filmRaining Cats and FrogsDirected byJacques-Rémy GirerdWritten byJacques-Rémy GirerdAntoine LanciauxIouri Tcherenkov[1]Produced byPatrick EvenoJacques-Rémy GirerdStarringMichel PiccoliAnouk GrinbergAnnie GirardotMichel GalabruJacques HigelinEdited byHervé GuichardMusic bySerge BessetDistributed byStudioCanalRelease date 3 December 2003 (2003-12-03) (France) Running time90 minutesCountryFranceLanguagesFrench[2]EnglishBudget$6.4 millionBox office…

Kembali kehalaman sebelumnya

Lokasi Pengunjung: 18.117.138.193