Search code examples
c#.netclojurestm

STM.NET versus Clojure STM


I'm wondering how is that possible that Clojure has implemented Software Transactional Memory and doesn't see any problem with that while Microsoft didn't finish its work for C# and noticed some problems which make it unpractical to implement STM described here: http://www.bluebytesoftware.com/blog/2010/01/03/ABriefRetrospectiveOnTransactionalMemory.aspx

Any idea please?


Solution

  • Clojure started on STM from nearly the beginning of the language which influenced the language design and how the language is used so as to make their STM practical. C# had to start with both an existing language and existing ways of using it which makes for a more difficult problem. The most seemingly important distinction is Clojure's STM starts with immutable data at the core of the language and then builds the concept of identity ontop of that and STM on top of the concept of identities. It's also worth noting that their are many different kinds of STM and clojure's STM is very different.