AWS Community Day CPH - Three problems of Terraform
Ā
Python Tools for Visual Studio: Python na Microsoftovom .NET-u
1. Python Python Tools for VS DLR i IronPython ZakljuĀ£ak
Python Tools for Visual Studio
Python na Microsoftovom .NET-u
Nikola PlejiĀ¢
nikola@plejic.com
http://nikola.plejic.com
DevUG Zagreb, 27.10.2011.
2.
3. 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
4. Python Python Tools for VS DLR i IronPython ZakljuĀ£ak
Python?
> print(Hello, world!)
Hello, world!
5. Python Python Tools for VS DLR i IronPython ZakljuĀ£ak
Python?
ā¢ opĀ¢eniti, objektno-orijentirani high-level jezik
6. Python Python Tools for VS DLR i IronPython ZakljuĀ£ak
Python?
ā¢ opĀ¢eniti, objektno-orijentirani high-level jezik
ā¢ dinamiĀ£ki, strongly typed
7. 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
8. 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!
9. Python Python Tools for VS DLR i IronPython ZakljuĀ£ak
Kratka povijest
ā¢ nastao krajem 1989. godine
10. Python Python Tools for VS DLR i IronPython ZakljuĀ£ak
Kratka povijest
ā¢ nastao krajem 1989. godine
ā¢ Guido van Rossum (BDFL Benevolent Dictator For Life)
11. 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
12. Python Python Tools for VS DLR i IronPython ZakljuĀ£ak
Implementacije
ā¢ referentna implementacija CPython
13. Python Python Tools for VS DLR i IronPython ZakljuĀ£ak
Implementacije
ā¢ referentna implementacija CPython
ā¢ Jython, IronPython, PyPy
14. Python Python Tools for VS DLR i IronPython ZakljuĀ£ak
Implementacije
ā¢ referentna implementacija CPython
ā¢ Jython, IronPython, PyPy
ā¢ raznorazni kompajleri (Pyjamas, Pyrex, Cython)
15. Python Python Tools for VS DLR i IronPython ZakljuĀ£ak
Osnovni tipovi podataka
ā¢ sve je objekt
16. 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)
17. 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
18. 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
19. Python Python Tools for VS DLR i IronPython ZakljuĀ£ak
Comprehensions
ā¢ list comprehensions
20. Python Python Tools for VS DLR i IronPython ZakljuĀ£ak
Comprehensions
ā¢ list comprehensions
ā¢ dictionary comprehensions
21. Python Python Tools for VS DLR i IronPython ZakljuĀ£ak
Comprehensions
ā¢ list comprehensions
ā¢ dictionary comprehensions
ā¢ generatori
ā¢ generator comprehensions
22. Python Python Tools for VS DLR i IronPython ZakljuĀ£ak
Objektni model
ā¢ klase
23. Python Python Tools for VS DLR i IronPython ZakljuĀ£ak
Objektni model
ā¢ klase
ā¢ klase su objekti
24. 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 people
who actually need them know with certainty that they need
them, and don't need an explanation about why). ~ Tim
Peters
25. Python Python Tools for VS DLR i IronPython ZakljuĀ£ak
āto nam treba?
ā¢ distribucija Pythona
ā¢ standardni interpreter, ActiveState, IronPython, ...
1 http://pytools.codeplex.com/
2 http://ipython.org/
3 MSI na https://github.com/zeromq/pyzmq/downloads
26. 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!
1 http://pytools.codeplex.com/
2 http://ipython.org/
3 MSI na https://github.com/zeromq/pyzmq/downloads
27. 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!
1
ā¢ Python Tools for Visual Studio
1 http://pytools.codeplex.com/
2 http://ipython.org/
3 MSI na https://github.com/zeromq/pyzmq/downloads
28. 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!
1
ā¢ Python Tools for Visual Studio
2
ā¢ IPython
ā¢ alternativni (ne-samo-)Python shell
ā¢ potreban pyzmq 2.1.4
3
1 http://pytools.codeplex.com/
2 http://ipython.org/
3 MSI na https://github.com/zeromq/pyzmq/downloads
29. Python Python Tools for VS DLR i IronPython ZakljuĀ£ak
āto dobivamo?
ā¢ IntelliSense
4 samo u VS Ultimate :(
30. Python Python Tools for VS DLR i IronPython ZakljuĀ£ak
āto dobivamo?
ā¢ IntelliSense
ā¢ project management
4 samo u VS Ultimate :(
31. Python Python Tools for VS DLR i IronPython ZakljuĀ£ak
āto dobivamo?
ā¢ IntelliSense
ā¢ project management
ā¢ debugger
4 samo u VS Ultimate :(
32. Python Python Tools for VS DLR i IronPython ZakljuĀ£ak
āto dobivamo?
ā¢ IntelliSense
ā¢ project management
ā¢ debugger
4
ā¢ proling
4 samo u VS Ultimate :(
33. 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
34. 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
35. 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)
36. 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)
37. 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
38. Python Python Tools for VS DLR i IronPython ZakljuĀ£ak
Kratka povijest IronPythona
ā¢ Jim Hugunin, 2006.
39. Python Python Tools for VS DLR i IronPython ZakljuĀ£ak
Kratka povijest IronPythona
ā¢ Jim Hugunin, 2006.
ā¢ danas: Microsoft (razvoj na CodePlexu)
40. 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)
41. 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.)
42. 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
43. 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
44. 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
45. 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()
46. Python Python Tools for VS DLR i IronPython ZakljuĀ£ak
PriĀ£anje s .NET-om (smjer #2)
5
ā¢ DLR Hosting API (= free scripting!)
5 http://dlr.codeplex.com/wikipage?title=Docs%20and%20specsreferringTitle=Do
47. Python Python Tools for VS DLR i IronPython ZakljuĀ£ak
PriĀ£anje s .NET-om (smjer #2)
5
ā¢ DLR Hosting API (= free scripting!)
ā¢ kompajliranje IronPython aplikacije u .NET assembly
ā¢ While the assemblies produced by the IronPython Hosting
APIs are true .NET assemblies, the dynamic nature of the
Python language makes it dicult to use these from other
.NET languages. In short, this means that attempting to
import Python types into other .NET languages such as C# is
not recommended.
5 http://dlr.codeplex.com/wikipage?title=Docs%20and%20specsreferringTitle=Do
48. Python Python Tools for VS DLR i IronPython ZakljuĀ£ak
ASP.NET i IronPython
ā¢ WebForms uz ASP.NET Dynamic Language Support
6 http://github.com/jschementi/ironrubymvc
49. 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Ā²li
6
6 http://github.com/jschementi/ironrubymvc
50. Python Python Tools for VS DLR i IronPython ZakljuĀ£ak
Alternative
7
ā¢ Boo
ā¢ sintaksa inspirirana Pythonom
ā¢ statiĀ£ki tipiziran (type inferencing)
ā¢ makroi
7 http://boo.codehaus.org/
8 http://ironruby.net/
9 http://ironscheme.codeplex.com/
51. Python Python Tools for VS DLR i IronPython ZakljuĀ£ak
Alternative
7
ā¢ Boo
ā¢ sintaksa inspirirana Pythonom
ā¢ statiĀ£ki tipiziran (type inferencing)
ā¢ makroi
8
ā¢ IronRuby
7 http://boo.codehaus.org/
8 http://ironruby.net/
9 http://ironscheme.codeplex.com/
52. Python Python Tools for VS DLR i IronPython ZakljuĀ£ak
Alternative
7
ā¢ Boo
ā¢ sintaksa inspirirana Pythonom
ā¢ statiĀ£ki tipiziran (type inferencing)
ā¢ makroi
8
ā¢ IronRuby
9
ā¢ IronScheme?
ā¢ skoro-pa-R6RS Scheme
7 http://boo.codehaus.org/
8 http://ironruby.net/
9 http://ironscheme.codeplex.com/
53. Python Python Tools for VS DLR i IronPython ZakljuĀ£ak
ZakljuĀ£ak
ā¢ ozbiljan, dobro podrĀŗan dinamiĀ£ki jezik na CLR-u i Monou
54. 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
55. 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
56. 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/