Erciyes Üniversitesi Ipy Semineri

Pazartesi, 26 Ekim 2009 13:48 by ikivanc


Bugün üniversitemde Ironpython hakkında sunum gerçekleştirdim. Desktop Application, Silverlight, Console, COM Nesneleri, .NET kütüphaneleri, WPF, ASP.NET tarafındaki kullanımlarından bahsettim ve bunlardan birer örnek yaptık.

Genel itibari ile güzel geçti seminer, umarım herkes için faydalı olmuştur ;)

Katılan herkese teşekkürler...

IronPython Console

Cumartesi, 10 Ekim 2009 08:57 by ikivanc
In this article we take a deep look at IronPython Interactive Console. We will see some basics of Python and IronPython to become acquainted with the IronPython environment.



IronPython interactive interpreter console is the easiest way to start using IronPython.  We can easily explore whole IronPython world which is include ironpython modules, .Net libraries and Python Built-in’s. For IronPython starters it’s great way to exploring .Net Libraries. We can use IronPython Interactive Interpreter for start to developing WinForms, COM objects, WPF, XNA, Embeding C#, Silverlight,… projects.
 
Let’s check out some common commands which we will use for exploring Ipy on it.

help()
help() function that is particularly useful for exploring objects at the interactive console with dir() function.

help(dir)
With this command we can easily explore any object in IronPython!

dir()
This function returns all the members of an object as a list of strings.

If we run dir() function we can see which modules included in ironpython current work space.

>>>dir(help)
returns list of members for help function.

>>>help.__doc__
With this command it returns how can we use help function. By the “__doc__” element we can easily explore .NET libraries which we don’t know.

We can use IronPython Console as a calculator :)

>>>5+12
17

Without variable pre-declaration of data types we can assign a value to a variable.

>>ipy = “ironpython”

To get output we use print command, it is simple and easy as “print ipy”. Programming is now very funny :)

>>>print  ipy
ironpython

We can use every letter of a word as an element of array in IPy loop. As you see we didn’t declare “i” in “for statement”.

>>>for i in ipy:
...    print i
i
r
o
n
p
y
t
h
o
n

we assigned ipy variable as a string now we will assign it as an integer.
>>>ipy=10
>>>print ipy 
10

Let’s assign ipy variable value as an array.

>>>ipy = ["iron","python","ironpython"]
>>>print ipy 
["iron","python","ironpython"]

As you see there is no error with assigning of data types. We can use same variable for several data types. 

With functions we can develop application more programmaticly. 


we define functions with "def" like above template.


Functions need to enter space before print. First line which include “def” and function name, arguments. We use whitespace in function code. There is same situation for loops and statements. Levels of spaces similar like C# curly braces; tell us where functions start and where functions end, also tell us nested structures.

def addition(a,b):
    return a+b
 
>>>addition(3,8)
11
 
>>>addition("Iron","Python")
IronPython

The IronPython code above, we can add 2 string or 2 integer. 

After importing libraries we can start developing.

>>>import math 
>>>dir(math)
>>>from math import log10   #we imported log10 function from math library
>>>log10.__doc              #we can see instruction of log10
>>>log10(1000)              #we can use this function after lookin doc

After the enter codes above, the console contents will be like below.

As you see finding a module and using it in IronPython is too easy! 

For exit the IronPython Interactive console; Ctrl+Z or F6 followed by Enter. You can use ^Z or exit() command

PDF version of this article >> 3 - IronPython Interactive Console

If you have any questions or discover any errors / typos please let me know ik@ibrahimkivanc.com

All The Best!

Introduction to IronPython

Cumartesi, 3 Ekim 2009 11:25 by ikivanc
Python + .NET, That takes the cake! Python runs on .NET… that sounds good.  Flexibility and easy coding of Python and powerful platform .NET together. Also on the great development enviroment of Visual Studio. This must be a dream :)


This news took me to my childhood year; Voltron cartoon! :) Powerful heroes  combined with shining then become most powerful hero, Voltron. IronPython sounds like Voltron :)


In a short time Python became popular and absolutly it will be more popular in the future by performance, easy coding and easy prototyping. Microsoft became aware of Python’s power. Microsoft entegrated Python to .NET platform, and very innovative technology revealed. IronPython is a Python complier runs on .NET.

IronPython Project started at 2004  and now Ipy 2.6 RC1 relaesed. There is the last stable release Ipy 2.0.2 version. It’s on ,Microsoft’s open source portal, Codeplex. And you can easily get the latest release and news from link below.

http://IronPython.codeplex.com/

Jim Hugunin demoed IronPython to Microsoft and was hired by them to work on the CLR architecture team. IronPython 1 is top of CLR. But CLR is too bad for dynamic languages. Then decided create Dynamic Language Runtime(DLR) and built IronPython version 2 on top of the DLR. DLR Including interoperation between statically typed and dynamic languages. DLR will be part of C# 4.0 and .NET 4!

I will write more about DLR as soon as possible in next blog entries.

This license IronPython is released under is the OSI approved Microsoft Public License (MS-Pl), which Microsoft’s licience for opensource projects. IronPython was the first project to be released under this license.

Road Map for IronPython;

•    Visual Studio 2010 integration for IPy 2.6
•    IPy 3.0 which works with Python 3000 together.

As you see versions of IronPython same with which Python’s version is built on. IronPython 2.6 is compatibility with Python 2.6 and IronPython 3.0 is compatibility with Python 3000. Now IronPython developers working on IronPython 3.0.

From codeplex page you can get IronPython Console application which is for exploring IronPython world. You can develop application from IronPython Console command prompt without an IDE like Visual Studio.

With IronPython Console, you can explore IronPython world and develop apps.


With IronPython Console you can easily explore whole Python’s code, Access .NET libraries and use this libraries to build an application.

So what can we do for developing applications with an IDE? We can use Microsoft’s Visual Studio. Like developing C#, Visual Basic projects in Visual Studio we can easily develope IronPython Projects .

We have two options for IronPython IDE. We can use IDE, stand alone IronPython Studio or Visual Studio Integration. Both of them are same. Chose one It’s up to you. Based on IronPython 1.0 and also come with IronPython Intellisense.

How Do I Install IronPython?
http://IronPython.codeplex.com/ on project’s home page there is a download section. You can find easily download the latest version of IronPython msi installer.

How Do I Install IronPython Studio?
There are some pre-request for Installing IronPython Studio. First of all download the IronPython Studio entegrations below.
 
http://www.microsoft.com/downloads/details.aspx?FamilyId=ACA38719-F449-4937-9BAC-45A9F8A73822&displaylang=en

http://www.microsoft.com/downloads/details.aspx?FamilyId=40646580-97FA-4698-B65F-620D4B4B1ED7&displaylang=en

Visual Studio 2008 must be installed on your system and for a succesful installiation, you must install VS 2008 SDK 1.0 which is link below.

http://msdn.microsoft.com/en-us/vstudio/bb887604.aspx

After this installiations;

from Start > All Programs > Accessories > Commad Prompt right-click it and choose "run as administrator" then access the user account control prompt.

Then choose the path which is including IronPythonStudio.msi setup from Command Prompt. Then enter this command “msiexec /i C:\ IronPythonStudio.msi”.
If you are missing any pre-request of installing step there will be a problem about your installiation.


ScreenShot from IronPython Studio it is look like Visual Studio
 

ScreenShot of IronPython Studio which is integrated in Visual Studio

As you see there is a Visual Studio based IDE, IronPython Studio. It has also IronPython code intellisense. Now we can easily develop UI applications with IronPython Studio. It is easy as pressing F5 :)

IronPython is Working With
Now Python combined with .Net and let’s see where can we use IPy.
    * Desktop Applications
    * Silverlight
    * WPF
    * ASP.NET
    * The Microsoft Robotics Kit
    * XNA (Desktop – Xbox/Zune has no DLR)
    * Surface
    * SharePoint
    * WCF
    * WF

Silverlight
Silverlight has Dynamic Languages support now and Silverlight applications can be developing with IronRuby and IronPython code. We can develop web applications with Dynamic Languages! Cool!
 
WPF
With XAML, graphical user interface desing and code independent from each other so we can develop one of them independently.  Now we can use IronPython in WPF code behind side!
 
ASP.Net
We can use IronPython with ASP.NET building web applications. With IPy it’s really short coded and easily fast developing web applications..
 
The Microsoft Robotics Studio
Microsoft’s development platform for various hardware and Robot technology. IronPython can be integrated to Robotic Studio.
 
XNA
With IronPython’s Advantages of being Dynamic Language XNA 3D and game development. In the future this will be a shining star!
 
SharePoint
IronPython can be integrated with share point.

Why do I prefer IronPython to C# or Visual Basic?
There is a lot of reasons for for this question. Python is a Dynamic Language! C# and Visual Basic are static Languages. Because of being Dynamic Language there are some advantages to developing applications. There is no Type validation and Type creation in Dynamic Languages. Types are not verified up front. They are verified when they are used - languages like Python and Ruby are strongly typed languages, not weakly typed. Easliy Prototoyping and rapid development of Applications. For python users It runs on .NET wih same code!. It’s also scripting language.

PDF verison of this article >> 1 - Introduction to IronPython

If you have any questions or discover any errors / typos please let me know ik@ibrahimkivanc.com

All The Best!

Python ve Silverlight Makalelerim

Pazar, 19 Temmuz 2009 05:05 by ikivanc
"Makaleler" sayfasına yeni pdf makalelerimi daha ekledim. Silverlight ve Python üzerine yazdığım makalelerin linkleri aşağıda ve diğer makalelerin tamamı için de "Makaleler" sayfasına göz atabilirsiniz.

Silverlight
4 - Blend 3 Preview
5 - Silverlight 3 PixelShader Effects
6 - Silverlight 3 Save Dialog
7 - Silverlight 3 WCF Hatası

Python
1 - Python Giriş
2 - Python Temel Yapılar
3 - Python Fonksiyonlar
4 - Python Graphic User Interface (GUI)
5 - Python Döngüler
6 - Python Listeler


Dinamik Diller veTip Tanımlamaları

Cumartesi, 24 Ocak 2009 20:26 by ikivanc
Programlama dilleri bildiğimiz gibi yapı olarak Dinamik ve Statik olmak üzere 2ye ayrılır.

Dinamik diller bazı durumlarda pek çok artısı olan ve günümüzde yıldızı parlayan yapılardır. Python/IronPython, Ruby dinamik dillere örnek olacabileceği gibi, C#, VB'i de statik dillere örnek olarak gösterebiliriz.

Peki bir dili ne dinamik yapar?
Dinamik dil program kodları tam olarak derlenmeyip, sadece program çalışacağı zaman client tarafından yorumlanarak çalışır. Yani compile edilme olayı olmadan yorumlayıcısı vasıtasıyla direkt olarak çalışırlar. Bu da başta web siteleri olamak üzere pek çok projede artı olarak yorumlanabilir.

En önemli özelliklerinden biri ve bu yazımızda da üzerinde duracağımız özelliği ise "tip tanımlamaları" yani statik dillerdeki gibi verinizin tipini kullanmadan önce tanımlamamıza gerek kalmıyor.

Integer bir değer gireceksek daha önceden int olarak tanımlamamıza gerek kalmıyacak.

Peki bu bize ne gibi kolaylıklar sağlayacak?
Bir program yazarken en büyük sorunlardan birisi de tip tanımlamalarıdır.Fakat python/ironpython ile ilerde değişkenleri değiştirmek istersek veya istisna oluşturacak durumlar varsa işimizi çok kolaylaştırır.


Tip tanımlamaları ile zaten bildiğimiz tipin adını üzerine yazımıyor muyuz?

Yukarıdaki karikatürdeki gibi zaten var olan nesnelerin üzerine isimlerini yazmaya ne gerek var ki? Programlama dilimiz bizim yerimize tipini yazmadığımız halde girdiğimiz değerlerin tipini algılasa daha güzel olmazmıydı?

İşte IronPython bunu bizim yerimize yapıyor :)

integer bir sayı bildiğimiz gibi sınırı +/-2.147.483.647 dir yani bu sayıların üzerinde tutamaz.  Eğer bu sayıyı aşarsak overflow hatası alırız. Bunun gibi pek çok tipin aralıkları ve sabit  halleri bulunmaktadır.

şimdi ise bunu bir örnekte görelim:

bir x sayısını 2 ile çarpalım;

x * 2

x = 2,000,000,000 olsun

Python/IronPython da
x * 2 = 4,000,000,000 dır

Ruby de
x * 2 = 4,000,000,000 dır

8 yaşındaki yeğenim de çarparak
x * 2 = 4,000,000,000 buluyor

fakat int olarak tanımlı C# ta
x * 2 = -294,967,296 // overflow hatası alırız...

bunun gibi pek çok alanda karşımıza çıkabilir. Örneğin faktöriyel hesabı yapan bir uygulamada dinamik dillerin farkı açıkça belli olur

>>>def fact(sayi):
... if sayi == 1:
...... return 1
... return sayi * fact(sayi-1)

>>> fact(150)
571338395644585459047893286526105400318955357860112641825483758
331798291248453983931265744886753111453771078787468542041626662
501986845044663559491959220665749425920957357789293253572904449
624724054167907221184454371222696755200000000000000000000000000
00000000000l

>>> fact(200)
788657867364790503552363213932185062295135977687173263294742533
244359449963403342920304284011984623904177212138919638830257642
790242637105061926624952829931113462857270763317237396988943922
445621451664240254033291864131227428294853277524242407573903240
321257405579568660226031904170324062351700858796178922222789623
703897374720000000000000000000000000000000000000000000000000l

hatta 1000 faktöriyel'i bile overflow hatası olmadan rahatlıkla hesaplayabiliriz.

istersek bunu tek satıra da indirgeyebiliriz:

def fact(x): return (1 if x==0 else x * fact(x-1))

Peki tip tanımlamasındaki esneklikte neler yapabiliriz?

>>> x = "ibrahimkivanc"
>>> print x
ibrahimkivanc

>>> x = 10
>>> print x
10

>>> x = 10.53
>>> print x
10.53

>>> x = True
>>> print x
True

>>> x=["dizi","ilk","ikinci"]
>>> print x
['dizi', 'ilk', 'ikinci']



x sayısını ilk başta tanımlamadık programımızda x değişkenini 5 farklı tipte, string, integer, float, bool ve bir dizi olarak kullandık.  Bunun gibi pek çok farklı örnekler vermemiz mümkün.

Bu tip tanımlaması olmadığı için özellikle XNA oyun programlamada çok büyük kolaylıklar sağlıyacağı ve önümüzdeki günlerde IronPython ile Visual Studioda XNA projeler geliştilecek entegrasyonu geliştirileceği duyumlar arasında.

Bu yazımızda dinamik dillerin tip tanımlama özelliğine yakından baktık. Takıldığınız, sormak istediğiniz veya düzeltmek istediğiniz yerleri ibrahim.kivanc@msakademik.net mail adresime iletebilirsiniz.

Hepinize kolay gelsin...
Tags:   ,
Categories:   IronPython | Python
Actions:   E-mail | del.icio.us | Permalink | Yorumlar (2) | Comment RSSRSS comment feed

Python Giriş (Programlama hiç bu kadar zevkli olmamıştı :))

Cuma, 19 Aralık 2008 16:44 by ikivanc
python-icon Python programlama dili hollandalı Guido van Rossum tarafından 1990lı yılların başında hayata geçirilmiş bir dildir. Python programlama dili script bir dil olup oldukça hızlıdır. Hızlı olmasının sebeplerinden biri gereksiz ve fazla kütüphaneleri yüklemeden çalışması... Yani projenizi/programınızı nasıl ilerlemesini istiyorsanız kütüphanelerini ona göre yükleyip, açılışta sadece gerekli kütüphanelerden bilgileri alarak daha hızlı bir şekilde programınızı çalıştırır.

Python programlama dili'nin ismi sanıldığı gibi bir yılan türü olan pitondan değil, Bir komedi dizisi olan Monty Python isimden gelmektedir python... Python programlama dili diğer programlama dillerine nazaran kodlanması daha kolay ve zevklidir. Kullanım kolaylığı da çekiciliğini artırıyor. Interpreter (yorumlayıcı) vasıtası ile yorumlanarak anlam kazanır, bu sayade istenilen platformda çalıştırılması da sağlanmıştır.

Dinamik bir dil olmasının yanında,object oriented, aspect oriented programming language ve metaprogramming language’dir.

Dinamik dil olmasının ne gibi avantajları olacağına bakacak olursak:
- tip tanımlamaları gibi bir dert yok yani istediğimiz gibi kullanıp değişkeni istediğimiz zaman da istediğimiz tipe dönüştürebiliyoruz.

- programımız çalışıyorken; yeni kod ekleyebiliyoruz. Sonuçta interpretter mantığı ile çalıştığı için derlenmesine gerek kalmıyor ve istediğimiz an müdahale edebiliyoruz. Programımız çalışırken Yeni tanımlamalar yapabiliyor, yeni nesneler ekleyebiliyor; aynı zamanda da var olan modülleri modifiye edebiliyoruz.

Python o kadar basit ki çok az kodla çok iş yapabiliyoruz. Bu da projemizi geliştirken hız ve performansımıza etki ediyor. Zengin kütüphaneleri ve community'si sayesinde tek başınıza istediğiniz herşey yapabilirsiniz. Bilimsel hesaplamalar için de mükemmel bir dil.

comic

GPL lisansına sahip olan python programlama dili daha çok Linux işletim sisteminde kullanılmakla beraber, Microsoft'un son hamlesi “Ironpython” ile windows platformunda da adından sıkça söz ettireceğe benziyor. Geleceğin teknolojisi olarak bakılan Silverlight teknolojisi ile de uyumlu olup, geliştirmelerin yapıldığı Python, Aynı zamanda Visual Studio 2008 de Ironpython Studio yüklenmesi sonucu VS2008de de çalışarak sağlam bir derleyici ile windows platformu için daha hızlı ve efektif geliştirmeyi de bizlere sunuyor

Diğer dillerle olan senkronizasyonu ve uyumluluğu ise gerçekten göz kamaştırıcı. Java,C,Assembly ve daha birçok dille beraber çalışabilmesi geliştiriciler için çok büyük bir avantaj. Jython; java entegrasyonu,CLPython; Common Lisp entegrasyonu, IronPython; .NET entegrasyonu ile diğer dillerin ortamlarını ve kütüphanelerini kullanarak tek bir dil ile istediğini her türlü geliştirmeye izin verebiliyor.

Python ile Windows application, sistem programcılığı, veritabanı, socket uygulamaları, web programcılığı başta olmak pek çok kategoride uygulama geliştirilebilmesi; python dilini hızla ilerlemesini sağlamış oldu.

Python’un sürümlerinden 2.5, 2.6 ve en son sürümü olan Python 3.0 (Python 3000) var olan kararlı sürümleri ve en çok kullanılanları. Bundan sonraki yazılarımı Python 3000’e göre yazacak olup, IronPython kodunu da yazacağım ki o da 2.5 versiyonu üzerinde çalışıyor. Bu sayede farklarını da rahatlıkla görebilirsiniz.

Siz hala Python kullanmıyor musunuz? :)
Ne duruyorsunuz hadi başlayalım :)

Python Anasayfası için >> http://www.python.org
Python 3000 'i indirmek için >> http://www.python.org/download/
IronPython için >> http://www.codeplex.com/IronPython
Jython için >> http://www.jython.org/

Sormak istediğiniz veya düzeltmek istediğiniz yerleri ibrahim.kivanc@msakademik.net mail adresime iletebilirsiniz.

Tags:   ,
Categories:   Python
Actions:   E-mail | del.icio.us | Permalink | Yorumlar (2) | Comment RSSRSS comment feed

IronPython Console

Perşembe, 18 Aralık 2008 15:58 by ikivanc
Bu yazımızda IronPython Console’a daha yakından bakacağız. IronPython ile Python’un temel özelliklerini uygulayıp, projede araştırma ve geliştirme nasıl yapılır ona göz atacağız.

ironpythonconsole
IronPython Console, live şekilde anında geliştirme yaparken aynı zamanda da var olan modülleri inceleyerek öğrenmemizi sağlar. Bu şekilde Dynamic bir dil olmasının güzelliklerini rahatlıkla görebiliriz . Bu özellikleri sayesinde yeni başlayanlar bu dile hızlı bir şekilde alışır ve zengin .NET kütüphanelerinin nasıl kullanıldığını görmelerini sağlar. IronPython Console ile COM interaktif uygulamalar,WPF,XNA, C#’ı IronPython’a gömme gibi çeşitli uygulamaları rahatlıkla önizleyerek kodlamamızı sağlar.

Şimdi de geliştirme için enfazla işimize yarıyacak temel komutlara bakacak olursak:

help()
bize kullanacağımız nesneler hakkında yardım edecek olan tanımdır.

help(dir)

bu sayede istediğimiz nesne hakkında bilgi alabiliriz.

dir()
komutu ile de içerisinde bulunan nesnenin özelliklerini, eğer nesnemiz import edilen bir modülse içindeki sınıfları bize verir.
>>>dir() komutunu çalıştırdığımız zaman ekrana IronPython projemizdeki modülleri verir bunlardan built-in ler python da hazır olarak gelen parçalardır ve bunları direkt olarak kullanma imkanı verir bize.

>>>dir(help)
help'in içeriğini verir.

>>>help.__doc__
help() ile yardım alabileceğimiz gibi, built-in yapılarda açıklamalar varsa onlara erişmemizi sağlar __doc__ yapısı. Özellikle .NET kütüphanelerindeki bilmediğimiz nesneler hakkında bilgi almamızı sağlar.

IronPython ile normal hesap makinesi işlemleri de yapabilmekteyiz.
>>>5+12
17

tip tanımlaması yapmadan değerler atayabiliyoruz.
>>ipy = “ironpython”
ekrana yazdırmak “print ipy” kadar basit ve kolay. Programlama hiç bu kadar zevkli olmamıştı :)

>>>print  ipy
ironpython

kelimeyi bir dizi gibi alarak her bir harfini döngü içerisine atabiliriz. Gördüğünüz gibi for döngüsü içindeki “i” için bile tip tanımlamasına gerek yok artık daha özgürüz :)

>>>for i in ipy:
...    print i
i
r
o
n
p
y
t
h
o
n

daha önce string atadığımız değişkeni şimdi de integer atayabiliriz

>>>ipy=10
>>>print ipy 10

daha önce farklı tipler atadığımız değişkene şimdi de dizi atayalım
>>>ipy = [‘iron’,’python’,’ironpython’]
>>>print ipy [‘iron’,’python’,’ironpython’]

gördüğümüz gibi hiç bir sorun çıkmıyor karşımıza hem tip tanımlaması sorunu çekmiyoruz hemde aynı nesneyi farklı tiplerde tekrar tekrar kullanmakta sorun yaşamaıyoruz.

fonksiyonlar tanımlayarak programımızı zenginleştirebiliriz
def
fonksiyonlarımızı "def" ile tanımlıyoruz ve yukarıdaki yapıya göre oluşturuluyor.

whitespace
fonksiyonları tanımlarken içeriye doğru hiza çok önemli python buna göre yorumlayıp fonksiyon nereden başlayıp bittiğine buna göre karar veriyor. Aynı yapı tüm döngü ve yapılarda da mevcut.

>>>def topla(a,b):
...    return a+b
>>>topla(3,8)
11
>>>topla(“Iron”,”Python”)
IronPython

yukarıda da görüldüğü gibi string toplama yapabildiğimiz gibi integer da toplama yapabiliyoruz.

kütüphaneleri indirerek projelerimizi geliştirebiliriz.
>>>import math
>>>dir(math)
>>>from math import log10     #log10 fonksiyonunu indiriyoruz math 
kütüphanesinden
>>>log10.__doc    #log10’un kullanılışına bakıyoruz
>>>log10(1000)    #içeriği girerek kullanıyoruz.

yukarıdaki kodlarımızı girdikten sonra ekran çıktımız aşağıdaki gibi olacaktır

importmath

görüldüğü gibi IronPythonda modül bulmak ve kullanmak çok ama çok kolay.

Console umuzu kapatmak için de (Ctrl+Z) yazıp enter'a basarak, (^Z) veya exit() komutlarını da kullanabilirsiniz.

Bu yazımızda IronPython Console’a yakından baktık. IronPython ile Python’un temel özelliklerini uygulayıp, projede araştırma ve geliştirme nasıl yapılır göz attık . Takıldığınız, sormak istediğiniz veya düzeltmek istediğiniz yerleri ibrahim.kivanc@msakademik.net mail adresime iletebilirsiniz.

Hepinize Kolay gelsin...
Tags:   ,
Categories:   IronPython | Python
Actions:   E-mail | del.icio.us | Permalink | Yorumlar (0) | Comment RSSRSS comment feed

IronPython 2.0 Mimarisi ve .NET Kütüphanelerine Erişim

Salı, 16 Aralık 2008 16:21 by ikivanc
Common Language Runtime tüm .NET dillerinin altında çalıştığı gibi IronPythonda da kullanılmaktadır. CLR modülünün import edilmesi IronPython’un en önemli özelliklerinden birisindir. clr bildiğimiz gibi  .NET ‘in üzerinde bulundurduğu CLR (Common Language Runtime)dir. IronPython da .NET kütüphaneleri ile bağlantı kurmamızı sağlayacak ve istediğimiz .NET kütüphanesini rahatlıkla çağırabileceğiz.

Jython ile Python’u JVM ‘de çalışmasını sağlayan Jim Hugunin, Python’u .NET platformuna taşımak için Microsoftta başlattığı IronPython projesi ile C#’ın da geleceğini değiştirdi. C# 4.0 Tasarım takımında yer alarak özellikle Statik olarak kodlanan fakat dinamik gibi davranmasını sağlayarak çok önemli bir özellik getirdi. C# ‘ın IronPython ile çok rahat bir şekilde haberleşmesinin de çok büyük katkılar sağladı ve daha ne gibi ekstra özellikler bizi bekliyor önümüzdeki günlerde göreceğiz.



IronPython , 2.0 sürümü ile DLR (Dynamic Language Runtime) üzerinde çalışmaktadır; bu da CLR’nin benzeri bir yapı olup,Dinamik diller için özel olarak tasarlanan bir yapıdır. DLR ile birlikte dinamik dillerin çalışmaları hem daha hızlı olacak hem de .NET ailesi birbiri ile daha rahat haberleşip ve iletişim sağlıyacak.



Şekildeki diagramdaki gibi diller DLR üzerindeçalışacak ve .NET, silverlight, python, ruby, COM nesnelerine rahatlıkla erişebilecek.

.NET 4.0 da hazır olarak gelecek olan DLR sayesinde C# 4.0 ile static bir dil olan C#ta dynamic gibi davranan tipler tanımlamak çok kolaylaşacak.

.NET Kütüphanelerine Erişim
Şimdi de .NET Kütüphanelerine erişime bir göz atalım. Uygulamalarımızı ve örneklerimizi "IronPyton Console" ile yapacağız. Eğer sisteminizde yüklü değilse buradan IronPython 2.0 kararlı sürümünü indirebilirsiniz.

Python ve IronPython da dışardan modüller yüklemek içim "import" kullanılır

import System.String     # Bu şekilde System.String'teki tüm modülleri yükleri

from System import String     # bu kalıpla da Namespace'ten istediğimiz fonksiyonu veya modülü tek olarak yükleyebiliriz.

import System.String komutu ile ilgili kütüphaneyi çalışma alanımıza almış olduk ve System.String kütüphanesindeki tüm işlemleri artık IronPython üzerinde uygulayabiliriz. 



Yukarıdaki gibi Sadece ilgili kütüphaneyi yükleyerek yapabilecekken; CLR ‘ı da yükleyerek işlemlerimimizi gerçekleştirebiliriz.
 


Şimdide Python ve .NET string metodlarına bir göz atalım; Python da bulunan “str” modülü ve .NET de bulunan System.String namespacesindeki string özelliklerini kullanalım.

"str" modülü IronPython’ın orjinalinde bulunurken; System.String modülü “import clr” komutunun ardından yüklenecektir. Bu .NET modülünün yüklenmesi ardından python’un "str" modülü de bulunmaya devam edecektir.

clr modülünü import etmeden:

>>>kelime = "İBRAHİMKİVANC"
>>>kelime.lower()
'ibrahimkivanc'
>>>kelime.ToLower()     # .NET kütüphaneleri yüklü olmadığı için aşağıdaki hatayı verecek
Traceback (most recent call last):
  Filer “<stdin>”, line 1, in <module>
AttributeError: 'str' object has no attribute 'ToLower'


import clr
komutu ile clr miz IronPython çalışma alanımıza alınmış oldu. Şimdide buna bir örnekle göz atalım;

clr modülünü import ettikten sonra:
>>> import clr
>>> kelime.lower()        # python methodu clr ile de çalışmakta
'ibrahimkivanc'
>>> kelime.ToLower()    # artık çalışıyor
'ibrahimkivanc'

Not: Python ve IronPythonda yorum satırı "#" işaretinden sonra yazılmaktadır.

Görüldüğü gibi clr'ı yüklemeden hata aldık, clr 'ı import ettikten sonra ToLower() fonksiyonumuz çalışmakta.



Console da yaptığımız örneği aşağıdaki gibi “lib.py” dosyasından istenilen özelliği "app.py" uygulamamıza çekebiliriz.

# lib.py
import clr
def kucult(kelime): return kelime.ToLower()


# app.py
import lib
kelime = "MERHABA"
print lib.kucult(kelime)        # ekrana “merhaba” yazdırır
#print kelime.ToUpper()           # clr modülü diğer dosyamızda yüklendiği için burada hata verecektir.

Bu yazımızda herhangi bir .Net kütüphanesinin nasıl IronPython’a nasıl yükleneceğini ve System.String kütüphanesinin kullanımını gördük. IronPython 2.0 ile bizi bekleyen güzelliklerden ve mimarisinden de bahsettik. Takıldığınız, sormak istediğiniz veya düzeltmek istediğiniz yerleri ibrahim.kivanc@msakademik.net mail adresime iletebilirsiniz.

Hepinize Kolay gelsin..
Tags:   , ,
Categories:   .NET | IronPython | Python
Actions:   E-mail | del.icio.us | Permalink | Yorumlar (0) | Comment RSSRSS comment feed

Güzel Haberler

Pazartesi, 15 Aralık 2008 11:40 by ikivanc
Bayramda çok fazla internete girme imkanım olmadı çünkü koşuşturmalarla geçti sürekli fakat güzel ve kazasız belasız geçti :)  Geç de olsa Herkesin geçmiş bayramını kutluyorum.

Umut Sarıkaya'nın bu karikatürü bayram için favorim oldu :)

Bayram öncesinde yeğenim oldu... bu güzel mucize yaşanırken orada değildim ama yeğenimin fenerbahçeli oluş mucizesini bizatihi yaşadım :D Damardan vermek lazım bazı duyguları amcalar ne için var :))


Bir programlama diline başlarken yapılan ilk iştir, hatta adettendir;

print ("Hello World")  #python 3000 :D

ekrana merhaba yazdırmak; o dünyaya ayak basmanın, bir başlangıcın; ilk adımın simgesidir...

Bizim küçük yeğen de aynısını yaptı, bayram müjdesi olarak geldiği hayatımıza küçücük bir "Merhaba Dünya" yazdırdı...

Bayram boyunca 10 günlük bir kamp gibi oldu benim açımdan ve Python/IronPython kodları içine gömüldüm. Yarından itibaren başlıyacak olan IronPython ve Python 3000 makalelerinin özellikle yeni başlayacaklar için çoook faydalı olacağını düşünüyorum.

27-28 Aralıkta yapılacak olan MSP Days'in de yaklaştığını ve IronPython sunumumla birlikte hazır bir şekilde bu etkinliği de iple çektiğimi belirtmek isterim. Çankaya Üniversitesinde yapılacak olan bu etkinliğe vakti olan tüm meraklıları bekliyoruz.

Python 3000 (Python 3.0)

Perşembe, 4 Aralık 2008 18:14 by ikivanc
Python 3000

Herkesin merak ettiği ve öğrenmek için sabırsızlandığı Python programlama dili bir nevi evrim geçirdi. Daha önce öğrenmediyseniz pişmanlık duymayın... Çünkü Python 3.0, güzel yenilikleriyle geldi...

"Python 3000" ya da diğer adı "Py3k" olan Python 3.0 sürümü uzunca bir süre sonra kararlı haliyle karşımızda.

Blogumda IronPython ve Python'dan sıkça bahsediyor fakat tutoriallara çok fazla yer vermiyordum. Genel olarak hangi teknolojilerle ile birlikte kullanıldığından bahsediyordum.  Bunun sebebi köklü değişiklikler beklediğim kararlı sürümleri yakın bir zamanda çıkacak olmasıydı. Python 3.0 artık çıktı, IronPython 2.0 kararlı sürümü ise önümüzdeki haftalarda duyurulacak...

Temel olarak eski pythonla aynı fakat yeni sürümüyle birlikte "built-in" nesnelerinde ve dilin bazı temel yapılarında değişikliğe gidildi. Önemli değişikliklerle birlikte gelen Py3k artık daha sağlam ve daha esnek.

Pyk3

3000’ı bilgisayarıma kurup önemli özelliklerini test ettim:

Print
Daha önceden

x=12
eski:  >>print x
yeni: >>print(x)

şeklinde yazdığımız print, şimdi fonksiyon haline geldi ve parantez içerisinde parametresini yollayarak işlenir hale geldi.

long-int
Daha önceden var olan long tipi şimdi ise int ismi altında bulunmakta ve "int" tıpkı eski "long" gibi davranmakta. Ayrıca "int" bölüme işlemlerinde de değişiklik meydana geldi, sonuç integer olarak değil float biçimde çıkıyor ve sorun çıkmıyor.

7/2
eski: >>7/2
3
yeni: >>7/2
3.5

unicode-8bit
u"..." şeklinde tanımlanan unicodelar şimdi ise b"..." binary data şeklinde saklanıyor.
Fonksiyonlar içinde "from ... import ..." kalıbını kullanmaya izin vermiyor artık...
Dictionary'lerde ve bazı syntax değişiklikleri de oldu...

Ve daha fazla yenilikle birlikte Python 2.6 da gelen değişiklikler ve yenilikler de aynen python 3.0 da yer aldı.

Python 3000 a buradan ulaşabilirsiniz..

Bayram dönüşü artık Kodlu günler başlıyor, Hazır olun, yeni yazılarımı bekleyin; Başlıyoruz... :)
Tags:   ,
Categories:   Python
Actions:   E-mail | del.icio.us | Permalink | Yorumlar (0) | Comment RSSRSS comment feed