Socialist calculation: the computer engineering problem

In the same year that Allin Cottrell and I published Towards a New Socialism(TNS), I also brought out a couple of computer science books. The two CS books might seem to have little to do with the book on socialism but they are linked by an intellectual history of research over the decade that led up to TNS.

The first book was about the persistent programming language PS-algol
The second book was about how to implement PS-algol with 128 bit address spaces on PCs
The third book was on the computerised planning of socialist economies


Since around 1981 I had been thinking about the problem of socialist calculation from an engineering viewpoint and trying to come up with computer engineering solutions. The other books record part of that history. I bring it up now because I think that some of the engineering solutions that I worked on in the 1980s were sufficiently in advance of the then existing technology that they may still have some technical relevance to a future planned economy.

In particular, I will focus on the issues of the persistent store and the world wide address space machines that I was designing and prototyping.

The Data Curator

The data curator machine at Edinburgh university circa 1981. This was an object server for a network of client machines. The boxes to the right were 60MB disk drives – something considered quite state of the art at the time. The tall cabinet was a Perkin Elmer 32 bit computer that ran an Edinburgh Operating System Mouses.

From late 1980 to the summer of 82 I was working on my PhD. The research topic was how to incorporate the concept of data persistence into high level compiled languages in such a way as to allow it to work in a distributed networked environment.

Because of this background and also because I was a Marxist economist, a fellow PhD student from China, a CPC member and still in those days a Maoist, asked if I would be willing to come to work in the planning ministry in Beijing and introduce some of the techniques we had developed in Edinburgh to that ministry. As it happened, despite me agreeing, my Chinese comrade discovered that although foreign CS experts were being invited to China, the planning ministry was out of bounds for foreigners.

But let me first explain the context of our research in Edinburgh in the early 80s and why it was seen to be relevant.

The dominant paradigm in computing in 1980 divided computer memory into two logically distinct types: Random Access Store (RAM) and Filestore. Data in RAM vanished when you turned the machine off, whereas the Filestore was persistent. The conceptual distinction reflected two different technologies, semiconductor DRAM and rotating magnetic disks. These two technologies are still with us, but persistent semiconductor store (SSD) is rapidly replacing the old rotating disks in new computers.

Today, both RAM and SSD are made of silicon, and both allow rapid random access. But the conceptual legacy of the old disk filing systems persists. Files have to be opened and accessed by read and write system calls, and any data stored in the variables of programme vanishes when the programme ends.

But this distinction between persistent and volatile memory can in principle be hidden by smart virtual memory technology. The EMAS operating system that we used in Edinburgh in the late 70s and early 80s and the MIT Multics system had a different concept. A user’s files were mapped into the address space of their programme and accessed as array data with a programme. Some early interpretive languages like APL and Smalltalk also had the notion of a ‘workspace’ in which the variables of a programme could persist between login sessions.

Although memory mapped filestore has since been adopted in Windows NT, Windows 10 etc,  much current programming still takes place using the older read/write file paradigm.

Memory mapping of files only really works for array data types. Heap data: instances of classes, graphs, trees etc, is still non-persistent in most programming languages. A limited form of heap persistence is provided by Java serialisation, but this facility is not as consistent and orthogonal as that which was long ago available in Smalltalk.

The Xerox Alto, the world first personal workstation. Never made commercially available


The Advanced Personal Machine(APM), demonstrated by Richard Marshall

Our research in the early 80s was designed to allow existing compiled languages like Algols or Pascal to have persistent heap store. Moreover, we wanted this persistent store to be larger than that provided on the relatively small 16 bit Alto processors on which Xerox Parc had prototyped Smalltalk.

In 1980 commercial personal computers were puny Apple IIs or similar 8-bit machines. There was no World Wide Web, and the ethernet was still just a research system in Xerox Parc. So Edinburgh CS dept developed its own workstation : the APM, and its own locally designed ethernet.

The Data Curator project succeeded in demonstrating that you could implement a distributed persistent object structured virtual memory for compiled languages. Its first demonstration was for a dialect of Algol from St Andrews: S-algol.

The Edinburgh extension was termed PS-algol with the P standing for Persistent.  Subsequently, persistence was built into the languages  Napier88,  Fibonacci and the Java variant pJama.

When I was asked to go to China I started thinking about how the technology of persistence could be applied to planning an economy for a country as huge as China. The first point that struck me is that we were going to need a much large scale of distributed computing than anything we had experimented with. If one looked forward to a future automated Chinese economy the planning system would need to coordinate data originating in hundreds of millions of computers. It would have to integrate this into a single vast shared database that could coordinate the whole of social production.


Persistent store machines

This implied that we would need a computer architecture with a very much larger shared virtual address space than those available on 1980s computers, which maxed out at 32-bit virtual address space.  Furthermore,   remember this was before the collapse of the USSR, and socialism still seemed to be winning on a world scale, it struck me as obvious that a design for socialist planning should in principle be extendible to worldwide planning, for a day in the future when the number of computers rivalled the numbers of people.

The population of the world, around 4 billion, in those days would already exhaust 32 bits if there was one computer per person.

The first machine architecture I designed,  PSM had a 128 bit address space made up of a 48 bit host number, a 48 bit local object number and an offset of up to 32 bits within the object. That is to say, individual objects could be up to 4 Gigabytes in size.

The addressing mechanism proposed for the PSM, Photocopy from original Persistent Store Machine report.
The address was split into 48 bit Host number and a 48-bit Local Object Number on the machine. Photocopy from original Persistent Store Machine report.

Objects would migrate via a worldwide network from the source machine to any machine that had a copy of the Host/LON combination. This is very similar to the somewhat later concept of a URL used in the WWW, but with the difference that the identifiers were seen as being binary rather than textual.

The machine architecture seems, by modern standards, to have a rather sparse register set (shown below).

The register architecture, A is an accumulator, V, D, C are 128-bit base address registers, I and L are index registers and T is a transaction register for the nested transactional store. ( from original report)

The sparse set of registers was heavily influenced by the ICL 3900 series. We were in close collaboration with ICL with the view to the PSM being a successor architecture to the 3900. The single 128 bit accumulator,  already was there on the 3900. The segment registers we proposed were longer than those on the 3900. The intention was to prototype the PSM by microcode changes to an existing series 3900.

ICL supplied us with an early 3900 machine at Glasgow University to which the team had moved. But obstacles were placed in the way of accessing the microcode so the research platform at Glasgow was switched to a new machine that I will describe in a later post.

Concluding thoughts

For socialist calculation to be feasible certain engineering problems had to be solved. It had to become possible to access what is now termed ‘Big Data’. It had to be possible to unify information across millions of computers. It had to be possible to have databases very much larger than could be addressed by the 32-bit computers available at the start of the 1980s.

Today the technologies to do most of these things are well-established thanks to the Web and cloud data servers.

It is arguable, however, that the computing paradigm on which all of this is built, that of volatile ram combined with a distributed filespace is less amenable to high-performance computation over distributed graph structures than the sort of address architecture our team was working on in Glasgow in the mid-1980s.   With modern VLSI technology, it would be feasible to design a class of 128 bit addressed RISC processors. The ICL register architecture we proposed is clearly obsolete and would have to be replaced by something more modern.

What then is the escape from capitalism?


What would be the essential features of a socialist economy, one the would be really achievable?


If you go back to the 19th-century socialists like Marx they saw the elimination of a monetary economy as being absolutely essential. One can read the whole of Marx’s Capital as a prolonged argument to the effect that a monetary industrial economy leads inevitably to the whole set of capitalist institutions. From money and industry comes the buying of labour power, from this comes exploitation and the class system. From exploitation stem all the other evils of the system.

Any attempt to introduce a reformed monetary economy leaves the basic logic untouched. The underlying tendencies implicit in the monetary economy re-assert themselves. The experience of hitherto existing socialism which altered property ownership without eliminating money and monetary calculation are a testimony to this inner logic. There was a constant pressure to re-introduce more and more capitalist elements to the economy since these capitalist institutions are an inner necessity of monetary logic.


But what does getting rid of money imply? Is it even feasible? What is the alternative?


Marx was pretty clear that he saw the immediate alternative as being a system based on the use of personal labour accounts:

the individual producer receives back from society – after the deductions have been made – exactly what he gives to it. What he has given to it is his individual quantum of labor. For example, the social working day consists of the sum of the individual hours of work; the individual labor time of the individual producer is the part of the social working day contributed by him, his share in it. He receives a certificate from society that he has furnished such-and-such an amount of labor (after deducting his labor for the common funds); and with this certificate, he draws from the social stock of means of consumption as much as the same amount of labor cost. The same amount of labor which he has given to society in one form, he receives back in another. (Critique of the Gotha Programme)

With this institution there is no exploitation – the worker gets back what they have contributed. There is no surplus going to a property owner.

There still has to be something equivalent to an income tax, what Marx calls deduction of labour for common funds.  

But there is still a unit of account. Marx was not proposing an economic free for all. He was not saying that you simply go to the common store and remove as much as you want. Clearly, were this to be allowed you would be encouraging parasites no better than those in the old society. But how does this system of labour accounts actually differ from money?


Does it not, in the terminology of thinkers like Heinrich, not just ‘reproduce the value form’. Marx answers this in a footnote in Capital I.

The question — Why does not money directly represent labour-time, so that a piece of paper may represent, for instance, x hours’ labour, is at bottom the same as the question why, given the production of commodities, must products take the form of commodities? This is evident, since their taking the form of commodities implies their differentiation into commodities and money. Or, why cannot private labour — labour for the account of private individuals — be treated as its opposite, immediate social labour? I have elsewhere examined thoroughly the Utopian idea of “labour-money” in a society founded on the production of commodities (l. c., p. 61, seq.). On this point I will only say further, that Owen’s “labour-money,” for instance, is no more “money” than a ticket for the theatre. Owen pre-supposes directly associated labour, a form of production that is entirely inconsistent with the production of commodities. The certificate of labour is merely evidence of the part taken by the individual in the common labour, and of his right to a certain portion of the common produce destined for consumption. (Capital I Chap 3)


So here he is saying that the precondition for the sort of labour certificate he talks about is directly associated production, that is to say, production that is organised according to a common plan and not carried out by private businesses.  But would this not just re-create money?

Would these labour certificates not start to circulate like bank notes?

Well Marx was explicit that this would not happen.

In the case of socialised production the money-capital is eliminated. Society distributes labour-power and means of production to the different branches of production. The producers may, for all it matters, receive paper vouchers entitling them to withdraw from the social supplies of consumer goods a quantity corresponding to their labour-time. These vouchers are not money. They do not circulate.(Capital 2, Chap 18)


How, though, did he propose to prevent these certificates or paper vouchers from circulating. He does not spell it out but when you think of it, the implication is pretty clear. The vouchers would bear the name of the worker who had performed the x hours work. In the small mill towns of the 19th century, when store counter workers would know the other workers by name, this would have been enough. In a big city, a purchaser might have to produce an identity document. This would have prevented them from circulating and acting like money.

Hollerith card of the sort proposed by Bellamy for social credit

But all that is based on the technology of the early 19th century. By the late 19th century socialist authors like Bellamy were proposing to harness the then very modern punched card technology. Bellamy envisaged a socialist economy in which citizens would have social credit cards, punched cards, that they would use to buy things from common stores. When they bought something the credit would simply be canceled out by punching it away on the card. The goods would then be delivered in Amazon-style using pneumatic tubes that would run to every house.


What this shows is that an earlier generation of socialists had no hesitation about using the best technologies of their day when thinking of getting rid of money. Today, of course, we have the infrastructure of smart cards and their readers. Changing this over to a labour accounting system would be simply a matter of :

  1. Changing the unit of account from the Euro to the labour hour.
  2. Amending the software so that transfers between private accounts were impossible.
  3. Withdraw all Euro’s from circulation.

But in order to mark goods in terms of their labour content, you need both the direct association of production, its carrying out in accordance with a common plan, and the ability to do the necessary calculations.

Back in the 1920s the right wing economist Mises claimed that socialist calculation without money would be impossible. He did concede that Marx’s labour time would be an alternative way of reckoning but said that working out labour content was impossibly difficult. The economy was far to complex, far too many different types of labour were involved indirectly in the making of any one product, for this to be feasible.


Mises was writing before computers and before the internet. In his day calculations were done by clerks with paper and pen in ledgers. What was once daunting, becomes, with modern digital technology a relatively easy task. Even back in the 1980’s Allin Cottrell and I showed that with then available network technology and 8-bit microcomputers, you could maintain a system of social labour values that was updated daily. With modern equipment, the updating could be even more rapid.


The technical and theoretical problems associated with abolishing the capitalist monetary economy are readily solvable. The solutions have been public for years. The problem is political. It is promulgating and persuading the great bulk of the population that they stand to gain directly and in the short term from such a transition.