SlideShare una empresa de Scribd logo
1 de 40
Ile cukru w cukrze
IronPython i jego zastosowania

                      Michał Żylioski
      Michal.Zylinski@microsoft.com
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źd pod naszą szerokością
  geograficzną)
• … no i te wcięcia…
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)
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);   „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
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
Klucz do sukcesu - elastyczność
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 zajrzed do VS 2008 SDK
   – Przykład wykorzystania DLR
Technikalia
Python                                      IronPython
                Biblioteki
               zewnętrzne


Kod źródłowy     Bajtkod      Interpreter
   (*.py)        (*.pyc)     (python.exe)
                                                     + DLR
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
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 rozszerzeo
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
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
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=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
IP i Silverlight
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#)
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);
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
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
DYGRESJA
BizSpark dla każdego
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)
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!
BizSpark - partnerzy
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
Q&A
Dziękuję!
Michal.Zylinski@microsoft.com

Más contenido relacionado

Similar a Iron Python I Dlr

Using Red Gate SQL Doc for database documentation
Using Red Gate SQL Doc for database documentationUsing Red Gate SQL Doc for database documentation
Using Red Gate SQL Doc for database documentationMariusz Koprowski
 
ITAD PolSl 2014 - Nowości w .NET 2015
ITAD PolSl 2014 - Nowości w .NET 2015ITAD PolSl 2014 - Nowości w .NET 2015
ITAD PolSl 2014 - Nowości w .NET 2015Michał Dudak
 
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegroallegro.tech
 
Ganymede - nowoczesne technologie w grach przeglądarkowych i mobilnych
Ganymede - nowoczesne technologie w grach przeglądarkowych i mobilnychGanymede - nowoczesne technologie w grach przeglądarkowych i mobilnych
Ganymede - nowoczesne technologie w grach przeglądarkowych i mobilnychSKN Shader
 
Jak podwoić wartość kodu .NET?
Jak podwoić wartość kodu .NET?Jak podwoić wartość kodu .NET?
Jak podwoić wartość kodu .NET?javOnet
 
Aplikacje internetowe (2010)
Aplikacje internetowe (2010)Aplikacje internetowe (2010)
Aplikacje internetowe (2010)Adrian Kalbarczyk
 
Delphi dla .NET. Vademecum profesjonalisty
Delphi dla .NET. Vademecum profesjonalistyDelphi dla .NET. Vademecum profesjonalisty
Delphi dla .NET. Vademecum profesjonalistyWydawnictwo Helion
 
Jak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training DayJak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training DayTomasz Dziuda
 
ASP.NET 3.5 dla programistów PHP
ASP.NET 3.5 dla programistów PHPASP.NET 3.5 dla programistów PHP
ASP.NET 3.5 dla programistów PHPWydawnictwo Helion
 
Developing native-like Windows application using JavaScript, SSE, eZ Platform...
Developing native-like Windows application using JavaScript, SSE, eZ Platform...Developing native-like Windows application using JavaScript, SSE, eZ Platform...
Developing native-like Windows application using JavaScript, SSE, eZ Platform...Piotr Nalepa
 
Konrad Kokosa - Pamięć w .NET - od ogólu do szczegółu- 4developers2016
Konrad Kokosa - Pamięć w .NET - od ogólu do szczegółu- 4developers2016Konrad Kokosa - Pamięć w .NET - od ogólu do szczegółu- 4developers2016
Konrad Kokosa - Pamięć w .NET - od ogólu do szczegółu- 4developers2016PROIDEA
 
Wjug from java to big data
Wjug   from java to big dataWjug   from java to big data
Wjug from java to big dataPiotr Guzik
 
Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska
Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-PolskaModsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska
Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-PolskaLeszek Mi?
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...The Software House
 
Visual C# 2005. Zapiski programisty
Visual C# 2005. Zapiski programistyVisual C# 2005. Zapiski programisty
Visual C# 2005. Zapiski programistyWydawnictwo Helion
 
JDD2014: JAVA.util.concurrent czyli wielowątkowość z różnych perspektyw, tych...
JDD2014: JAVA.util.concurrent czyli wielowątkowość z różnych perspektyw, tych...JDD2014: JAVA.util.concurrent czyli wielowątkowość z różnych perspektyw, tych...
JDD2014: JAVA.util.concurrent czyli wielowątkowość z różnych perspektyw, tych...PROIDEA
 

Similar a Iron Python I Dlr (20)

Using Red Gate SQL Doc for database documentation
Using Red Gate SQL Doc for database documentationUsing Red Gate SQL Doc for database documentation
Using Red Gate SQL Doc for database documentation
 
ITAD PolSl 2014 - Nowości w .NET 2015
ITAD PolSl 2014 - Nowości w .NET 2015ITAD PolSl 2014 - Nowości w .NET 2015
ITAD PolSl 2014 - Nowości w .NET 2015
 
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
 
Ganymede - nowoczesne technologie w grach przeglądarkowych i mobilnych
Ganymede - nowoczesne technologie w grach przeglądarkowych i mobilnychGanymede - nowoczesne technologie w grach przeglądarkowych i mobilnych
Ganymede - nowoczesne technologie w grach przeglądarkowych i mobilnych
 
OpenEmbedded
OpenEmbeddedOpenEmbedded
OpenEmbedded
 
Prezentacja o X11
Prezentacja o X11Prezentacja o X11
Prezentacja o X11
 
Jak podwoić wartość kodu .NET?
Jak podwoić wartość kodu .NET?Jak podwoić wartość kodu .NET?
Jak podwoić wartość kodu .NET?
 
Aplikacje internetowe (2010)
Aplikacje internetowe (2010)Aplikacje internetowe (2010)
Aplikacje internetowe (2010)
 
C# i .NET
C# i .NETC# i .NET
C# i .NET
 
Delphi dla .NET. Vademecum profesjonalisty
Delphi dla .NET. Vademecum profesjonalistyDelphi dla .NET. Vademecum profesjonalisty
Delphi dla .NET. Vademecum profesjonalisty
 
Jak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training DayJak nadążyć za światem front-endu - WordPress Training Day
Jak nadążyć za światem front-endu - WordPress Training Day
 
ASP.NET 3.5 dla programistów PHP
ASP.NET 3.5 dla programistów PHPASP.NET 3.5 dla programistów PHP
ASP.NET 3.5 dla programistów PHP
 
Monitoring sieci
Monitoring sieciMonitoring sieci
Monitoring sieci
 
Developing native-like Windows application using JavaScript, SSE, eZ Platform...
Developing native-like Windows application using JavaScript, SSE, eZ Platform...Developing native-like Windows application using JavaScript, SSE, eZ Platform...
Developing native-like Windows application using JavaScript, SSE, eZ Platform...
 
Konrad Kokosa - Pamięć w .NET - od ogólu do szczegółu- 4developers2016
Konrad Kokosa - Pamięć w .NET - od ogólu do szczegółu- 4developers2016Konrad Kokosa - Pamięć w .NET - od ogólu do szczegółu- 4developers2016
Konrad Kokosa - Pamięć w .NET - od ogólu do szczegółu- 4developers2016
 
Wjug from java to big data
Wjug   from java to big dataWjug   from java to big data
Wjug from java to big data
 
Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska
Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-PolskaModsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska
Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska
 
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
“Dziesięć serwerów poproszę!“, czyli co może Ci zaoferować definiowanie infra...
 
Visual C# 2005. Zapiski programisty
Visual C# 2005. Zapiski programistyVisual C# 2005. Zapiski programisty
Visual C# 2005. Zapiski programisty
 
JDD2014: JAVA.util.concurrent czyli wielowątkowość z różnych perspektyw, tych...
JDD2014: JAVA.util.concurrent czyli wielowątkowość z różnych perspektyw, tych...JDD2014: JAVA.util.concurrent czyli wielowątkowość z różnych perspektyw, tych...
JDD2014: JAVA.util.concurrent czyli wielowątkowość z różnych perspektyw, tych...
 

Más de Michal Zylinski

StorSimple a może do chmury
StorSimple a może do chmuryStorSimple a może do chmury
StorSimple a może do chmuryMichal Zylinski
 
iFIN24 – nowe spojrzenie na e-dokumenty
iFIN24 – nowe spojrzenie na e-dokumentyiFIN24 – nowe spojrzenie na e-dokumenty
iFIN24 – nowe spojrzenie na e-dokumentyMichal Zylinski
 
Dlaczego startupy potrzebują doradców? Wrażenia z Seedcamp 2009.
Dlaczego startupy potrzebują doradców? Wrażenia z Seedcamp 2009.Dlaczego startupy potrzebują doradców? Wrażenia z Seedcamp 2009.
Dlaczego startupy potrzebują doradców? Wrażenia z Seedcamp 2009.Michal Zylinski
 
Dlaczego startupy powinny dbać o wizerunek?
Dlaczego startupy powinny dbać o wizerunek?Dlaczego startupy powinny dbać o wizerunek?
Dlaczego startupy powinny dbać o wizerunek?Michal Zylinski
 
Inicjatywa Doradztwa Europejskiego
Inicjatywa Doradztwa EuropejskiegoInicjatywa Doradztwa Europejskiego
Inicjatywa Doradztwa EuropejskiegoMichal Zylinski
 
Zdobywanie serca klientów
Zdobywanie serca klientówZdobywanie serca klientów
Zdobywanie serca klientówMichal Zylinski
 
Twój własny kawałek YouTube
Twój własny kawałek YouTubeTwój własny kawałek YouTube
Twój własny kawałek YouTubeMichal Zylinski
 
Silverlight z bliska i na wylot
Silverlight z bliska i na wylotSilverlight z bliska i na wylot
Silverlight z bliska i na wylotMichal Zylinski
 
Nowości W Silverlight 3
Nowości W Silverlight 3Nowości W Silverlight 3
Nowości W Silverlight 3Michal Zylinski
 
Microsoft-Certyfikacja Aplikacji
Microsoft-Certyfikacja AplikacjiMicrosoft-Certyfikacja Aplikacji
Microsoft-Certyfikacja AplikacjiMichal Zylinski
 

Más de Michal Zylinski (20)

StorSimple a może do chmury
StorSimple a może do chmuryStorSimple a może do chmury
StorSimple a może do chmury
 
Python i Microsoft
Python i MicrosoftPython i Microsoft
Python i Microsoft
 
Galaxy of bits
Galaxy of bitsGalaxy of bits
Galaxy of bits
 
Zmierzch epoki łowcy
Zmierzch epoki łowcyZmierzch epoki łowcy
Zmierzch epoki łowcy
 
PHP i microsoft
PHP i microsoftPHP i microsoft
PHP i microsoft
 
Silverlight i PHP
Silverlight i PHPSilverlight i PHP
Silverlight i PHP
 
Php i Microsoft
Php i MicrosoftPhp i Microsoft
Php i Microsoft
 
iFIN24 – nowe spojrzenie na e-dokumenty
iFIN24 – nowe spojrzenie na e-dokumentyiFIN24 – nowe spojrzenie na e-dokumenty
iFIN24 – nowe spojrzenie na e-dokumenty
 
LuceoS
LuceoSLuceoS
LuceoS
 
Domisoft
DomisoftDomisoft
Domisoft
 
User-centered design
User-centered designUser-centered design
User-centered design
 
Dlaczego startupy potrzebują doradców? Wrażenia z Seedcamp 2009.
Dlaczego startupy potrzebują doradców? Wrażenia z Seedcamp 2009.Dlaczego startupy potrzebują doradców? Wrażenia z Seedcamp 2009.
Dlaczego startupy potrzebują doradców? Wrażenia z Seedcamp 2009.
 
Dlaczego startupy powinny dbać o wizerunek?
Dlaczego startupy powinny dbać o wizerunek?Dlaczego startupy powinny dbać o wizerunek?
Dlaczego startupy powinny dbać o wizerunek?
 
Biz Spark i co dalej
Biz Spark i co dalejBiz Spark i co dalej
Biz Spark i co dalej
 
Inicjatywa Doradztwa Europejskiego
Inicjatywa Doradztwa EuropejskiegoInicjatywa Doradztwa Europejskiego
Inicjatywa Doradztwa Europejskiego
 
Zdobywanie serca klientów
Zdobywanie serca klientówZdobywanie serca klientów
Zdobywanie serca klientów
 
Twój własny kawałek YouTube
Twój własny kawałek YouTubeTwój własny kawałek YouTube
Twój własny kawałek YouTube
 
Silverlight z bliska i na wylot
Silverlight z bliska i na wylotSilverlight z bliska i na wylot
Silverlight z bliska i na wylot
 
Nowości W Silverlight 3
Nowości W Silverlight 3Nowości W Silverlight 3
Nowości W Silverlight 3
 
Microsoft-Certyfikacja Aplikacji
Microsoft-Certyfikacja AplikacjiMicrosoft-Certyfikacja Aplikacji
Microsoft-Certyfikacja Aplikacji
 

Iron Python I Dlr

  • 1. Ile cukru w cukrze IronPython i jego zastosowania Michał Żylioski Michal.Zylinski@microsoft.com
  • 2. Agenda • Wyjaśniam • Zaciekawiam • Inspiruję • Rozwiewam wątpliwości
  • 3. Zdaniem zwolenników Źródło: http://xkcd.com/353/
  • 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. 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. Klucz do sukcesu - zwięzłość Programista to nie dziennikarz, nie dostaje pieniędzy za „wierszówkę”
  • 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. 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. Klucz do sukcesu - elastyczność
  • 10. Kaczki i inne takie
  • 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. 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. 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. Python w świecie Microsoft
  • 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. 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. Technikalia Python IronPython Biblioteki zewnętrzne Kod źródłowy Bajtkod Interpreter (*.py) (*.pyc) (python.exe) + DLR
  • 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
  • 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. 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. 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. Osadzanie IP w aplikacjach .NET
  • 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.)
  • 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
  • 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. 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. 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. 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
  • 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. 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!
  • 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.
  • 39. Q&A