Iron Python I Dlr
-
Upload
michal-zylinski -
Category
Technology
-
view
1.029 -
download
0
Transcript of Iron Python I Dlr
Ile cukru w cukrzeIronPython i jego zastosowania
Michał Żyliń[email protected]
Agenda
• Wyjaśniam• Zaciekawiam• Inspiruję• Rozwiewam wątpliwości
Zdaniem zwolenników
Źródło: http://xkcd.com/353/
Zdaniem przeciwników
• Wolny• Skryptowy• Dynamiczny (czyli gdzie są moje typy !?)• Egzotyczny (jak sama nazwa wskazuje pewnie
trudno go znaleźć pod naszą szerokością geograficzną)
• … no i te wcięcia…OBCY
Fakty
• Blisko 20-letnia historia• Dojrzały proces rozwoju języka, mocno
angażujący społeczność• Elastyczność, prostota, przenośność• Zen-compliant (patrz: import this)
Klucz do sukcesu - zwięzłość
Programista to nie dziennikarz, nie dostaje pieniędzy za „wierszówkę”
Klucz do sukcesu - czytelność
public static class Math{ public static decimal Abs(decimal value); public static double Abs(double value); public static float Abs(float value); public static int Abs(int value); public static long Abs(long value); public static sbyte Abs(sbyte value); public static short Abs(short value); ...}
„Duck typing” - Metafora kaczki sprawdza się zaskakująco skutecznie
•Uważasz, że twój kolega to idiota?
Zabezpieczaj się Stosuj testy jednostkowe Porozmawiaj z szefem
Klucz do sukcesu - baterie
• Bardzo bogata biblioteka standardowa
• Jeszcze więcej projektów 3rd party
• Operacje na plikach:– Difflib– CSV– Filecmp– Shutil– ConfigParser
• Kryptografia:– Hashlib– Hmac– Md5– Sha
• Kompresja:– Zlib– Gzip– Bz2– Zipfile– Tarfile
• Programowanie WWW (klient):– Cgi– Urllib– Httplib– Ftplib– Smtplib– Imaplib– Nntplib– Telnetlib– Urlparse
• Programowanie WWW (serwer):– SocketServer– SimpleHTTPServer
Ułatwienia dla programistów:PydocDoctestUnittestDebuggerProfiler
Utrwalanie danych:Pickle/cPickleShelveBsddbSqlite3
Klucz do sukcesu - elastyczność
Pomysł SkryptModuł (czyt.
biblioteka) lubaplikacja
Kaczki i inne takie
Python na świecie
• Kto korzysta: Google, Yahoo, YouTube, Pixar, Sony…
• Główne zastosowania: serwisy WWW, skryptowanie, badania, projekty integracyjne
• Sztandarowe projekty:– Django (patrz grono.net)– Pylons (patrz webhosting.pl)
Implementacje
• CPython – najpopularniejsza, uznawana za referencyjną– Obecnie dostępna w wersjach 2.6.x oraz 3.0.x– http://www.python.org
• Jython – 100% Java– Łatwa integracja z bibliotekami JDK– Trudny do przewidzenia rozwój (oficjalna stabilna wersja to 2.2)– http://www.jython.org
• PyPy (http://codespeak.net/pypy/dist/pypy/doc/home.html)
• IronPython – 100% .NET– http://www.codeplex.com/IronPython
Python a Microsoft
• Python for Windows Extensions– PythonWin – prosty edytor (kolorowanie składni,
podpowiedzi) + interaktywna konsola– Zbiór modułów pozwalających na integrację z
Windows (odbc, gui, process, pipe, net, clipboard, shell…)
– Integracja z komponentami COM (klient lub serwer)
Python w świecie Microsoft
Dlaczego IronPython?
• Autorem jest Jim Hugunin, inicjator implementacji Jythona (Jpythona)
• Subiektywne benchmarki (pystone) – IP 1.7x szybszy od CPythona
• Wersja 2.0 – 2x szybsza• GIL-free (nareszcie!)
IP – założenia projektowe
• Pełna implementacja języka– Gotowa do użycia przez doświadczonych programistów– Kompatybilna (testy regresyjne, biblioteki)– Brak efektu gonienia króliczka
• Stabilna Wersja 2.0 (kompatybilna z CPython 2.5)• rozwijana wersja 2.6 (kompatybilna z numeracją CPythona )
• Dostęp do dobrodziejstw .NET– Współpraca z innymi językami dostępnymi na platformie– Konsumpcja bibliotek standardowych– … oraz gotowych narzędzi (VS, debugger, profiler…)
• Warto zajrzeć do VS 2008 SDK
– Przykład wykorzystania DLR
Technikalia
Python IronPython
Kod źródłowy
(*.py)
Bajtkod (*.pyc)
Interpreter
(python.exe)
Biblioteki zewnętrzne
+ DLR
Dynamic Language Runtime
PythonBinder
RubyBinder
COMBinder
JavaScriptBinder
ObjectBinder
Dynamic Language RuntimeExpression Trees Dynamic Dispatch Call Site Caching
IronPython IronRuby C# VB.NET Others…
IronPython w przykładach
Integracja z .NET – osadzanie 1/3
• Cel: rozszerzanie funkcjonalności (istniejących) aplikacji .NET poprzez skrypty tworzone w IP
• Scenariusze:– Konsola dla zaawansowanych użytkowników– Zastępca/następca VBA– Otwarta architektura pozwalająca na tworzenia
własnych rozszerzeń
Jeśli ma działać z .NET 2.0
IronPython
Dynamic Language Runtime
Integracja z .NET-osadzanie 2/3
Krok 1: Dodaj referencje do:– Microsoft.Scripting.dll– Microsoft.Scripting.Core.dll– IronPython.dll– IronPython.Modules.dll– Microsoft.Scripting.ExtensionAttribute.dll
Integracja z .NET – osadzanie 3/3
Krok 2:
•CreateEngine()
Zainicjuj silnik skryptowy
•CreateScope()
Określ zakres widoczności dla
skryptu •CreateScriptSourceFrom File()
•CreateScriptSourceFromString()
Wskaż źródło skryptu
•Execute()
Wykonaj Skrypt
Osadzanie IP w aplikacjach .NET
IP a WWW
• Prace dotyczą zarówno ASP.NET i ASP.NET MVC• Za:– Działa – (Szczególnie w przypadku MVC) ułatwia
kodowanie (potencjalnie łatwiejsze TDD)– Spark – silnik widoków wykorzystujący m.in. IP
• Przeciw:– Brak sensownej integracji z VS (projekty,
intellisense itd.)
IP i ASP.NET
Silverlight<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" RuntimeVersion="3.0.40307.00" EntryPointAssembly="Microsoft.Scripting.Silverlight" EntryPointType="Microsoft.Scripting.Silverlight.DynamicApplication">
<Deployment.Parts> <!-- Add additional assemblies here --> <AssemblyPart Source="Microsoft.Scripting.Silverlight.dll" /> <AssemblyPart Source="Microsoft.Scripting.ExtensionAttribute.dll" /> <AssemblyPart Source="Microsoft.Scripting.Core.dll" /> <AssemblyPart Source="Microsoft.Scripting.dll" /> <AssemblyPart Source="IronPython.dll" /> <AssemblyPart Source="IronPython.Modules.dll" /> </Deployment.Parts></Deployment>
Chiron – magik na pokładzie
IP i Silverlight
Ku chwale platformy
• Języki dynamiczne pokazują w praktyce elastyczność i uniwersalność .NET
• Języki statyczne coraz częściej inspirują się konkurencją:– Patrz: wyrażenia lambda, typy anonimowe, typy
domniemane (var)– Wpływ jeszcze bardziej widoczny w VS 2010 (C#
4.0, F#)
Ku chwale platformy 2/2Calculator calc = GetCalculator();int sum = calc.Add(10, 20);
dynamic calc = GetCalculator(); int sum = calc.Add(10, 20);
C# 4.0
C# 3.0object calc = GetCalculator();Type calcType = calc.GetType(); object res = calcType.InvokeMember("Add", BindingFlags.InvokeMethod, null, new object[] { 10, 20 }); int sum = Convert.ToInt32(res);
Podsumowanie
• Języki dynamiczne stanowią istotny element rozwoju platformy .NET
• Warto znać ich rolę i wykorzystać potencjał
• IronPython to ciekawa propozycja zarówno dla środowiska MS, jak i open source
Zasoby
• Strona główna projektuhttp://www.codeplex.com/IronPython• ASP.NET i języki dynamiczne http://aspnet.codeplex.com/Wiki/View.aspx?title=Dynamic%20Language%20Support• DLR w Silverlighthttp://www.codeplex.com/sdlsdk• Ciekawostkihttp://www.voidspace.org.uk/ironpython/index.shtmlhttp://www.voidspace.org.uk/ironpython/planet/http://www.resolversystems.com/http://blogs.msdn.com/michalz
DYGRESJA
BizSpark dla każdego
BizSpark - oferta
Narzędzia do użytku wewnętrznego• Live Workspace (w miarę
dostępności)
Licencje produkcyjne dla aplikacji hostowanych • Windows Server• SQL Server• SharePoint Portal Server• Systems Center• BizTalk Server• Azure (w miarę dostępności)
Pakiet narzędzi• Expression Studio • VS TS w/MSDN Premium• Team Foundation Server (TFS)
Wymagania:• Kryteria:
– Organizacja zajmuje się tworzeniem oprogramowania (produktu lub usługi)
– Mniej niż 3 lata na rynku– Roczny przychód poniżej 0,5 mln USD – Działalność prywatna
• Licencje produkcyjne dotyczą wyłącznie rozwiązań typu Software as a Service, dostępnych publicznie poprzez internet.• Program trwa 3 lata:
– Wymagane jest coroczne przedłużanie członkostwa (weryfikacja statusu prawnego przedsiębiorstwa)
– Opłata członkowska wynosi 100 USD (płatne po zakończeniu uczestnictwa)
BizSpark - jak zacząć?
Witamy w BizSpark!
Wypełnij formularz rejestracyjny.
Po przejściu weryfikacji otrzymasz e-mailem unikalny identyfikator.
Wybierz i skontaktuj się z jednym z lokalnych partnerów programu (network partners).
Wejdź na stronę www.microsoft.com/BizSpark
BizSpark - bonusy
• Hosting– Oferta przygotowana wspólnie z home.pl– Serwer współdzielony – 50% zniżki– Serwer dedykowany – 25% zniżki
• 2GB RAM• AMD Opteron 2212 Dual 2.0 GHz• Dyski twarde 2*160GB• Transfer 100GB
• Edukacja– Dostęp do programu Metro– Zniżki na szkolenia w Onex Group
http://www.microsoft.com/BizSpark
Q&A