Cobra was created by Charles Esterbrook, but takes many design elements from Python, C#, Eiffel, Objective-C and others.
Python was created by Guido van Rossum. It confirmed my suspicion that curly braces, semicolons and parenthesis were wasting my time and cluttering my code. Cobra takes many ideas from Python including, but probably not limited to:
- clean syntax
- literals for collections (list, dictionary, etc.)
- "no hassle" local variables
- "def" syntax for functions and methods
(See also: Comparison to Python)
C# was created by Anders Hejlsberg at Microsoft to leap frog Java and indeed it's a palatable language with solid runtime performance. However, it's code-time productivity still pales in comparison with Python.
Cobra is one of the few languages that supports both static and dynamic typing. Credit goes to Objective-C by Brad Cox for being the first language I encountered to show that static and dynamic typing can co-exist to the benefit of the developer. I suppose Steve Jobs and the folks at NeXT deserve credit for NeXTstep, a 90's platform that was easily 10 years ahead of its time and which used Objective-C as its main development language.
Cobra's type inference was drawn from multiple sources including my own desire to make Cobra look more like Python, the Starkiller project, Haskell and Boo.
Cobra's use of the .NET and Mono platforms was inspired by Boo after previous attempts to build Cobra as a standalone language were overwhelmed by the sheer effort required.
The D programming language gave me real experience using contracts (as originally conceived of in Eiffel) and inline unit testing.
Smalltalk was the third OO language I used, but the first one where things clicked and I "got it". Perhaps the first two weren't so OO after all (Object Pascal and C++). It also served as a parent to Objective-C.
There are other tidbits that Cobra took from other places. The word "shared" and the syntax for generics (with mods) came from Visual Basic.NET. It's possible that more ideas from other languages have crept into the design.
Microsoft .NET deserves a nod for:
- Providing a standard library.
- Providing a class/object model, including events.
- Providing generics.
- Encouraging multiple languages.
- Providing machine code generation.
- Probably three other things I'm not thinking of.
And finally, thanks to the Novell Mono project for enabling .NET apps on multiple platforms, especially Linux and Mac OS X.