Talk:Occam (programming language)

Untitled
Does anyone know which versions of occam were implemented by the various revisions of the D700 TDS? I assume that the D705 and D7205 Toolsets implemented occam 2 (more or less) - Letdorf 12:00, 18 December 2005 (UTC)

Occam 2.5 was also the internal name for Occam 2.5 (see Conor O'Neill, occam-2.5 definition, SW-0429-8, INMOS Ltd). This confused me for quite a long time :-( Should it be added to the description of Occam 2.1??? --80.185.144.0 09:25, 17 January 2006 (UTC)


 * As far as I recall the document referenced here was a rogue - it should be ignored. --Steven Zenith 23:48, 11 March 2006 (UTC)

Query Date of Occam 2.1 and some background recollections
I really do not remember these changes to Occam 2 appearing in 1988 - can anyone refresh my memory and support the claim? As I recall someone from Oxford University did the 2.1 revision (name escapes me) but I seem to recall that was completed in 1990 - essentially, after I left INMOS.

I wrote the Occam 2 Reference Manual BTW (David Shepherd contributed the Floating Point Appendix) - at the time INMOS had a policy of not allowing engineers to have their name associated with documents. They were afraid we would be poached by competitors :-) (I even had to give three months notice before I could leave - they kept me around too!).

David May wrote the first specs for Occam - essentially based on Tony Haore's earliest (and very sparse) drafts of his book on CSP. I was asked to write the manual because David's spec was too terse - but personally I admired David's early specs. Today I would describe them as semeiotically special in that they evoked very subtle meanings in very few marks.

I once asked David why Occam was so important - he pointed out that Occam has a mathematical foundation. At first this confused me because you can argue that all programming languages have a mathematical foundation (see Tarski's work in logic for example). What he meant, of course, was that Occam was founded on Tony Hoare's elemental mathematics of computation, concurrency and communication. We were not simply making it up as we went along and Tony's work really is foundational, bridging the gap between logic and machine in formal ways that were new (as far as I am aware).

I had the Algol 60 report on my desk the entire time I wrote both drafts of Occam 2. The first draft was a mess and abandoned because I was hacking together a bunch of stuff written by other people - so many people wanted to leave their mark on Occam. Everyone threw their hands up in the air and said : "no! no! no!" - I agreed. Roger Shepherd (who also worked for David) was really mad, and scared the bejeezus out of me :-) - In fact he got my head straight about what I should do. "There's no story, Steven." he said "Even a programming language manual needs a storyline". He was right.  I got Peter Cavill (who led the engineering of the transputer and Occam) to give me permission to rewrite and within three weeks I had rewritten the entire thing anew in my own words and everyone was happy.

In an interesting but irrelevant side note, I also arranged for Prentice Hall to publish the Occam 2 book, I negotiated and got the deal signed to print the first 10,000 copies of the book. I did all the style and layout work in TeX and then also reprogrammed the new PostScript RIP that the printers they use had just acquired to accept the files TeX produced. The book I wrote, the Occam 2 Reference Manual, is the only book formally published as far as I am aware.

--Steven Zenith 22:46, 11 March 2006 (UTC)

Poor examples
I'm not sure I want to get too involved with this entry but I would like to point out that the examples here are poor. Especially the example for PAR - a good optimizer would turn this into a SEQ on most machines ... but that opens a whole bag of worms about when to use PAR and when not to use PAR and now to map Occam programs onto machines.

PAR is great for describing functional composition - which does not necessarily require an understanding of the underlying machine architecture. I made a minor adjustment to fix the obvious granularity problem.

--Steven Zenith 23:19, 11 March 2006 (UTC)

A book to indicate : "programming in occam2" by Alan Burns, 1988, Addison Wesley, 189 p.

Revertion
I reverted to my last edit because the changes look like self-promotion to me. Who cares if Occam was supposed to be lowercase or not (only someone that was closely involved)? It looks wrong anyway.

Other "versions" are just not worth noting. They were never implemented or available. No-one cares. --Gwizard 21:44, 4 September 2007 (UTC)


 * You might not care; others do. Letdorf 22:49, 4 September 2007 (UTC).
 * All official INMOS documentation, to my knowledge, used the lower-case "occam" form (which was also used consistently in this article before your edit). Just because it "looks wrong" does not change this fact. Also, programming languages can exist regardless of whether they are implemented as compilers/interpreters or not. For instance, Plankalkül existed for 57 years before it was implemented! I see no point in denying the existence of the occam91/occam 3 specification, which influenced the design of occam 2.1 (a dialect of occam I presume you do consider worth noting). Letdorf 10:02, 10 September 2007 (UTC).


 * The problem is that you are the person that did the work. Your self-interest and career building is obvious. Get someone independently to recognize it. Right now it looks to me like self-promotion. And the branding of the language is irrelevant, your obsession with it is what gives you away old man. --Gwizard 20:41, 1 October 2007 (UTC)
 * I can see that you do all your edit work from an ST Microelectronics IP address. You need to declare your interest. --Gwizard 20:52, 1 October 2007 (UTC)


 * I have absolutely no idea what you are talking about. I am not Geoff Barrett, and I have never worked for either INMOS or ST. I'd love to know how you've found out the IP address I use! I admit to being a pedant, hence my insistence on the offical casing of the name "occam". I also happen to be of the opinion that the occam91/occam 3 spec was significant and influential enough to warrant a mention in this article. I hate to get personal about these things, but I'm afraid I can only conclude that you are either a wind-up merchant or deranged. Letdorf 10:58, 2 October 2007 (UTC).


 * I may be wrong. I did not think you were Geoff Barrett. I've see his name on the Oxford University web. Someone from ST Microelectronics is trolling the related pages at the same time as you. You are "emotionally attached". --Gwizard 23:43, 2 October 2007 (UTC)


 * Funny you should say that because I just now came to this article specifically looking for info on occam 3 and was surprised that it wasn't listed. Also, the language is specified as being "occam" instead of "Occam" in the reference material. - DNewhall 14:17, 2 October 2007 (UTC)


 * That seems a little convenient, but I'll roll with it. Let's discuss before we let it on the main page. What is significant about 3 that is not in 2.1 and how is the history relevant? Geoff Barrett deserves a mention, I was already thinking about that. Is he still alive? The history is hard to get at. I would like a source. I still think the case issue is not important and that readability is. --Gwizard 23:43, 2 October 2007 (UTC)


 * You know, I suppose we could ask Steven Zenith. --Gwizard 00:16, 3 October 2007 (UTC)


 * I was interested in occam 3 because I have to do a senior project for my major and I just finished reading "Programming in occam 2" by Jones and Goldsmith and I thought it would be interesting to write a compiler for occam, specifically occam 3 since it was never fully implemented in a compiler. occam 3 is of interest in computer science because it tried a few unique approaches in some areas that while syntactically clear are not easy to implement. For this reason occam 3 is, and has been, used to describe distributed algorithms and due to this I think it should be discussed. I think the argument that it should not be discussed because it was never implemented is flawed because it was still used regardless as well as the precedent shown by having an article on Plankalkül, also an "unimplemented" language. Plus, there are probably more lines of occam 3 code out there than, say, Plankalkül, Dataparallel-C, Cecil, Cesil, Arbol, or any number of other lesser-known programming languages out there and we're discussing having a paragraph discuss a major dialect of a well-known programming language. - DNewhall 06:52, 3 October 2007 (UTC)

occam 3
Should the occam 3 variant of the occam programming language be mentioned in the occam (programming language) article?


 * As I stated before, I see no point in denying the existence of the occam91/occam 3 specification, which influenced the design of occam 2.1, and has found use in describing parallel algorithms. Letdorf 12:13, 3 October 2007 (UTC).


 * Yes. I will defer to SEZ. Wizzy&hellip; &#9742; 06:52, 4 October 2007 (UTC)


 * I've been asked to look in here. Can someone please tell me what Occam 3 is? I have no idea since I was not involved in anyway. Exactly what features did Occam 3 add? Was this something that Geoff Barrett did? What algorithms specifically use the features of Occam 3 and what are those features? If the language was used in a journal published paper to describe an algorithm then I have no doubt it should be included here. But I do not know that this is the case. I assume that such references would be included in anything added. The only significant revision of which I am aware is Occam Pi and Peter Welch at Kent University is the authority on that. He will know about Occam 3 too, I have no doubt. So he's the man to ask. I really do not feel qualified to answer this question. Geoff Barret BTW is alive and well, I heard recently, and working at Broadcom in the UK. Ask him.


 * For the record, the Occam language was always developed within the group of people that worked for David May, the INMOS Architecture Group. This includes people like myself and Geoff Barret (though Geoff joined INMOS/STMicroelectronics full-time after I left). A number of people in the INMOS Software Group (Conor O'Neil among them) "leaked" unsanctioned documents that were not approved by David. David is the ultimate authority on all things Occam. David is accessible, write to him at Bristol University: dave@compsci.bristol.ac.uk.


 * BTW, I do agree that the case of the name "Occam" is unimportant at this point. If you are going to put any energy into this article then do something useful, don't argue about now irrelevant trademarking.


 * --Steven Zenith 02:41, 4 October 2007 (UTC)


 * For those unfamiliar with occam 3, a draft Reference Manual can be found here (this was cited in the occam 3 section of this article). Letdorf 10:09, 4 October 2007 (UTC).


 * OK. After a quick look I can tell you that this is a modified version of the book I wrote. I do not have time for an indepth review of it right now. The floating point appendix looks the same as the one written for that book by David Shepherd. And it all has Geoff Barret's name on it! I scanned this book before (years ago) and I noted this then but figured no one would ever care TBH. So I don't know what to tell you. I certainly cannot support adding something about it without some substantive clarification preferably from David May or Roger Shepherd since they can speak with some authority on the matter.


 * However, without this clarification, if you have a reference to a journal published scientific paper that has referenced this specification and has used the unique features of this language (whatever they are) to specify an algorithm in that paper, then I say yes, put it in. The paper can be one written and published by Geoff, for example. Otherwise, I vote no.


 * If the article was a more extensive piece covering the history of the development and presenting the language more completely etc.. then I's say put it in as a footnote. But there is a very very long way to go before anyone does that. Again I say, if you are burning energy on this talk page, better to actually add something substantive to the page and stop bickering. And while you are all at it, please do this transparently. I am not happy with people hiding behind aliases. If you have something to say, let's see who you are!
 * --Steven Zenith 11:10, 4 October 2007 (UTC)


 * Thanks Steve! --Gwizard 21:58, 23 October 2007 (UTC)


 * I am inclined to think that there should be a reference to the existence of that variation; I don't think that it has to be either a red link or a huge thing, just enough so that someone who comes here looking for information about Occam 3 can find that it is (was?) real and they should look further (and elsewhere) if that's what they need. Completely not mentioning it may lead people to think that their reference was a typo for Occam 2. htom 13:25, 26 October 2007 (UTC)


 * There is no reason at all to suppose that someone would go anywhere looking for information about Occam 3 as far as I can tell. No one has yet offered evidence that it either is or (was) real in any meaningful sense. --Steven Zenith 01:52, 29 October 2007 (UTC)


 * I had previously heard of occam-pi and thought that it was occam-3, only with some kind of Knuthian numbering to perfection scheme. —Preceding unsigned comment added by OtterSmith (talk • contribs) 05:09, 29 October 2007 (UTC)


 * Here are a few papers found via Google which cite the draft reference manual linked to above:


 * Carlisle, W. H. 1995. Type checking concurrent I/O. ACM Trans. Program. Lang. Syst. 17, 3 (May. 1995), 448-460.


 * F. Araque, M. Capel, J.M. Mantas, A., Palma. A Proposal to Improve Reusability in a language based on the Occam-CSP Programming Model. EUROMICRO Workshop on Parallel Programming, London (UK), 24-27 January 1997.


 * F.R.M. Barnes and P.H. Welch. Prioritised Dynamic Communicating Processes: Part I. In James Pascoe, Peter Welch, Roger Loader, and Vaidy Sunderam, editors, Communicating Process Architectures 2002 (WoTUG-25), IOS Press, 2002.


 * Carroll, M.C.; Pollock, L. Composites: trees for data parallel programming. Proc. 1994 International Conference on Computer Languages, IEEE, 16-19 May 1994, 43-54.


 * S. Knee. Program development and performance prediction on BSP machines using Opal. Technical Report PRG-TR-18-94, Oxford University Computing Laboratory, Aug. 1994.


 * Should a language specification be considered "meaningfully real" enough for Wikipedia if it has been cited in a journal or conference paper? Letdorf 11:41, 29 October 2007 (UTC).


 * Even better is : http://citeseer.ist.psu.edu/context/81540/0 - yes I agree. It is disappointing, however, that Barrett has not referenced his co-authors, myself and David May included. --Steven Zenith 21:03, 29 October 2007 (UTC)

So, to summarise: myself and User:OtterSmith are in favour, User:Stevenzenith is now in favour after initial scepticism, User:Wizzy will go along with Stevenzenith, and we can assume User:Gwizard is against. I suggest the motion is therefore carried. Letdorf 10:57, 12 November 2007 (UTC).

I concede that it should be mentioned as a footnote (to 2.1). I also agree with Steven Zenith that it would be more useful to put our effort into describing the language and not focus upon resolving these historical issues. Are we endorsing a historical deception? --Gwizard 01:22, 14 November 2007 (UTC)

I've just found this discussion about occam 3. There are three points.

Firstly, has anyone checked that the occam 2.1 features were taken from occam 3? I suspect - and will try to get David May and Geoff Barrett's recollections on this - that the 2.1 features were drafted pre occam 3. They are essentially repairs to occam 2 to add data structures.

Secondly, IMHO occam 3 was a serious development. The additions to the language were, I think, primarily targeted at structure of parallel programs. [call channels, shared channels, modules and libraries]. I also think that some of these provided a way of exploiting some of the features of the T9000 transputer. These should all be of interest to language designers and those interested in parallel programming. Certainly a quick trawl through the Kent archives shows that the language features were discussed, and there is a on the WoTug website about occam 3 which includes the phrase "experience has shown up better alternatives to some of the problems the language addressed".

Finally, I think that in some ways occam 3 represented the end of interest in that type of parallel programming. One that has recently restarted - maybe the occam article shoudl be extended to include a reference to xc?Roger (talk) 23:27, 22 March 2009 (UTC)


 * Hi Roger, thanks for your comments. As for the relationship between occam 2.1 and 3, Conor O'Neill's "occam-2.5" definition document (SW-0429-8) claims that some features were borrowed from occam 3, and as I understand it, the final occam 2.1 didn't differ much from that. Letdorf (talk) 18:09, 23 March 2009 (UTC).

Having talked to Geoff Barrett, he confirms that the features in 2.1/2.5 defined after occam 3 was defined. He also says the type system was around before he started on occam 3 and suggests I might have something to do with it. I don't remember doing anything on that and I think it must be David May's work.

Finally, I'll point out that the occam 3 definition was never formally published; if it had been it would probably have not had an author's name. The versions which have surfaced will have carried Geoff's name as he was certainly the "owner" of the document.--Roger (talk) 20:45, 27 March 2009 (UTC)

Programming manual occam (1983)
I have this spiral book and plan to scan it. It will later be published on http://www.transputer.net/obooks/obooks.asp. However, I would like to place a scan of the green front page on this occam page. It has no ISBN, but printed "Copyright 1983 INMOS Limited" on the first page. Will it be allowed to publish the front page here? It may be that this is the first publication of the occam language. –Øyvind Teig (talk) 15:25, 3 January 2021 (UTC)

Alternatively, could I take a photo of the book, laying on a table and then publish that photo here? –Øyvind Teig (talk) 15:31, 3 January 2021 (UTC)


 * IANAL but I think WP:FUC would allow reproduction of the cover here. It definitely allows company logos and album covers. ~Kvng (talk) 13:47, 6 January 2021 (UTC)


 * Thanks. I have now published the photo in the article. But for some reason it's shown with the Norwegian subtext. I also added English ("1983 "occam" by INMOS Limited") and German subtexts. How can one make the engilsh subtext seeen? (Fixed, it was just ine the alternative text!) — Preceding unsigned comment added by Aclassifier (talk • contribs) 20:39, 31 January 2021 (UTC)  –Øyvind Teig (talk) 20:43, 31 January 2021 (UTC)

A Commons file used on this page or its Wikidata item has been nominated for deletion
The following Wikimedia Commons file used on this page or its Wikidata item has been nominated for deletion: Participate in the deletion discussion at the. —Community Tech bot (talk) 23:22, 1 February 2021 (UTC)
 * 1983 1988 Trademark occam and occam 2 INMOS Limited.jpg