Upload
nikola-plejic
View
559
Download
0
Tags:
Embed Size (px)
Citation preview
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.
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¢
http://nikola.plejic.com/