SlideShare a Scribd company logo
1 of 25
Download to read offline
Rodrigo B. de Oliveira
déspota
(rbo@acm.org)
Era uma vez
Um programador apaixonado pelo
framework .net
Era uma vez
Um revoltado programador C# com Síndrome do Túnel do Carpo
E ele experimentava...
Python, Ruby, ...
●Tríade
●Linguagem
●Ambiente de Execução
●Bibliotecas
●
Mas sua paixão...
BCL
●CTS
●Metadados
●Reference and Value types
●Delegates
●Entre outras coisinhas
●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.
Interlúdio
Programadores e suas idades
Reusabilidade
●Extensibilidade
●Entre outras
●
Mãe, eu quero
Uma sintaxe leve
●Extensibilidade, Expressividade
●Produtividade!
●Trocar figurinhas com outras linguagens
●Uma biblioteca de classes bem pensada
●Ser multiplataforma
●
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()
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
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()
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()
Idades
Atributos Sintáticos
class Person:
[getter(Name)]
_name as string

def constructor([required]
name):
_name = name
Idades
Atributos Sintáticos
[singleton]
class SomeSubSystem:
[reader]
def QueryData():
pass
[writer]
def WriteData():
pass
[once]
def
QueryExpensiveData():
pass
Idades
Macro sintáticas
using
connection=OpenConnection():
// código protegido
pass

lock self:
// código protegido
pass
Extensibilidade
Pipeline de Compilação
namespace StyleChecker
import
import
import
import

Boo.Lang.Compiler
Boo.Lang.Compiler.Ast
Boo.Lang.Compiler.Steps
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())
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)
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()
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}")
Produtividade
Console Interativo
Perguntas?

http://boo.codehaus.org/
Contribuindo

http://boo.codehaus.org/Contributing
Obrigado!

More Related Content

Similar to Uma nova linguagem de programação .NET: introdução à linguagem Boo

Entendendo Frameworks web com Python
Entendendo Frameworks web com PythonEntendendo Frameworks web com Python
Entendendo Frameworks web com PythonLuiz Aldabalde
 
Entendendo Framework Web com Python
Entendendo Framework Web com PythonEntendendo Framework Web com Python
Entendendo Framework Web com PythonPythOnRio
 
Microsoft S2B - C# ASP.NET
Microsoft S2B - C# ASP.NETMicrosoft S2B - C# ASP.NET
Microsoft S2B - C# ASP.NETphilipsoares
 
Evolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicEvolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicRicardo Guerra Freitas
 
DotNet Framework e Orientação a Objetos 1 - Introdução
DotNet Framework e Orientação a Objetos 1 - IntroduçãoDotNet Framework e Orientação a Objetos 1 - Introdução
DotNet Framework e Orientação a Objetos 1 - IntroduçãoLorival Smolski Chapuis
 
TOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONI
TOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONITOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONI
TOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONIFábio Delboni
 
Linguagem Python
Linguagem PythonLinguagem Python
Linguagem PythonNatã Melo
 
Construindo Chatbots em Node.js
Construindo Chatbots em Node.jsConstruindo Chatbots em Node.js
Construindo Chatbots em Node.jsFelipe Pedroso
 
Tutorial Python ed. #2
Tutorial Python ed. #2Tutorial Python ed. #2
Tutorial Python ed. #2Fabio Spanhol
 
TypeScript - Campus party 2013
TypeScript - Campus party 2013TypeScript - Campus party 2013
TypeScript - Campus party 2013Giovanni Bassi
 
S2 b desenvolvimento de sistemas [reparado]
S2 b   desenvolvimento de sistemas [reparado]S2 b   desenvolvimento de sistemas [reparado]
S2 b desenvolvimento de sistemas [reparado]Milena Rebouças
 
Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação PythonJunior Sobrenome
 
Curso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsCurso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsHelio Colombe
 
Git e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedorGit e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedorFelipe Pedroso
 
python_para_desenvolvedores.pdf
python_para_desenvolvedores.pdfpython_para_desenvolvedores.pdf
python_para_desenvolvedores.pdfProfIvanSaboia
 

Similar to Uma nova linguagem de programação .NET: introdução à linguagem Boo (20)

Linguagem c
Linguagem cLinguagem c
Linguagem c
 
Csharp
CsharpCsharp
Csharp
 
Entendendo Frameworks web com Python
Entendendo Frameworks web com PythonEntendendo Frameworks web com Python
Entendendo Frameworks web com Python
 
Entendendo Framework Web com Python
Entendendo Framework Web com PythonEntendendo Framework Web com Python
Entendendo Framework Web com Python
 
Microsoft S2B - C# ASP.NET
Microsoft S2B - C# ASP.NETMicrosoft S2B - C# ASP.NET
Microsoft S2B - C# ASP.NET
 
Evolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual BasicEvolução do .NET Framework e do Visual Basic
Evolução do .NET Framework e do Visual Basic
 
DotNet Framework e Orientação a Objetos 1 - Introdução
DotNet Framework e Orientação a Objetos 1 - IntroduçãoDotNet Framework e Orientação a Objetos 1 - Introdução
DotNet Framework e Orientação a Objetos 1 - Introdução
 
15. introducao ao c++
15. introducao ao c++15. introducao ao c++
15. introducao ao c++
 
TOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONI
TOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONITOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONI
TOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONI
 
Linguagem Python
Linguagem PythonLinguagem Python
Linguagem Python
 
Construindo Chatbots em Node.js
Construindo Chatbots em Node.jsConstruindo Chatbots em Node.js
Construindo Chatbots em Node.js
 
Tutorial Python ed. #2
Tutorial Python ed. #2Tutorial Python ed. #2
Tutorial Python ed. #2
 
TypeScript - Campus party 2013
TypeScript - Campus party 2013TypeScript - Campus party 2013
TypeScript - Campus party 2013
 
S2 b desenvolvimento de sistemas [reparado]
S2 b   desenvolvimento de sistemas [reparado]S2 b   desenvolvimento de sistemas [reparado]
S2 b desenvolvimento de sistemas [reparado]
 
Linguagem de Programação Python
Linguagem de Programação PythonLinguagem de Programação Python
Linguagem de Programação Python
 
Curso de Python (Básico) - Português
Curso de Python (Básico) - PortuguêsCurso de Python (Básico) - Português
Curso de Python (Básico) - Português
 
Python tutorial-ed3
Python tutorial-ed3Python tutorial-ed3
Python tutorial-ed3
 
Git e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedorGit e Github: qual a importância dessas ferramentas para o desenvolvedor
Git e Github: qual a importância dessas ferramentas para o desenvolvedor
 
Introducao ao .Net
Introducao ao .NetIntroducao ao .Net
Introducao ao .Net
 
python_para_desenvolvedores.pdf
python_para_desenvolvedores.pdfpython_para_desenvolvedores.pdf
python_para_desenvolvedores.pdf
 

More from Alessandro Binhara

Uma breve introdução ao Big Data e Inteligência Artificial.pptx
Uma breve introdução ao Big Data e Inteligência Artificial.pptxUma breve introdução ao Big Data e Inteligência Artificial.pptx
Uma breve introdução ao Big Data e Inteligência Artificial.pptxAlessandro Binhara
 
BigData e internte das coisas aplicada a engenharia
BigData e internte das coisas aplicada a engenhariaBigData e internte das coisas aplicada a engenharia
BigData e internte das coisas aplicada a engenhariaAlessandro Binhara
 
Case RDStation: Construindo DataLakes com Apache Hadoop em cloud agnóstica
Case RDStation: Construindo DataLakes com Apache Hadoop em cloud agnósticaCase RDStation: Construindo DataLakes com Apache Hadoop em cloud agnóstica
Case RDStation: Construindo DataLakes com Apache Hadoop em cloud agnósticaAlessandro Binhara
 
Latinoware 2019 - DEsenvolvimento mobile em Nivel jedi
Latinoware 2019 - DEsenvolvimento mobile em Nivel jediLatinoware 2019 - DEsenvolvimento mobile em Nivel jedi
Latinoware 2019 - DEsenvolvimento mobile em Nivel jediAlessandro Binhara
 
2019 latinoware - O mundo novo da realidade virtual
2019 latinoware - O mundo novo da realidade virtual2019 latinoware - O mundo novo da realidade virtual
2019 latinoware - O mundo novo da realidade virtualAlessandro Binhara
 
Realidade Virtual e a Ciência de Dados -latinoware
Realidade Virtual e a Ciência de Dados -latinowareRealidade Virtual e a Ciência de Dados -latinoware
Realidade Virtual e a Ciência de Dados -latinowareAlessandro Binhara
 
Realidade Virtual e a Ciência de Dados
Realidade Virtual e a Ciência de DadosRealidade Virtual e a Ciência de Dados
Realidade Virtual e a Ciência de DadosAlessandro Binhara
 
A IMPORTÂNCIA DA PARTICIPAÇÃO NA GESTÃO DE PROJETOS TECNOLÓGICOS INOVADORES:...
A IMPORTÂNCIA DA PARTICIPAÇÃO NA  GESTÃO DE PROJETOS TECNOLÓGICOS INOVADORES:...A IMPORTÂNCIA DA PARTICIPAÇÃO NA  GESTÃO DE PROJETOS TECNOLÓGICOS INOVADORES:...
A IMPORTÂNCIA DA PARTICIPAÇÃO NA GESTÃO DE PROJETOS TECNOLÓGICOS INOVADORES:...Alessandro Binhara
 
BIG DATA & IoT: Tecnologias e  Aplicações
BIG DATA & IoT: Tecnologias e  AplicaçõesBIG DATA & IoT: Tecnologias e  Aplicações
BIG DATA & IoT: Tecnologias e  AplicaçõesAlessandro Binhara
 
Introduçãoo aws, escalando uma aplicação Web
Introduçãoo aws, escalando uma aplicação WebIntroduçãoo aws, escalando uma aplicação Web
Introduçãoo aws, escalando uma aplicação WebAlessandro Binhara
 
Desenvolvimento de Games para Mobile.
Desenvolvimento de Games para Mobile.Desenvolvimento de Games para Mobile.
Desenvolvimento de Games para Mobile.Alessandro Binhara
 
Curso C# em Mono - Orientação a Objeto Basico
Curso C# em Mono - Orientação a Objeto BasicoCurso C# em Mono - Orientação a Objeto Basico
Curso C# em Mono - Orientação a Objeto BasicoAlessandro Binhara
 
Apresentação Final a FINEP Projeto MonoBasic
Apresentação Final a FINEP Projeto MonoBasicApresentação Final a FINEP Projeto MonoBasic
Apresentação Final a FINEP Projeto MonoBasicAlessandro Binhara
 

More from Alessandro Binhara (20)

Uma breve introdução ao Big Data e Inteligência Artificial.pptx
Uma breve introdução ao Big Data e Inteligência Artificial.pptxUma breve introdução ao Big Data e Inteligência Artificial.pptx
Uma breve introdução ao Big Data e Inteligência Artificial.pptx
 
BigData e internte das coisas aplicada a engenharia
BigData e internte das coisas aplicada a engenhariaBigData e internte das coisas aplicada a engenharia
BigData e internte das coisas aplicada a engenharia
 
Case RDStation: Construindo DataLakes com Apache Hadoop em cloud agnóstica
Case RDStation: Construindo DataLakes com Apache Hadoop em cloud agnósticaCase RDStation: Construindo DataLakes com Apache Hadoop em cloud agnóstica
Case RDStation: Construindo DataLakes com Apache Hadoop em cloud agnóstica
 
Latinoware 2019 - DEsenvolvimento mobile em Nivel jedi
Latinoware 2019 - DEsenvolvimento mobile em Nivel jediLatinoware 2019 - DEsenvolvimento mobile em Nivel jedi
Latinoware 2019 - DEsenvolvimento mobile em Nivel jedi
 
2019 latinoware - O mundo novo da realidade virtual
2019 latinoware - O mundo novo da realidade virtual2019 latinoware - O mundo novo da realidade virtual
2019 latinoware - O mundo novo da realidade virtual
 
Realidade Virtual e a Ciência de Dados -latinoware
Realidade Virtual e a Ciência de Dados -latinowareRealidade Virtual e a Ciência de Dados -latinoware
Realidade Virtual e a Ciência de Dados -latinoware
 
Realidade Virtual e a Ciência de Dados
Realidade Virtual e a Ciência de DadosRealidade Virtual e a Ciência de Dados
Realidade Virtual e a Ciência de Dados
 
A IMPORTÂNCIA DA PARTICIPAÇÃO NA GESTÃO DE PROJETOS TECNOLÓGICOS INOVADORES:...
A IMPORTÂNCIA DA PARTICIPAÇÃO NA  GESTÃO DE PROJETOS TECNOLÓGICOS INOVADORES:...A IMPORTÂNCIA DA PARTICIPAÇÃO NA  GESTÃO DE PROJETOS TECNOLÓGICOS INOVADORES:...
A IMPORTÂNCIA DA PARTICIPAÇÃO NA GESTÃO DE PROJETOS TECNOLÓGICOS INOVADORES:...
 
Curso de Férias - Robótica
Curso de Férias -  Robótica Curso de Férias -  Robótica
Curso de Férias - Robótica
 
BIG DATA & IoT: Tecnologias e  Aplicações
BIG DATA & IoT: Tecnologias e  AplicaçõesBIG DATA & IoT: Tecnologias e  Aplicações
BIG DATA & IoT: Tecnologias e  Aplicações
 
Introduçãoo aws, escalando uma aplicação Web
Introduçãoo aws, escalando uma aplicação WebIntroduçãoo aws, escalando uma aplicação Web
Introduçãoo aws, escalando uma aplicação Web
 
Bigadata casese opotunidades
Bigadata casese opotunidadesBigadata casese opotunidades
Bigadata casese opotunidades
 
Xamarin plataform
Xamarin plataformXamarin plataform
Xamarin plataform
 
Desenvolvimento de Games para Mobile.
Desenvolvimento de Games para Mobile.Desenvolvimento de Games para Mobile.
Desenvolvimento de Games para Mobile.
 
Games imersivos
Games imersivosGames imersivos
Games imersivos
 
Abertura - interopmix2014
Abertura - interopmix2014Abertura - interopmix2014
Abertura - interopmix2014
 
Curso C# em Mono - Orientação a Objeto Basico
Curso C# em Mono - Orientação a Objeto BasicoCurso C# em Mono - Orientação a Objeto Basico
Curso C# em Mono - Orientação a Objeto Basico
 
Treinamento csharp mono
Treinamento csharp monoTreinamento csharp mono
Treinamento csharp mono
 
Int305 projeto mono-final
Int305 projeto mono-finalInt305 projeto mono-final
Int305 projeto mono-final
 
Apresentação Final a FINEP Projeto MonoBasic
Apresentação Final a FINEP Projeto MonoBasicApresentação Final a FINEP Projeto MonoBasic
Apresentação Final a FINEP Projeto MonoBasic
 

Uma nova linguagem de programação .NET: introdução à linguagem Boo