linguagem boo: a wrist friendly language for cli

25
Rodrigo B. de Oliveira déspota ([email protected])

Upload: alessandro-binhara

Post on 27-May-2015

1.538 views

Category:

Technology


1 download

DESCRIPTION

Por Rodrigo Bambo: Linguaguem Boo Uma linguagem amigável aos pulsos para CLI

TRANSCRIPT

Page 1: Linguagem Boo: A wrist friendly language for CLI

Rodrigo B. de Oliveira déspota

([email protected])

Page 2: Linguagem Boo: A wrist friendly language for CLI

Era uma vez

Um programador apaixonado pelo framework .net

Page 3: Linguagem Boo: A wrist friendly language for CLI

Era uma vez

Um revoltado programador C# com Síndrome do Túnel do Carpo

Page 4: Linguagem Boo: A wrist friendly language for CLI

E ele experimentava...

●Python, Ruby, ... ●Tríade ●Linguagem ●Ambiente de Execução ●Bibliotecas

Page 5: Linguagem Boo: A wrist friendly language for CLI

Mas sua paixão...

●BCL ●CTS ●Metadados ●Reference and Value types ●Delegates ●Entre outras coisinhas ●CLI

Page 6: Linguagem Boo: A wrist friendly language for CLI

E estava decidido...

Ele iria criar uma nova linguagem de programação. Por quê? Porque ele podia. Ele é um programador. É praticamente seu dever terminar com a palhaçada que é, hoje, utilizar a CLI.

Page 7: Linguagem Boo: A wrist friendly language for CLI
Page 8: Linguagem Boo: A wrist friendly language for CLI

Interlúdio

Programadores e suas idades

●Reusabilidade ●Extensibilidade ●Entre outras

Page 9: Linguagem Boo: A wrist friendly language for CLI
Page 10: Linguagem Boo: A wrist friendly language for CLI

Mãe, eu quero

●Uma sintaxe leve ●Extensibilidade, Expressividade ●Produtividade! ●Trocar figurinhas com outras linguagens ●Uma biblioteca de classes bem pensada ●Ser multiplataforma

Page 11: Linguagem Boo: A wrist friendly language for CLI

Sintaxe Leve

A vida é melhor sem amarras

import System import System.Net import System.Threading url, local = argv client = WebClient() call = client.DownloadFile.BeginInvoke(url, local) while not call.IsCompleted: Console.Write(".") Thread.Sleep(50ms) Console.WriteLine()

Page 12: Linguagem Boo: A wrist friendly language for CLI

Sintaxe Leve

A vida é melhor sem amarras

import System.Web.Services [WebService] class Math: [WebMethod] def Add(a as int, b as int): return a+b [WebMethod] def Multiply(a as int, b as int): return a*b

Page 13: Linguagem Boo: A wrist friendly language for CLI

Sintaxe Leve

Inferência de Tipos def one(): return 1 um = one()

def one() as int: return 1 uno as int = one()

def one(): return "1" ichi as int = one()

Page 14: Linguagem Boo: A wrist friendly language for CLI

Sintaxe Leve

Construção de Objetos Simplificada

import System.Windows.Forms form = Form(Text: "Hello, boo!") form.Controls.Add( Button(Text: "Click me!", Dock: DockStyle.Fill, Click: { print("clicked!") })) form.ShowDialog()

Page 15: Linguagem Boo: A wrist friendly language for CLI

Idades

Atributos Sintáticos

class Person: [getter(Name)] _name as string def constructor([required] name): _name = name

Page 16: Linguagem Boo: A wrist friendly language for CLI

Idades

Atributos Sintáticos

[singleton] class SomeSubSystem: [reader] def QueryData(): pass [writer] def WriteData(): pass [once] def QueryExpensiveData(): pass

Page 17: Linguagem Boo: A wrist friendly language for CLI

Idades

Macro sintáticas

using connection=OpenConnection(): // código protegido pass lock self: // código protegido pass

Page 18: Linguagem Boo: A wrist friendly language for CLI

Extensibilidade

Pipeline de Compilação namespace StyleChecker import Boo.Lang.Compiler import Boo.Lang.Compiler.Ast import Boo.Lang.Compiler.Steps import Boo.Lang.Compiler.Pipelines class StyleCheckerStep(AbstractVisitorCompilerStep): override def Run(): Visit(CompileUnit) override def LeaveClassDefinition(node as ClassDefinition): if not System.Char.IsUpper(node.Name[0]): msg = "Class name '${node.Name}' should start with uppercase letter!" Errors.Add(CompilerError(node, msg)) class StyleCheckerPipeline(CompileToFile): def constructor(): self.Insert(1, StyleCheckerStep())

Page 19: Linguagem Boo: A wrist friendly language for CLI

Expressividade

First Class Functions

callable Function(item) def each(items, action as Function): for item in items: action(item) each([1, 2, 3], print) each([1, 2, 3], { item | print("item: ${item}") }) each([1, 2, 3]) do (item as int): print(item*2) sum = 0 each([1, 2, 3]) do (item as int): sum += item print(sum)

Page 20: Linguagem Boo: A wrist friendly language for CLI

Expressividade

First Class Functions

import System import System.Net import System.Threading url, local = argv client = WebClient() downloadFile = client.DownloadFile call = downloadFile.BeginInvoke(url, local) while not call.IsCompleted: Console.Write(".") Thread.Sleep(50ms) Console.WriteLine()

Page 21: Linguagem Boo: A wrist friendly language for CLI

Expressividade

First Class Generators

oddNumbers = i for i in range(10) if i & 1

def fibonacci(): a, b = 0, 1 while true: yield b a, b = b, a+b for index as int, element in zip(range(5), fibonacci()): print("${index+1}: ${element}")

Page 22: Linguagem Boo: A wrist friendly language for CLI

Produtividade

Console Interativo

Page 23: Linguagem Boo: A wrist friendly language for CLI

http://boo.codehaus.org/

Perguntas?

Page 24: Linguagem Boo: A wrist friendly language for CLI

Contribuindo

http://boo.codehaus.org/Contributing

Page 25: Linguagem Boo: A wrist friendly language for CLI

Obrigado!