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

Preview:

Citation preview

Python Python Tools for VS DLR i IronPython Zaklju£ak

Python Tools for Visual StudioPython na Microsoftovom .NET-u

Nikola Pleji¢

nikola@plejic.comhttp://nikola.plejic.com

DevUG Zagreb, 27.10.2011.

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

Python Python Tools for VS DLR i IronPython Zaklju£ak

Python?

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

Hello, world!

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

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

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

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!

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

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

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

Python Python Tools for VS DLR i IronPython Zaklju£ak

Implementacije

• referentna implementacija � CPython

• Jython, IronPython, PyPy

• raznorazni kompajleri (Pyjamas, Pyrex, Cython)

Python Python Tools for VS DLR i IronPython Zaklju£ak

Implementacije

• referentna implementacija � CPython

• Jython, IronPython, PyPy

• raznorazni kompajleri (Pyjamas, Pyrex, Cython)

Python Python Tools for VS DLR i IronPython Zaklju£ak

Implementacije

• referentna implementacija � CPython

• Jython, IronPython, PyPy

• raznorazni kompajleri (Pyjamas, Pyrex, Cython)

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

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

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

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

Python Python Tools for VS DLR i IronPython Zaklju£ak

Comprehensions

• list comprehensions

• dictionary comprehensions

• generatori

• generator comprehensions

Python Python Tools for VS DLR i IronPython Zaklju£ak

Comprehensions

• list comprehensions

• dictionary comprehensions

• generatori

• generator comprehensions

Python Python Tools for VS DLR i IronPython Zaklju£ak

Comprehensions

• list comprehensions

• dictionary comprehensions

• generatori

• generator comprehensions

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

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

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

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

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

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

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

Python Python Tools for VS DLR i IronPython Zaklju£ak

�to dobivamo?

• IntelliSense

• project management

• debugger

• pro�ling4

4samo u VS Ultimate :(

Python Python Tools for VS DLR i IronPython Zaklju£ak

�to dobivamo?

• IntelliSense

• project management

• debugger

• pro�ling4

4samo u VS Ultimate :(

Python Python Tools for VS DLR i IronPython Zaklju£ak

�to dobivamo?

• IntelliSense

• project management

• debugger

• pro�ling4

4samo u VS Ultimate :(

Python Python Tools for VS DLR i IronPython Zaklju£ak

�to dobivamo?

• IntelliSense

• project management

• debugger

• pro�ling4

4samo u VS Ultimate :(

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

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

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

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

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

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.)

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.)

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.)

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.)

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

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

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

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()

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

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

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

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

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/

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/

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/

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

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

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

Python Python Tools for VS DLR i IronPython Zaklju£ak

Zaklju£ak

Hvala na paºnji!

Nikola Pleji¢

nikola@plejic.com

http://nikola.plejic.com/

Recommended