Lançado Ceylon 1.0

2 anos e 7 meses após divulgado aqui, foi lançada a versão 1.0 da linguagem Ceylon.

Será que esse tempo todo depois do anúncio, será que ainda há espaço para ela no mercado?

Uma feature que achei muito interessante foi permitir uma variável ter um tipo OU outro.
Achei uma solução muito elegante pra evitar NullPointerException.

Opiniões? Alguém aqui já está utilizando a linguagem?

Bem, logo no início do site da linguagem há o trecho:

Html html = Html {
   doctype = html5;
   Head { title = "Ceylon: home page"; };
   Body {
      H2 ( "Welcome to Ceylon ``language.version``!" ),
      P ( "Now get your code on :)" )
   };
};

Se Ceylon for assim, será uma mão na roda no quesito produtividade.

Mas não sei se trocaria ASP.Net MVC por isso. Eu, assim como a maioria, possuo receio em apostar em algo novo demais.

[quote=AbelBueno]2 anos e 7 meses após divulgado aqui, foi lançada a versão 1.0 da linguagem Ceylon.

Será que esse tempo todo depois do anúncio, será que ainda há espaço para ela no mercado?

Uma feature que achei muito interessante foi permitir uma variável ter um tipo OU outro.
Achei uma solução muito elegante pra evitar NullPointerException.

Opiniões? Alguém aqui já está utilizando a linguagem?[/quote]

Nao sei como é no Ceylon, mas em Scala criou-se um tipo chamado Option para nao se trabalhar com null. Daria até pra implementar em java.

Pois é, essa é a abordagem que mais vejo em outras linguagens: Maybe, Option e derivados.

Mas no scala ninguém te impede de fazer algo assim:

  var person : Person = null

  person.doSomething   // e você ganha um NullPointerException aqui!!!

No exemplo acima tá óbvio que tá errado, mas no mundo real você pode ver como isso pode acontecer se a pessoa esquecer de usar Option.

O que achei legal no Ceylon, é que (pelo que entendi) Null é um tipo e uma variável pode ser de tipo ou outro.
No nosso caso ficaria:


  Person|Null person = null;

  person.doSomething // Não compila pois person pode ser null, tem que checar antes!

Esse | na declaração de tipo representa um OR mesmo: um tipo ou outro.
Com isso, você só consegue acesso aos métodos de pessoa, após validar se a referência não é nula.