The Coteline Programming Language

"Unifying Hipsters and Enterprise Developers more, more clearly."

Download Coteline (F*** Me I'm Famous Spring 2014 Edition) Coteline on GitHub

Jigsaw ain't vaporware anymore

Initially planned for then 7, then 8, ...then "eventually", the module system for the Java platform is still a long shot.

With Coteline the wait is over, you can use Jigsaw now!

"The best-ever ORM solution!"
license "http://www.wtfpl.net/"
jigsaw org.snoozebernate "3.0.0.beta" {
  import coteline.collection "1.0.0";
  import java.base "7";
  public import java.jdbc "7";
}

Backwards compatible with Ceylon

Backwards compatibility is key to addressing the added business core value of enterprise developments.

Coteline is commited to the continued success of providing a stable foundation for the development of your critical IT assets.

Coteline is a strict superset of Ceylon where the TypeUnsafe experts leveraged their incredible gut feeling to provide a beautiful language that will equally appeal to Hipsters and lead enterprise architects.

Language improvements

Gavin made some fundamentally opiniated decisions when designing Ceylon. Coteline fixes them. Period.

  • "public as a service", because shared is not a good keyword.
  • implements, because it is fancier than satisfies and it closes the gap for existing J2EE 1.3 developers.
  • Call an object a singleton.
  • Use const in lieu of value.
  • Write def as a Hipster-compliant variant of function.
  • Ink Unit instead of void in your fine-crafted Coteline definitions.
  • contract and trait carry more meaning than interface (and who cares about the actual formal semantics of these?).
  • We think pray is a better replacement for assert, because this is what you actually do when you write assertions.
  • dynamic blocks are better named as unsafe blocks, because they escape the wonderland of static type checks.
  • Parametric types with in / out for contravariance and covariance are hard to manipulate. This is also way too reminiscent of the C# world. Coteline provides salvation with covar and contravar.
  • Last but not least, you can also write foreach loops in Coteline.

Coteline in action

"The classic Hello World program"
public Unit hello(String name = "World") {
    const str = "Hello, `` name ``!";
    def work() => print(str);
    work();
    pray(1 == 1);
    plop.plop();
    foreach (i in {1, 2, 3}) {
        print(i);
    }
}

singleton plop {
    public Unit plop() {
        print("Oh Plop!");
    }
}

"Run the module `better.ceylon.is.coteline`."
public Unit run(){
    if (nonempty args=process.arguments) {
        foreach (arg in args) {
            hello(arg);
        }
    }
    else {
        hello();
    }
}

Quotes

Julien Ponge

I can honestly say if someone had shown me the Programming in Coteline book by Philippe Charrière and Benny B back in 2012 I'd probably have never created Golo.

Philippe Charrière

I am going to code a new web stack in Coteline to serve BackboneJS applications. I am also going to propose 10 lightning talks for the upcoming edition of Mix-IT.

Anonymous Freelance Hipster

Facebook Hack is dead, long live Coteline! (or whatever new language emerges within the next 2 weeks)

Anonymous Enterprise Developer

We are excited to report that our next human resources portfolio management platform will be ported from EJBs 1.0 to Coteline through our outsourcing partner overseas offices. Coteline fulfills all the requirements of an enterprise-class language, including the presence of ; to delimit instruction statements. We also envision to release as opensource our server side "Coteline Server Faces" stateful web framework by making a donation to the vibrant Eclipse Foundation.

It's not a fake. Seriously.


Made with from TypeUnsafe.

Have something to say? Drop us a note below!

comments powered by Disqus