Iron Python

11
Tiago Bockholt Powered by

Transcript of Iron Python

Page 1: Iron Python

Tiago Bockholt

Powered by

Page 2: Iron Python

Tiago Bockholt ◦ (2003.2 – 2008.2) Graduação em Eng. da Computação (Poli-UPE)

2006.1 Semestre acadêmico na TU-BS.

2006.2 Desenvolvedor na GNS-Systems (Projeto Datafinder).

2007.1 Desenvolvedor na dotX (Zope e Plone).

2008.1 Desenvolvedor na Ávila Soluções (.NET)

◦ (2009.1 – 2011.1) Mestrado CIN-UFPE.

2009.1 – (dias atuais) Consultor na Ávila Soluções.

Sobre Mim

Page 3: Iron Python

Arquitetura

.NET Framework

Iniciativa da empresa Microsoft, que visa uma plataforma única para desenvolvimento e execução de sistemas e aplicações. Todo e qualquer código gerado para .NET, pode ser executado em qualquer dispositivo que possua um framework de tal plataforma.

Page 4: Iron Python

1. O CLR oferece serviços compartilhados as linguagens .NET.

2. Garbage Collector 3. Compilação JIT (just-in-time 4. Suporte ao Visual Studio.

Compartilhar esses recursos proporciona duas

grandes vantagens aos implementadores de linguagem: é mais fácil implementar uma linguagem porque grande parte do trabalho de engenharia de nível inferior já foi feita; e as linguagens em execução no CLR podem ser integradas tranqüilamente.

Compartilhar as bibliotecas e as estruturas permite que novas linguagens do CLR sejam criadas a partir do trabalho de outras.

CLR (Common Language Runtime)

Page 5: Iron Python

Arquitetura

Python

Python é uma linguagem de programação de alto nível, interpretada, imperativa, orientada a objetos, de tipagem dinâmica e forte.

1. Concebido no final de 1989.

2. 1ª versão lançada em 1994.

3. Atualmente a linguagem é usada em diversas áreas, como servidores de aplicação e computação gráfica.

Page 6: Iron Python

Definição IronPython é uma implementação da linguagem de programação Python escrita em C#, para plataforma.NET e Mono, criada por Jim Hugunin.

A Versão 1.0 foi lançada a 5 de Setembro de 2006[1].

A Versão 2.0 foi lançada a 10 de Dezembro de 2008[2].

IronPython é totalmente escrita em C#.

Arquitetura

IronPython

Page 7: Iron Python

IronPython

Python Binder

Ruby Binder

COM Binder

JavaScript Binder

Object Binder

Dynamic Language Runtime Expression Trees Dynamic Dispatch Call Site Caching

IronPython IronRuby C# VB.NET Others…

Page 8: Iron Python

1. Incluido no .NET Framework 4.

O CLR passará a ter um conjunto de serviços projetados especificamente para atender às necessidades das linguagens dinâmicas.

O DLR agrega funcionalidades como um sistema de tipos dinâmico compartilhado, um modelo de hospedagem padrão e suporte para facilitar a geração rápida de códigos dinâmicos e tabelas de símbolos rápidos.

Com esses recursos adicionais, é muito mais fácil criar implementações de linguagem dinâmica de alta qualidade para o .NET.

Além disso, esses recursos permitem que as linguagens dinâmicas criadas a partir do DLR compartilhem bibliotecas escritas em outras linguagens dinâmicas ou em linguagens estáticas baseadas no CLR (Principal Diferencial).

DLR (Dynamic Language Runtime)

Page 9: Iron Python

DLR (Dynamic Language Runtime)

Interação entre linguagens dinâmicas e linguagens estáticas baseadas no CLR.

Page 10: Iron Python

C# utilizando DLR

Quando os operadores são dynamic… • seleção do tipo do objeto atribuida em tempo de execução • Em tempo de execução, o tipo corrente será dynamic • Qualquer operação terá como resultado um dynamic

Page 11: Iron Python

Conclusões

1. IronPython tira proveito de todas as virtudes de Python.

2. Com o projeto mono, a aplicação usando IronPython fica portável tanto em ambientes Windows como Linux.

3. IronPython permite utilizar o visual studio como ferramenta de desemvolvimento.

4. A consolidação do DLR vai permitir uma maior integração entre as diferentes linguagens de programação. Sejam elas, estáticas ou dinâmicas.

5. Construção de GUI utilizando ironpython pode ser feita WYSIWYG.

6. Reutilização das bibliotecas .NET já implementadas.

7. Permite implementar multiparadigmas no .NET Framework; IronPython suporta os vários paradigmas de programação:

Programação estruturada Programação Orientada a Objeto Programação Funcional