Agora que o ano começou…

0 comments

Posted on 22nd fevereiro 2010 by gbenatti in android | boo

, , , ,

Passado o carnaval, vamos as novidades.

Comecei a trabalhar nas horas vagas em um projeto open source.

O Boojay, um emissor de bytecode java para a linguagem Boo.

Minha ideia primaria é poder usar Boo para o desenvolvimento de software para Android, e no embalo retribuir a comunidde Boo trabalhando no boojay e no monolipse.

Boo Friday – Parte II

0 comments

Posted on 6th novembro 2009 by gbenatti in Sem categoria | boo

,

De volta a nossa série sobre Boo. Hoje eu vou falar sobre o primeiro item do Boo Manifesto. Que diz que Boo é uma linguagem que foi concebida para ter uma sintaxe limpa e de fácil digitação.

Quais caracteristicas Boo tem que estão ali pra atender esse objetivo ?

Parecido com Python.

Python é uma linguagem que é conhecida pela sua elegância e sua capacidade de expressar uma grande quantidade de informação de uma forma sucinta, copiando o básico da sintaxe de Python, Boo já começa com o pé direito nesse quesito.

Açúcar sintático para patterns comuns de programação.

Boo suporta uma gama de construções de forma simplificada, listas, hashtables, arrays. Alem dessas estruturas, formas simples de criação de objetos, uso de expressões regulares, formatação de strings e vários outros detalhes fazem de Boo uma linguagem que necessita de pouca digitação.

Alguns exemplos:

  1. # literais simples
  2. myArray = (1,2,3,4,5,6)
  3. myList = [1,2,3,4,5,6]
  4. myHash = {1: "um", 2: "dois", 3: "tres"}
  5. # formatação de strings
  6. language = "Boo"
  7. grade = "Awesome"
  8. print "${language} is ${grade}"
  9. # uso de regex
  10. print("Cool") if language =~ /^Boo/

Declaração automática de variáveis.

Em Boo, um assignement cria uma nova variável local naquele escopo.

  1. newVar = 1 # cria uma nova variável newVar

Inferencia automatica de tipos.

Uma coisa verdadeira no mundo da computação, é que muitas vezes nós programadores somos preguiçosos, só as vezes é claro. Exemplo, da do um método como o a seguir:

  1. def two():
  2.   return 2
  3. dois = two()

Não está na cara que o método two, retorna um tipo inteiro ? e que dois contem um inteiro também ? Então porque devemos escrever códigos assim:

  1. def two() as int:
  2.   return 2
  3. dois as int = two()

Na verdade em Boo não é necessário, a primeira versão funciona perfeitamente, gerando código equivalente a segunda versão, tendo assim todas as vantagens de código estaticamente tipado.

Fica a cargo do programador decidir qual código escrever. Eu como bom programador sei qual versão prefiro ;) .

Classes não são necessárias.

Para algumas utilizações como em scripts, muitas vezes a declaração de uma classe só pra deixar o compilador feliz não faz muito sentido.
Vocês já viram maior cambiarra do que o famoso “public static void main” ? Poxa, eu só queria escrever um hello na tela e tenho que declarar uma classe ? com um método public static ?? que recebe uma lista de parâmetros que eu não estou interessado ???

Ainda bem que em Boo, meu HelloWorld pode ser simplesmente

  1. print "Hello World"

Esse post já esta meio grande, no proximo falaremos de expressividade. Até lá espero aprender o que isso quer dizer.

Cheers.