Jump to content

Talk:POP-2: Difference between revisions

Page contents not supported in other languages.
From Wikipedia, the free encyclopedia
Content deleted Content added
untitled, unsigned
Multipop?: new section
Line 51: Line 51:
I used POP when I was an undergraduate 75-78 at the University College Swansea. I can not remember if it ran on the ICL 1903 or the PDP-11.
I used POP when I was an undergraduate 75-78 at the University College Swansea. I can not remember if it ran on the ICL 1903 or the PDP-11.
Also for my final year project I used STAB and this had a middle language STAB-80. The idea was that STAB-80 could be processed by an interpreter running on the Intel 8008 (8 bit Intel) and my third year project was to generate a complier so some STAB-80 was interpreted and some compiled. Hence optimising the speed (compiled) or memory (interpreted).
Also for my final year project I used STAB and this had a middle language STAB-80. The idea was that STAB-80 could be processed by an interpreter running on the Intel 8008 (8 bit Intel) and my third year project was to generate a complier so some STAB-80 was interpreted and some compiled. Hence optimising the speed (compiled) or memory (interpreted).

== Multipop? ==

Between COWSEL and Pop-2 was Multipop, which doesn't have a wikipedia entry yet. From Robin's page:

'''The Multipop Timesharing System'''
It is conventional to regard an operating system and a programming language implementation as being distinct entities. There are however distinct advantages to an integrated approach, since many of the constructs required for each are in fact common, for example storage management and interpreting user commands . The Multipop, timesharing system, first operational in late 1967, was based on the concurrently developed implementation of POP-2.
Making POP-2 be the command language for the operating system and the only language available to the user made it possible, on a relatively cheap computer (64K 24-bit words of memory), to support the time-shared development of quite complex programs, with relatively rapid responses to user interactions. Incorporating device handlers `cannibalised' from the earlier MiniMac project, it supported much of the symbolic computation work at Edinburgh until the early-70's.
Using a functional language with a properly implemented concept of closure is of considerable benefit in supporting the presentation of devices such as disks to a user in an encapsulated form . Multipop employed no conventional hardware protection mechanisms; instead its security was guaranteed by the fact that access to system resources was obtained via closures of device access functions, and on built in restrictions on code-generation embodied in the compiler. Being system-generated and opaque, there was no way in which a user could obtain inappropriate access to system resources via these closures. Moreover, as compared with a context switch, a closure is a light-weight means of encapsulating capabilities. [[Special:Contributions/70.124.38.160|70.124.38.160]] ([[User talk:70.124.38.160|talk]]) 20:34, 31 March 2024 (UTC)

Revision as of 20:34, 31 March 2024

Untitled

http://www.cs.bham.ac.uk/research/projects/cogaff/sloman-clowestribute.html — Preceding unsigned comment added by 88.113.96.60 (talk) 13:29, 18 March 2011 (UTC)[reply]

caged address spaces

How about a definition? HughesJohn (talk) 19:28, 25 March 2011 (UTC)[reply]

There's a description about two thirds of the way through http://www-robotics.cs.umass.edu/Popplestone/pop_development.html

"In extending the storage control to handle multi-word blocks of store my initial proposal was to divide the store into what I called `cages'. Each cage would contain only one class of data-object. The idea was that one had a `zoo' of data-objects. The zoo consisted of cages, and one knew what kind of animal (data-object) was in a cage by looking at the label on the cage. Since the cages were to be all of the same size 2^n words say, and aligned on store boundaries of address k2^n, the cage to which an item belonged could be determined by shifting the item address down n bits. A given data-class might occupy more than one cage, but a table-lookup on the cage-bits would give the actual data-class of an object.

"However the zoo approach would have been complicated to implement, and on a visit to the University of Aberdeen, Michael Foster told me of the system he was currently using for the Absys development. This was to employ an extra key-word at the beginning of every data-object to indicate its type. I believe that he subsequently decided to use the caged system, but I thought that the key-word, pointing to a key-cell was the best for our purposes: it was simple to implement, and did not leave us with lots of partially filled cages. Since we were anxious to provide user-defined record classes, each of which would have required the setting up of a cage, it seemed that the saving of the key-word would be more than counterbalanced by the existence of unused space in cages.

"In later years, when we had a larger 4130 system, we were forced into a semi-caged implementation because the machine architecture placed addressing restrictions on certain classes of item."

That also gives some evidence that POP-2 was initially implemented on a 4120. 131.111.85.79 (talk) 09:43, 14 October 2016 (UTC)[reply]

Implementation dates

I think there's a mistake in the list of implementations and associated dates. The page says:

"The original version of POP-2 was implemented on an Elliott 4130 computer in the University of Edinburgh (with only 64KB RAM, doubled to 128KB in 1972).

In the mid-1970s, POP-2 was ported to BESM-6 (POPLAN System).

Later versions were implemented for CTL Modular One, PDP-10, ICL 1900 series (running the George operating system)."

I note that some of Popplestone's papers refer to a 4120 rather than a 4130, but that's not what I'm concerned about.

I know I used POP-2 at Lancaster University whilst I was still at school and I left school at the end of 1970. Lancaster had an ICT 1909 and I believe I used POP-2 on that, so I think the notion that a 1900 implementation was only available in the mid to late 1970s is wrong. The only other machine I remember using there was a PDP-8 but I think I only used FOCAL on that. I will see if I can find any evidence of my sessions with dates. — Preceding unsigned comment added by 131.111.85.79 (talk) 10:13, 12 October 2016 (UTC)[reply]

I asked Andrew Colin, who was in charge of the Lancaster computers at the time. He says POP-2 was implemented on the 1909 by somebody called Robin John Scott, which confirms my memory. I haven't found any links about that person yet. 131.111.85.79 (talk) 09:43, 14 October 2016 (UTC)[reply]

I just realized I mistyped the name of the person who implemented POP-2 on the ICT 1909. It was John Scott rather than Robin Scott. With that change I found his LinkedIn profile https://uk.linkedin.com/in/johnscottgb which confirms that he did the implementation in 1968

"January 1968 – September 1968 (9 months)Lancaster, United Kingdom Implemented product "POP-2 Interactive Programming Language System" on ICL1900-series mainframes."

131.111.85.79 (talk) 10:08, 14 October 2016 (UTC)[reply]

Commercial Derivatives

About 1982, a derivative of POP-2 called STAB was obtained from Strathclyde University and used commercially to build a new machine, which would microcode the associated pcode. During the project, a VAX 11/750 was re-microcoded to execute the pcode directly for testing. However, the STAB language was also modified to support independent compilation, and its compiler re-written to generate machine code across a range from mini to mainframe. At the time, this proprietary language was more portable than C, to the extent that another derivative (ACPL) was used by a different company, in 1987, to build a large multi-platform business intelligence and OLAP database product. This product was still active as late as 2002. Unfortunately, being within the commercial sector, there are few (if any) citable references that could be used here. I can write this note, for the record, as I was intimately involved with both projects. TonyP (talk) 11:27, 6 December 2018 (UTC)[reply]

Trivia

I used POP when I was an undergraduate 75-78 at the University College Swansea. I can not remember if it ran on the ICL 1903 or the PDP-11. Also for my final year project I used STAB and this had a middle language STAB-80. The idea was that STAB-80 could be processed by an interpreter running on the Intel 8008 (8 bit Intel) and my third year project was to generate a complier so some STAB-80 was interpreted and some compiled. Hence optimising the speed (compiled) or memory (interpreted).

Multipop?

Between COWSEL and Pop-2 was Multipop, which doesn't have a wikipedia entry yet. From Robin's page:

The Multipop Timesharing System It is conventional to regard an operating system and a programming language implementation as being distinct entities. There are however distinct advantages to an integrated approach, since many of the constructs required for each are in fact common, for example storage management and interpreting user commands . The Multipop, timesharing system, first operational in late 1967, was based on the concurrently developed implementation of POP-2. Making POP-2 be the command language for the operating system and the only language available to the user made it possible, on a relatively cheap computer (64K 24-bit words of memory), to support the time-shared development of quite complex programs, with relatively rapid responses to user interactions. Incorporating device handlers `cannibalised' from the earlier MiniMac project, it supported much of the symbolic computation work at Edinburgh until the early-70's. Using a functional language with a properly implemented concept of closure is of considerable benefit in supporting the presentation of devices such as disks to a user in an encapsulated form . Multipop employed no conventional hardware protection mechanisms; instead its security was guaranteed by the fact that access to system resources was obtained via closures of device access functions, and on built in restrictions on code-generation embodied in the compiler. Being system-generated and opaque, there was no way in which a user could obtain inappropriate access to system resources via these closures. Moreover, as compared with a context switch, a closure is a light-weight means of encapsulating capabilities. 70.124.38.160 (talk) 20:34, 31 March 2024 (UTC)[reply]