views:

681

answers:

4

This free collection library comes from IT University of Copenhagen.

http://www.itu.dk/research/c5/

There is a video with one of the authors on Channel 9. I am trying to learn how to use these collections and I was wondering whether anyone has more experiences or what are your thoughts on this specific collection library for .NET. Do you like the way they are designed, do you like their performance and what were your major problems with them ?

+5  A: 

I've used it in the past and there are a couple of notes I must make:

  1. The library is very good, very fast and very useful. It has lots of very nice data structures, some of which I did not know before starting to use this library.
  2. It's Open-Source! This is a huge benefit.
  3. Sometimes you don't have exactly what you want. As far as my experience showed, the library's authors decided to go with a very fault-intolerant attitude, throwing exceptions about everything. This caused me to add a few fault-tolerant methods.

All in all, a very nice library with some advanced data structures. Unfortunately, support for it is very lacking, as you can see from the fact that new releases (bugfixes, et al) range somewhere from 6 months to a year.

Note: Starting with Mono 2.0, C5 is bundled as a 3rd party API, which I believe to be a wonderful show of faith in the product from the Mono team.

Omer van Kloeten
+1  A: 

In addition to that omer van kloeten's points.

The open source licence is MIT (comparable to BSD licence) this means that if you need make changes to the library you don't have to open-source the changes. (this might be a problem with some companies). For GPL-type licences this can be a problem.

Mendelt
A: 

Thank you both for the answers so far.

One of the reasons to creat this post was to raise awareness of the C5 library and figure if anyone is actually using it in the present.

I have been quite stuck figuring out how to do some things and it took me hours to get them and only then I realized how obvious they were. (working with the LinkedList implementation). It seems that creating and answering own questions is frowned upon a bit so I will refrain from this.

As you have mentioned there are no support resources apart from the documentation (which is broad, contains usage patterns and really good to read), which makes it sometimes hard to figure out something quickly as you have no one to ask - this may change with SOF.

My company actually prefers thar licence - we do not intend to open source the product that uses / will use the collection classes.

Tomas Pajonk
+2  A: 

I have been using the C5 library for a while now, and with much success. I find that C5 offers great benefit in programming to interface. For example, in System.Collections.Generic, the IList interface doesn't offer all of the functionality of the ArrayList and LinkedList implementations. Conversely, in C5, you can access all the functionality of the ArrayList and LinkedList just by holding a C5.IList.

As well, the original authors took much care to document the asymptotic speed of many critical operations, such as collection count, contains, and indexing. The library internally uses these properties when doing operations between collections to determine which collection would be faster as the "actor".

As well, while not updated in a while, the C5 documentation book is an amazing resource that provides clear documentation on the library.

Marcus Griep