Boo

linguagem de programação
 Nota: Para a película de terror, veja Boo (filme).

Boo é uma linguagem compilada e estática e com uma sintaxe baseada no Python, combinando a clareza da sintaxe do Python com as garantias e desempenhos desejados em uma linguagem estaticamente tipada. Uma das coisas que mais chama atenção no Boo é o seu compilador extensível. Em diversos estágios durante o processo de compilação, os desenvolvedores podem  modificar o processo alterando a forma com que o compilador se comporta.

Boo
Paradigma Multiparadigma
Surgido em 2003 (20–21 anos)
Última versão 0.9.7 (25 de março de 2013; há 11 anos)
Criado por Rodrigo Barreto de Oliveira
Estilo de tipagem Estática
Influenciada por
Influenciou
Licença BSD
Extensão do arquivo
  • .boo
Página oficial Boo no GitHub

Alguns anos atrás nós mostramos os esforços feitos para tornar o Boo uma linguagem de primeira classe, o principal esforço era fazer com que o Visual Studio oferecesse suporte total a linguagem. Foi então idealizado o projeto da BooLangStudio que aparentemente morreu. Um novo projeto, o Visual Studio Boo plugin agora tomou o lugar do antigo projeto. Esse plugin está nos estágios iniciais, porém já possui algumas funcionalidades que estão prontas para o uso.

  • Criar novos/Abrir projetos existentes que possuem o Boo como a linguagem de programação. Para a criação, o plugin oferece dois templates de projeto: Class Library e Console Application.
  • Adicionar novos arquivos aos projetos Boo. Estão inclusos templates para arquivos de texto e da arquivos padrão da linguagem Boo.
  • Editar código Boo com o VS Code Editor padrão
  •  Compilar/Rodar/depurar projetos Boo, com suporte a breakpoints, inspeção de variáveis, etc.

História

editar

A linguagem Boo foi criada em 2003 pelo brasileiro Rodrigo Barreto de Oliveira, conhecido pelo pseudônimo Bamboo, origem do nome da linguagem.

Naquela ocasião, Rodrigo estava frustrado com as linguagens de programação existentes. Embora tivesse experiência no uso de Python e tenha utilizado esta linguagem como base para a criação de Boo, sentia falta de algumas características inerentes às linguagens estaticamente tipadas e da falta do acesso às facilidades da arquitetura .Net. Passou a trabalhar com C#, para poder utilizar o framework .Net, mas ficou mais insatisfeito ainda pela baixa produtividade e pela falta de prazer no uso desta linguagem. Ele desejava uma linguagem produtiva, que suportasse suas próprias idealizações, que suportasse um compilador extensível e pudesse ser modificada por programadores de acordo com as suas necessidades específicas.

Características

editar

Boo se diferencia das outras linguagens de programação pela facilidade para criar extensões. Ele tem um pipeline de compilação extensível, ou seja, você pode adicionar as suas características no compilador do Boo. Algumas das principais características:

  • Inferência de tipo - o compilador identifica o tipo das variáveis e funções e faz a declaração automática
  • Funções como objetos
  • Duck typing - Se algo caminha como um pato e faz quack como um pato então deve ser um pato
  • Clausuras
  • Interpretador interativo: semelhante ao Python
  • Slicing - fatiamento de listas; se lista = ['a', 'b', 'c', 'd', 'e'], lista[1:3] retorna ['b', 'c']
  • Macros - Lembra as macros do C++. É utilizado para simplificação de código
  • Interpolação de strings: Manipulação de Strings semelhante ao velocity
  • Generators - formas diferentes de escrever laços

Exemplos de códigos

editar

Programa Olá Mundo

editar
Console
print("Olá, Mundo!")
Windows Forms
import System.Windows.Forms

f = Form(Text: "Hello, boo!")
f.Controls.Add(Button(Text: "Clique-me!", Dock: DockStyle.Fill))
Application.Run(f)
GTK
import Gtk

Application.Init()
window = Window("Olá, Mundo!", DefaultWidth:  200, DefaultHeight: 150)

# O programa deverá encerrar-se depois que a janela se fechar
window.DeleteEvent += def():
   Application.Quit()

window.Add(Button("Clique-me!"))
window.ShowAll()
Application.Run()

Sequência de Fibonacci

editar
 Ver artigo principal: Número de Fibonacci
def fib():
   a as long, b as long = 0, 1

   while true:
      yield b
      a, b = b, a + b

Bibliografia

editar
  • Rahien, Ayende. Domain-Specific Languages in Boo. Ed. Manning Publications, 2009

Ligações externas

editar