56

Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Embed Size (px)

Citation preview

Page 1: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Python Tools for Visual StudioPython na Microsoftovom .NET-u

Nikola Pleji¢

[email protected]://nikola.plejic.com

DevUG Zagreb, 27.10.2011.

Page 2: Python Tools for Visual Studio: Python na Microsoftovom .NET-u
Page 3: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Outline

1 Python

Uvod

Kratak vodi£ kroz jezik

2 Python Tools for VS

Instalacija

3 DLR i IronPython

Dynamic Language Runtime

Uporaba IronPythona

Page 4: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Python?

>�>�> print(�Hello, world!�)

Hello, world!

Page 5: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Python?

• op¢eniti, objektno-orijentirani high-level jezik

• dinami£ki, strongly typed

• fokus na £itljivost i jednostavnost sintakse

Page 6: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Python?

• op¢eniti, objektno-orijentirani high-level jezik

• dinami£ki, strongly typed

• fokus na £itljivost i jednostavnost sintakse

Page 7: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Python?

• op¢eniti, objektno-orijentirani high-level jezik

• dinami£ki, strongly typed

• fokus na £itljivost i jednostavnost sintakse

Page 8: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

The Zen of Python

>�>�> import this

The Zen of Python, by Tim Peters

Beautiful is better than ugly.

Explicit is better than implicit.

Simple is better than complex.

Complex is better than complicated.

Flat is better than nested.

Sparse is better than dense.

Readability counts.

Special cases aren't special enough to break the rules.

Although practicality beats purity.

Errors should never pass silently.

Unless explicitly silenced.

In the face of ambiguity, refuse the temptation to guess.

There should be one-- and preferably only one --obvious way to do it.

Although that way may not be obvious at first unless you're Dutch.

Now is better than never.

Although never is often better than *right* now.

If the implementation is hard to explain, it's a bad idea.

If the implementation is easy to explain, it may be a good idea.

Namespaces are one honking great idea -- let's do more of those!

Page 9: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Kratka povijest

• nastao krajem 1989. godine

• Guido van Rossum (BDFL � �Benevolent Dictator For Life�)

• Python 2 vs. Python 3

Page 10: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Kratka povijest

• nastao krajem 1989. godine

• Guido van Rossum (BDFL � �Benevolent Dictator For Life�)

• Python 2 vs. Python 3

Page 11: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Kratka povijest

• nastao krajem 1989. godine

• Guido van Rossum (BDFL � �Benevolent Dictator For Life�)

• Python 2 vs. Python 3

Page 12: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Implementacije

• referentna implementacija � CPython

• Jython, IronPython, PyPy

• raznorazni kompajleri (Pyjamas, Pyrex, Cython)

Page 13: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Implementacije

• referentna implementacija � CPython

• Jython, IronPython, PyPy

• raznorazni kompajleri (Pyjamas, Pyrex, Cython)

Page 14: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Implementacije

• referentna implementacija � CPython

• Jython, IronPython, PyPy

• raznorazni kompajleri (Pyjamas, Pyrex, Cython)

Page 15: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Osnovni tipovi podataka

• sve je objekt

• string vs. unicode

• ne i u IronPythonu (string == unicode)

• liste, tuplei

• dictionaries

Page 16: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Osnovni tipovi podataka

• sve je objekt

• string vs. unicode

• ne i u IronPythonu (string == unicode)

• liste, tuplei

• dictionaries

Page 17: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Osnovni tipovi podataka

• sve je objekt

• string vs. unicode

• ne i u IronPythonu (string == unicode)

• liste, tuplei

• dictionaries

Page 18: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Osnovni tipovi podataka

• sve je objekt

• string vs. unicode

• ne i u IronPythonu (string == unicode)

• liste, tuplei

• dictionaries

Page 19: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Comprehensions

• list comprehensions

• dictionary comprehensions

• generatori

• generator comprehensions

Page 20: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Comprehensions

• list comprehensions

• dictionary comprehensions

• generatori

• generator comprehensions

Page 21: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Comprehensions

• list comprehensions

• dictionary comprehensions

• generatori

• generator comprehensions

Page 22: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Objektni model

• klase

• klase su objekti

• metaklase

• �[...] deeper magic than 99% of users should ever worry about.If you wonder whether you need them, you don't (the peoplewho actually need them know with certainty that they needthem, and don't need an explanation about why).� ~ TimPeters

Page 23: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Objektni model

• klase

• klase su objekti

• metaklase

• �[...] deeper magic than 99% of users should ever worry about.If you wonder whether you need them, you don't (the peoplewho actually need them know with certainty that they needthem, and don't need an explanation about why).� ~ TimPeters

Page 24: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Objektni model

• klase

• klase su objekti

• metaklase

• �[...] deeper magic than 99% of users should ever worry about.If you wonder whether you need them, you don't (the peoplewho actually need them know with certainty that they needthem, and don't need an explanation about why).� ~ TimPeters

Page 25: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

�to nam treba?

• distribucija Pythona

• standardni interpreter, ActiveState, IronPython, ...

• Visual Studio ili besplatni Visual Studio Shell

• ne i VS Express!

• Python Tools for Visual Studio1

• IPython2

• alternativni (ne-samo-)Python shell• potreban pyzmq 2.1.43

1http://pytools.codeplex.com/2http://ipython.org/3MSI na https://github.com/zeromq/pyzmq/downloads

Page 26: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

�to nam treba?

• distribucija Pythona

• standardni interpreter, ActiveState, IronPython, ...

• Visual Studio ili besplatni Visual Studio Shell

• ne i VS Express!

• Python Tools for Visual Studio1

• IPython2

• alternativni (ne-samo-)Python shell• potreban pyzmq 2.1.43

1http://pytools.codeplex.com/2http://ipython.org/3MSI na https://github.com/zeromq/pyzmq/downloads

Page 27: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

�to nam treba?

• distribucija Pythona

• standardni interpreter, ActiveState, IronPython, ...

• Visual Studio ili besplatni Visual Studio Shell

• ne i VS Express!

• Python Tools for Visual Studio1

• IPython2

• alternativni (ne-samo-)Python shell• potreban pyzmq 2.1.43

1http://pytools.codeplex.com/2http://ipython.org/3MSI na https://github.com/zeromq/pyzmq/downloads

Page 28: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

�to nam treba?

• distribucija Pythona

• standardni interpreter, ActiveState, IronPython, ...

• Visual Studio ili besplatni Visual Studio Shell

• ne i VS Express!

• Python Tools for Visual Studio1

• IPython2

• alternativni (ne-samo-)Python shell• potreban pyzmq 2.1.43

1http://pytools.codeplex.com/2http://ipython.org/3MSI na https://github.com/zeromq/pyzmq/downloads

Page 29: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

�to dobivamo?

• IntelliSense

• project management

• debugger

• pro�ling4

4samo u VS Ultimate :(

Page 30: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

�to dobivamo?

• IntelliSense

• project management

• debugger

• pro�ling4

4samo u VS Ultimate :(

Page 31: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

�to dobivamo?

• IntelliSense

• project management

• debugger

• pro�ling4

4samo u VS Ultimate :(

Page 32: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

�to dobivamo?

• IntelliSense

• project management

• debugger

• pro�ling4

4samo u VS Ultimate :(

Page 33: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

�to je DLR?

• skup libraryja nad CLR-om koji olak²ava hostanje dinami£kih

jezika

• izvu£en iz ranih verzija IronPythona

• zajedni£ka "podloga� za sve dinami£ke jezike na .NET-u

(IronRuby, IronScheme)

• pro²irenje postoje¢im stati£kim jezicima (dynamic dispatching

@ C# 4.0)

• .NET Framework 4.0 + Mono 2.8+ po defaultu

Page 34: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

�to je DLR?

• skup libraryja nad CLR-om koji olak²ava hostanje dinami£kih

jezika

• izvu£en iz ranih verzija IronPythona

• zajedni£ka "podloga� za sve dinami£ke jezike na .NET-u

(IronRuby, IronScheme)

• pro²irenje postoje¢im stati£kim jezicima (dynamic dispatching

@ C# 4.0)

• .NET Framework 4.0 + Mono 2.8+ po defaultu

Page 35: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

�to je DLR?

• skup libraryja nad CLR-om koji olak²ava hostanje dinami£kih

jezika

• izvu£en iz ranih verzija IronPythona

• zajedni£ka "podloga� za sve dinami£ke jezike na .NET-u

(IronRuby, IronScheme)

• pro²irenje postoje¢im stati£kim jezicima (dynamic dispatching

@ C# 4.0)

• .NET Framework 4.0 + Mono 2.8+ po defaultu

Page 36: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

�to je DLR?

• skup libraryja nad CLR-om koji olak²ava hostanje dinami£kih

jezika

• izvu£en iz ranih verzija IronPythona

• zajedni£ka "podloga� za sve dinami£ke jezike na .NET-u

(IronRuby, IronScheme)

• pro²irenje postoje¢im stati£kim jezicima (dynamic dispatching

@ C# 4.0)

• .NET Framework 4.0 + Mono 2.8+ po defaultu

Page 37: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

�to je DLR?

• skup libraryja nad CLR-om koji olak²ava hostanje dinami£kih

jezika

• izvu£en iz ranih verzija IronPythona

• zajedni£ka "podloga� za sve dinami£ke jezike na .NET-u

(IronRuby, IronScheme)

• pro²irenje postoje¢im stati£kim jezicima (dynamic dispatching

@ C# 4.0)

• .NET Framework 4.0 + Mono 2.8+ po defaultu

Page 38: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Kratka povijest IronPythona

• Jim Hugunin, 2006.

• danas: Microsoft (razvoj na CodePlexu)

• open source (Apache 2.0)

• aktivno razvijan (zadnji release: 21.10.2011.)

Page 39: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Kratka povijest IronPythona

• Jim Hugunin, 2006.

• danas: Microsoft (razvoj na CodePlexu)

• open source (Apache 2.0)

• aktivno razvijan (zadnji release: 21.10.2011.)

Page 40: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Kratka povijest IronPythona

• Jim Hugunin, 2006.

• danas: Microsoft (razvoj na CodePlexu)

• open source (Apache 2.0)

• aktivno razvijan (zadnji release: 21.10.2011.)

Page 41: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Kratka povijest IronPythona

• Jim Hugunin, 2006.

• danas: Microsoft (razvoj na CodePlexu)

• open source (Apache 2.0)

• aktivno razvijan (zadnji release: 21.10.2011.)

Page 42: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Featurei

• ≈ CPython 2.7 uz manje razlike, npr.:

• string == unicode• Python podrºava vi²estruko naslje�ivanje, CLR ne podrºava

• integracija s .NET frameworkom

• Silverlight scripting

Page 43: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Featurei

• ≈ CPython 2.7 uz manje razlike, npr.:

• string == unicode• Python podrºava vi²estruko naslje�ivanje, CLR ne podrºava

• integracija s .NET frameworkom

• Silverlight scripting

Page 44: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Featurei

• ≈ CPython 2.7 uz manje razlike, npr.:

• string == unicode• Python podrºava vi²estruko naslje�ivanje, CLR ne podrºava

• integracija s .NET frameworkom

• Silverlight scripting

Page 45: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Pri£anje s .NET-om

# deklaracija referenci

import clr

clr.AddReference(�System.Xml�)

# namespacevi

import System

from System.Xml import *

xmldoc = XmlDocument()

# alternativno:

# import system

# xmldoc = System.Xml.XmlDocument()

Page 46: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Pri£anje s .NET-om (smjer #2)

• DLR Hosting API (= free scripting!)5

• kompajliranje IronPython aplikacije u .NET assembly

• �While the assemblies produced by the IronPython HostingAPIs are true .NET assemblies, the dynamic nature of thePython language makes it di�cult to use these from other.NET languages. In short, this means that attempting toimport Python types into other .NET languages such as C# isnot recommended.�

5http://dlr.codeplex.com/wikipage?title=Docs%20and%20specs&referringTitle=Documentation

Page 47: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Pri£anje s .NET-om (smjer #2)

• DLR Hosting API (= free scripting!)5

• kompajliranje IronPython aplikacije u .NET assembly

• �While the assemblies produced by the IronPython HostingAPIs are true .NET assemblies, the dynamic nature of thePython language makes it di�cult to use these from other.NET languages. In short, this means that attempting toimport Python types into other .NET languages such as C# isnot recommended.�

5http://dlr.codeplex.com/wikipage?title=Docs%20and%20specs&referringTitle=Documentation

Page 48: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

ASP.NET i IronPython

• WebForms uz ASP.NET Dynamic Language Support

• ASP.NET MVC

• http://www.codevoyeur.com/Articles/Tags/ironpython.aspx• Rubyja²i su bolje pro²li6

6http://github.com/jschementi/ironrubymvc

Page 49: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

ASP.NET i IronPython

• WebForms uz ASP.NET Dynamic Language Support

• ASP.NET MVC

• http://www.codevoyeur.com/Articles/Tags/ironpython.aspx• Rubyja²i su bolje pro²li6

6http://github.com/jschementi/ironrubymvc

Page 50: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Alternative

• Boo 7

• sintaksa inspirirana Pythonom• stati£ki tipiziran (type inferencing)• makroi

• IronRuby 8

• IronScheme? 9

• skoro-pa-R6RS Scheme

7http://boo.codehaus.org/8http://ironruby.net/9http://ironscheme.codeplex.com/

Page 51: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Alternative

• Boo 7

• sintaksa inspirirana Pythonom• stati£ki tipiziran (type inferencing)• makroi

• IronRuby 8

• IronScheme? 9

• skoro-pa-R6RS Scheme

7http://boo.codehaus.org/8http://ironruby.net/9http://ironscheme.codeplex.com/

Page 52: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Alternative

• Boo 7

• sintaksa inspirirana Pythonom• stati£ki tipiziran (type inferencing)• makroi

• IronRuby 8

• IronScheme? 9

• skoro-pa-R6RS Scheme

7http://boo.codehaus.org/8http://ironruby.net/9http://ironscheme.codeplex.com/

Page 53: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Zaklju£ak

• ozbiljan, dobro podrºan dinami£ki jezik na CLR-u i Monou

• vrlo solidan toolchain u razvoju

• £emu sve to?

• brzi prototyping• testiranje .NET assemblyja• skriptiranje .NET i Silverlight aplikacija

Page 54: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Zaklju£ak

• ozbiljan, dobro podrºan dinami£ki jezik na CLR-u i Monou

• vrlo solidan toolchain u razvoju

• £emu sve to?

• brzi prototyping• testiranje .NET assemblyja• skriptiranje .NET i Silverlight aplikacija

Page 55: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Zaklju£ak

• ozbiljan, dobro podrºan dinami£ki jezik na CLR-u i Monou

• vrlo solidan toolchain u razvoju

• £emu sve to?

• brzi prototyping• testiranje .NET assemblyja• skriptiranje .NET i Silverlight aplikacija

Page 56: Python Tools for Visual Studio: Python na Microsoftovom .NET-u

Python Python Tools for VS DLR i IronPython Zaklju£ak

Zaklju£ak

Hvala na paºnji!

Nikola Pleji¢

[email protected]

http://nikola.plejic.com/