Iron Python I Dlr

40
Ile cukru w cukrze IronPython i jego zastosowania Michał Żyliński Michal.Zylinski@microsoft .com

Transcript of Iron Python I Dlr

Page 1: Iron Python I Dlr

Ile cukru w cukrzeIronPython i jego zastosowania

Michał Żyliń[email protected]

Page 2: Iron Python I Dlr

Agenda

• Wyjaśniam• Zaciekawiam• Inspiruję• Rozwiewam wątpliwości

Page 3: Iron Python I Dlr

Zdaniem zwolenników

Źródło: http://xkcd.com/353/

Page 4: Iron Python I Dlr

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

Page 5: Iron Python I Dlr

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)

Page 6: Iron Python I Dlr

Klucz do sukcesu - zwięzłość

Programista to nie dziennikarz, nie dostaje pieniędzy za „wierszówkę”

Page 7: Iron Python I Dlr

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

Page 8: Iron Python I Dlr

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

Page 9: Iron Python I Dlr

Klucz do sukcesu - elastyczność

Pomysł SkryptModuł (czyt.

biblioteka) lubaplikacja

Page 10: Iron Python I Dlr

Kaczki i inne takie

Page 11: Iron Python I Dlr

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)

Page 12: Iron Python I Dlr

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

Page 13: Iron Python I Dlr

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)

Page 14: Iron Python I Dlr

Python w świecie Microsoft

Page 15: Iron Python I Dlr

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

Page 16: Iron Python I Dlr

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

Page 17: Iron Python I Dlr

Technikalia

Python IronPython

Kod źródłowy

(*.py)

Bajtkod (*.pyc)

Interpreter

(python.exe)

Biblioteki zewnętrzne

+ DLR

Page 18: Iron Python I Dlr

Dynamic Language Runtime

PythonBinder

RubyBinder

COMBinder

JavaScriptBinder

ObjectBinder

Dynamic Language RuntimeExpression Trees Dynamic Dispatch Call Site Caching

IronPython IronRuby C# VB.NET Others…

Page 19: Iron Python I Dlr

IronPython w przykładach

Page 20: Iron Python I Dlr

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ń

Page 21: Iron Python I Dlr

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

Page 22: Iron Python I Dlr

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

Page 23: Iron Python I Dlr

Osadzanie IP w aplikacjach .NET

Page 24: Iron Python I Dlr

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

Page 25: Iron Python I Dlr

IP i ASP.NET

Page 26: Iron Python I Dlr

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

Page 27: Iron Python I Dlr

IP i Silverlight

Page 28: Iron Python I Dlr

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

Page 29: Iron Python I Dlr

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

Page 30: Iron Python I Dlr

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

Page 31: Iron Python I Dlr

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

Page 32: Iron Python I Dlr

DYGRESJA

Page 33: Iron Python I Dlr

BizSpark dla każdego

Page 34: Iron Python I Dlr

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)

Page 35: Iron Python I Dlr

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

Page 37: Iron Python I Dlr

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

Page 38: Iron Python I Dlr

http://www.microsoft.com/BizSpark

Page 39: Iron Python I Dlr

Q&A