There are plenty of object-oriented programming languages in existence including C#, Python, Boo and Ruby. So why use Cobra? This document addresses that question.
Right now, if you want software contracts in your language, how can you get that? Use Eiffel or D. What if you want static and dynamic binding? Use Objective-C or Boo. What if you want expressiveness and quick coding? Use Python, Ruby or Smalltalk. What if you want runtime performance? Use C#, Java, C++, etc.
What if you want ALL of those? ... You're out of luck! And that's frustrating because none of those productivity-boosting features are incompatible with each other. You shouldn't have to choose between C++'s speed, Python's expressiveness and Eiffel's contracts. There's no theoretical reason that you can't have it all. There's "just" a lot of work required to make it happen.
One way to characterize Cobra is with these high level points:
Cobra achieves 1 by following Python and Ruby (but not religiously). It achieves 2 by favoring static typing ("i = 5" means "i" is an integer and always will be) and leveraging .NET/Mono for machine code generation. It does 3 by using the .NET typing system at compile-time for static types, and using the .NET reflection system at run-time for dynamic binding. It gets 4 from multiple sources including Eiffel, Python and its own compile-time nil tracking.
So the "what's new" in Cobra is not the individual elements such as contracts, classes, etc. It's the combination of everything that goes into it. Consider what would happen if you were coding in Cobra, then switched to another language:
Note that Cobra has few new elements because it was never intended to be experimental. It's a practical synthesis of already-proven features that are currently scattered across multiple languages.
As of March 2007, Cobra can be considered an "early beta" offering. Features include:
To learn the very basics of the language, which will be helpful when reading everything else, see Hello, world. (and more).
You'll eventually be lead to the following links, but maybe you also want to check them out now:
There are more details on language level support for quality.
There is a detailed comparison to Python (and IronPython).
And since Cobra draws so much from other languages, there are acknowledgements.