Cobra Language Slithers into Open Source

Chuck Esterbrook, who created the new programming language thanks in part to poker winnings, says Cobra supports .Net.

The Cobra language, which is based on Python and supports .Net, has gone open source.

Chuck Esterbrook, a language enthusiast and consultant, created the Cobra language over the last year, working full-time on the project and funding the effort through winnings from a poker tournament. Now, as the language approaches a 1.0 release-it's currently at Version 0.7.4-Esterbrook is not trying to call anyone's bluff. Now that the technology is open-sourced and available to the community, he is hoping to generate some buzz and hopefully see a vendor such as Microsoft or Novell take an interest in the language, he said.

Cobra is an object-oriented, imperative language that embraces unit tests, contracts and other features. Esterbrook said it is a general-purpose language that runs on both .Net and Mono, as well as on Windows, Mac, Linux and Solaris.

Esterbrook presented the latest news on Cobra to the Southern California Python Interest Group Feb. 28 and took the technology to open source the next day via an MIT license. He had shown the technology in January to a group of programming language enthusiasts at the Lang.NET Symposium on Microsoft's campus in Redmond, Wash.

The language also features a series of productivity boosters for developers, including clean syntax, superior run-time performance, and static and dynamic typing.

Esterbrook said his key influences in creating the Cobra language were "the big four," namely Python, C#, Eiffel, and Objective-C. However, other languages such as Visual Basic, D, Boo and Smalltalk played a part.

"Cobra was originally conceived of as a cross between Python and Objective-C," he said.

Meanwhile, Cobra supports both dynamic and static typing. "Programmers should choose, not language designers," Esterbrook said. "You don't have to switch languages to switch approaches."

Dynamic languages are flexible, allow for fast coding and prototyping, and are less brittle with respect to changes and more reusable, Esterbrook said, while static languages offer compile-time detection of errors, report multiple errors at once and are fast at run-time.