Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Ile cukru w cukrze
IronPython i jego zastosowania

                      Michał Żylioski
      Michal.Zylinski@microsoft.c...
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 ...
Fakty
• Blisko 20-letnia historia
• Dojrzały proces rozwoju języka, mocno
  angażujący społecznośd
• Elastycznośd, prostot...
Klucz do sukcesu - zwięzłość




               Programista to nie dziennikarz, nie
               dostaje pieniędzy za „w...
Klucz do sukcesu - czytelność
 public static class Math
 {
    public static decimal Abs(decimal value);   „Duck typing” -...
Klucz do sukcesu - baterie
• Bardzo bogata biblioteka standardowa
•   Operacje na plikach:   •   Programowanie WWW (klient...
Klucz do sukcesu - elastyczność
Kaczki i inne takie
Python na świecie
• Kto korzysta: Google, Yahoo, YouTube, Pixar,
  Sony…
• Główne zastosowania: serwisy WWW,
  skryptowani...
Implementacje
• CPython – najpopularniejsza, uznawana za referencyjną
   – Obecnie dostępna w wersjach 2.6.x oraz 3.0.x
  ...
Python a Microsoft
• Python for Windows Extensions
  – PythonWin – prosty edytor (kolorowanie
    składni, podpowiedzi) + ...
Python w świecie Microsoft
Dlaczego IronPython?
• Autorem jest Jim Hugunin, inicjator
  implementacji Jythona (Jpythona)
• Subiektywne benchmarki (py...
IP – założenia projektowe
• Pełna implementacja języka
   – Gotowa do użycia przez doświadczonych programistów
   – Kompat...
Technikalia
Python                                      IronPython
                Biblioteki
               zewnętrzne


...
Dynamic Language Runtime
IronPython      IronRuby          C#           VB.NET         Others…



             Dynamic Lan...
IronPython w przykładach
Integracja z .NET – osadzanie 1/3
• Cel: rozszerzanie funkcjonalności (istniejących)
  aplikacji .NET poprzez skrypty twor...
Integracja z .NET-osadzanie 2/3
Krok 1:
Dodaj referencje do:
  – Microsoft.Scripting.dll
                                 ...
Integracja z .NET – osadzanie 3/3
Krok 2:


                                   Określ zakres
                             ...
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 kodowa...
IP i ASP.NET
Silverlight
<Deployment xmlns=quot;http://schemas.microsoft.com/client/2007/deploymentquot;
    xmlns:x=quot;http://schema...
IP i Silverlight
Ku chwale platformy
• Języki dynamiczne pokazują w praktyce
  elastycznośd i uniwersalnośd .NET
• Języki statyczne coraz c...
Ku chwale platformy 2/2
                   Calculator calc = GetCalculator();
                   int sum = calc.Add(10, 20...
Podsumowanie
• Języki dynamiczne stanowią istotny element
  rozwoju platformy .NET

• Warto znad ich rolę i wykorzystad po...
Zasoby
• Strona główna projektu
http://www.codeplex.com/IronPython
• ASP.NET i języki dynamiczne
http://aspnet.codeplex.co...
DYGRESJA
BizSpark dla każdego
BizSpark - oferta
Pakiet narzędzi                      Wymagania:
 • Expression Studio
                                   ...
BizSpark - jak zacząć?
          Wejdź na stronę www.microsoft.com/BizSpark


Wybierz i skontaktuj się z jednym z lokalnyc...
BizSpark - partnerzy
BizSpark - bonusy
• Hosting
  – Oferta przygotowana wspólnie z home.pl
  – Serwer współdzielony – 50% zniżki
  – Serwer de...
Q&A
Dziękuję!
Michal.Zylinski@microsoft.com
Iron Python I Dlr
Upcoming SlideShare
Loading in …5
×

Iron Python I Dlr

1,296 views

Published on

Published in: Technology, Education
  • Be the first to comment

  • Be the first to like this

Iron Python I Dlr

  1. 1. Ile cukru w cukrze IronPython i jego zastosowania Michał Żylioski Michal.Zylinski@microsoft.com
  2. 2. Agenda • Wyjaśniam • Zaciekawiam • Inspiruję • Rozwiewam wątpliwości
  3. 3. Zdaniem zwolenników Źródło: http://xkcd.com/353/
  4. 4. Zdaniem przeciwników • Wolny • Skryptowy • Dynamiczny (czyli gdzie są moje typy !?) • Egzotyczny (jak sama nazwa wskazuje pewnie trudno go znaleźd pod naszą szerokością geograficzną) • … no i te wcięcia…
  5. 5. Fakty • Blisko 20-letnia historia • Dojrzały proces rozwoju języka, mocno angażujący społecznośd • Elastycznośd, prostota, przenośnośd • Zen-compliant (patrz: import this)
  6. 6. Klucz do sukcesu - zwięzłość Programista to nie dziennikarz, nie dostaje pieniędzy za „wierszówkę”
  7. 7. Klucz do sukcesu - czytelność public static class Math { public static decimal Abs(decimal value); „Duck typing” - Metafora public static double Abs(double value); kaczki sprawdza się public static float Abs(float value); zaskakująco skutecznie public static int Abs(int value); public static long Abs(long value); public static sbyte Abs(sbyte value); public static short Abs(short value); ... } •Uważasz, że twój kolega to idiota? Zabezpieczaj się Stosuj testy jednostkowe Porozmawiaj z szefem
  8. 8. Klucz do sukcesu - baterie • Bardzo bogata biblioteka standardowa • Operacje na plikach: • Programowanie WWW (klient): Ułatwienia dla programistów: – Difflib – Cgi Pydoc – CSV – Urllib Doctest Unittest – Filecmp – Httplib Debugger – Shutil – Ftplib Profiler – ConfigParser – Smtplib Utrwalanie danych: • Kryptografia: – Imaplib Pickle/cPickle – Nntplib Shelve – Hashlib Bsddb – Hmac – Telnetlib Sqlite3 – Md5 – Urlparse – Sha • Programowanie WWW (serwer): • Kompresja: – SocketServer – Zlib – SimpleHTTPServer – Gzip – Bz2 – Zipfile – Tarfile • Jeszcze więcej projektów 3rd party
  9. 9. Klucz do sukcesu - elastyczność
  10. 10. Kaczki i inne takie
  11. 11. 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)
  12. 12. 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
  13. 13. 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)
  14. 14. Python w świecie Microsoft
  15. 15. 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!)
  16. 16. 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 zajrzed do VS 2008 SDK – Przykład wykorzystania DLR
  17. 17. Technikalia Python IronPython Biblioteki zewnętrzne Kod źródłowy Bajtkod Interpreter (*.py) (*.pyc) (python.exe) + DLR
  18. 18. Dynamic Language Runtime IronPython IronRuby C# VB.NET Others… Dynamic Language Runtime Expression Trees Dynamic Dispatch Call Site Caching Object JavaScript Python Ruby COM Binder Binder Binder Binder Binder
  19. 19. IronPython w przykładach
  20. 20. 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 rozszerzeo
  21. 21. Integracja z .NET-osadzanie 2/3 Krok 1: Dodaj referencje do: – Microsoft.Scripting.dll Dynamic Language Runtime – Microsoft.Scripting.Core.dll – IronPython.dll IronPython – IronPython.Modules.dll – Microsoft.Scripting.ExtensionAttribute.dll Jeśli ma działać z .NET 2.0
  22. 22. Integracja z .NET – osadzanie 3/3 Krok 2: Określ zakres widoczności dla Wykonaj Skrypt •CreateEngine() skryptu •CreateScriptSourceFrom File() •CreateScope() •CreateScriptSourceFrom •Execute() String() Zainicjuj silnik Wskaż źródło skryptu skryptowy
  23. 23. Osadzanie IP w aplikacjach .NET
  24. 24. 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.)
  25. 25. IP i ASP.NET
  26. 26. Silverlight <Deployment xmlns=quot;http://schemas.microsoft.com/client/2007/deploymentquot; xmlns:x=quot;http://schemas.microsoft.com/winfx/2006/xamlquot; RuntimeVersion=quot;3.0.40307.00quot; EntryPointAssembly=quot;Microsoft.Scripting.Silverlightquot; EntryPointType=quot;Microsoft.Scripting.Silverlight.DynamicApplicationquot;> <Deployment.Parts> <!-- Add additional assemblies here --> <AssemblyPart Source=quot;Microsoft.Scripting.Silverlight.dllquot; /> <AssemblyPart Source=quot;Microsoft.Scripting.ExtensionAttribute.dllquot; /> <AssemblyPart Source=quot;Microsoft.Scripting.Core.dllquot; /> <AssemblyPart Source=quot;Microsoft.Scripting.dllquot; /> <AssemblyPart Source=quot;IronPython.dllquot; /> <AssemblyPart Source=quot;IronPython.Modules.dllquot; /> </Deployment.Parts> </Deployment> Chiron – magik na pokładzie
  27. 27. IP i Silverlight
  28. 28. Ku chwale platformy • Języki dynamiczne pokazują w praktyce elastycznośd i uniwersalnośd .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#)
  29. 29. Ku chwale platformy 2/2 Calculator calc = GetCalculator(); int sum = calc.Add(10, 20); C# 3.0 object calc = GetCalculator(); Type calcType = calc.GetType(); object res = calcType.InvokeMember(quot;Addquot;, BindingFlags.Inv okeMethod, null, new object[] { 10, 20 }); int sum = Convert.ToInt32(res); C# 4.0 dynamic calc = GetCalculator(); int sum = calc.Add(10, 20);
  30. 30. Podsumowanie • Języki dynamiczne stanowią istotny element rozwoju platformy .NET • Warto znad ich rolę i wykorzystad potencjał • IronPython to ciekawa propozycja zarówno dla środowiska MS, jak i open source
  31. 31. Zasoby • Strona główna projektu http://www.codeplex.com/IronPython • ASP.NET i języki dynamiczne http://aspnet.codeplex.com/Wiki/View.aspx?title=Dynamic%20Langua ge%20Support • DLR w Silverlight http://www.codeplex.com/sdlsdk • Ciekawostki http://www.voidspace.org.uk/ironpython/index.shtml http://www.voidspace.org.uk/ironpython/planet/ http://www.resolversystems.com/ http://blogs.msdn.com/michalz
  32. 32. DYGRESJA
  33. 33. BizSpark dla każdego
  34. 34. BizSpark - oferta Pakiet narzędzi Wymagania: • Expression Studio • Kryteria: • VS TS w/MSDN Premium • Team Foundation Server (TFS) – Organizacja zajmuje się tworzeniem oprogramowania (produktu lub usługi) – Mniej niż 3 lata na rynku Licencje produkcyjne dla aplikacji – Roczny przychód poniżej 0,5 mln USD hostowanych – Działalnośd prywatna • Windows Server • SQL Server • Licencje produkcyjne dotyczą wyłącznie • SharePoint Portal Server • Systems Center rozwiązao typu Software as a • BizTalk Server Service, dostępnych publicznie poprzez • Azure (w miarę dostępności) internet. • Program trwa 3 lata: – Wymagane jest coroczne przedłużanie Narzędzia do użytku wewnętrznego członkostwa (weryfikacja statusu • Live Workspace (w miarę prawnego przedsiębiorstwa) dostępności) – Opłata członkowska wynosi 100 USD (płatne po zakooczeniu uczestnictwa)
  35. 35. BizSpark - jak zacząć? Wejdź na stronę www.microsoft.com/BizSpark Wybierz i skontaktuj się z jednym z lokalnych partnerów programu (network partners). Po przejściu weryfikacji otrzymasz e-mailem unikalny identyfikator. Wypełnij formularz rejestracyjny. Witamy w BizSpark!
  36. 36. BizSpark - partnerzy
  37. 37. 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
  38. 38. Q&A
  39. 39. Dziękuję! Michal.Zylinski@microsoft.com

×