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