IronPython: .Net üzerinde Python - Bölüm - 1

0
zekzekus
Bu metin Jeff Cogswell'in bu adreste bulunan makalesinin çevirisidir.

IronPython'a ilk bakış: .Net ile Python'un buluştuğu yer.

Bir itirafta bulunuyorum. C++ hakkında bir sürü kitap ve makale yazmış olmama rağmen bir sırrım var: C++ benim en sevdiğim programlama dili değil. Değişik amaçlar için kullandığım bir sürü programlama dili var. Ama her zaman en sevdiğim dil Python olmuştur.

Python kısaca güzellikten başka bir şey değildir. Mesela tek bir satır, çabucak yazacağınız kod ile her türlü veri tipinde elemanlar tutabilecek liste tipinde bir değişken tanımlayabileceğiniz fazla programlama dili yoktur. İşte, bir satır Python kodu:

  a = []
Bu kadar. Hoş değil mi? Boşlukları saymazsak dört karakterden oluşan tek bir satır kod. Liste veri tipi doğrudan dilin içine gömülmüş durumda. Listeye bir tamsayı eklemek mi istiyorsunuz? İşte burada:
  a.append(10)
Karakter katarı (string) eklemek?
  a.append('python is great')
Ekrana yazdırmak mı istiyorsunuz? O da kolay:
  print a
ekran çıktısı ....
 [10, 'python is great']
Evet nasıl? Şimdi kendi tanımladığınız bir sınıfın örneğini yaratmak isteyebilirsiniz? Emin olun bunuda yapabilirsiniz. Tabii ki bunun için biraz daha gerçek programlamaya geçmemiz gerekiyor. MyClass isminde bir sınıf tanımlayalım. İşte örneğin tam kodu:
class MyClass:
    def __init__(self, name, height):
        self.name = name
        self.height = height
    def __str__(self):
        return "%s=%s"%(self.name, self.height)

a = []
a.append(10)
a.append('python is great')
a.append(MyClass('Sam', 80))

for item in a:
    print item

Bu kod ile önce MyClass adında bir sınıf oluşturdum. Sonrasında, sınıf içinde iki tane üye fonksiyon oluşturdum. Tanımladığım bu iki fonksiyon özel fonksiyon denilen fonksiyonlardır; ilki bir sınıf yapılandırıcısı (constructor), ikincisi ise sınıfın karakter olarak yapısını döndüren bir fonksiyondur. Özel fonksiyonlar isimlerinin başına ve sonuna iki alt çizgi karakteri alırlar. Kendi fonksiyonlarım için alt çizgi karakterlerini kullanmıyorum.

Doğrudur, Python bazen birazcık garip gelebilir. Mesela, Python sıkı bir şekilde girintilemeye (indentation) dayalıdır ve bu bazılarını rahatsız edebilir. Katılırsınız ya da katılmazsınız, ama basitliğini görebilirsiniz.

İşte bir başka gariplik: Her metodun ilk parametresi nesnenin kendisine bir referansdır. (C++ içinde aynı şey geçerlidir fakat parametre gömülüdür, siz ayrıca kodlamazsınız. Python için kendiniz ayrıca kodlamanız gerekir.)

__str__ fonksiyonunda karakter katarını oluştururken kullandığım ilginç yönteme dikkat edin: Tırnaklar içine her bir eleman için yer tutucu olarak %s karakterlerinin kullanıldığı bir dizi yerleştirdim. Tırnağı kapattıktan sonra bir "%" koydum ve yertutucuların sırası ile yerini alacak olan değişkenleri virgülle ayırarak yerleştirdim. Hoş değil mi?

Yukarıdaki örnek kodda, sınıfı oluşturduktan sonra, bir liste tipinde değişken oluşturdum, listeye bir tamsayı, bir string ve son olarak MyClass isimli sınıfımın bir örneğini ekledim. Ardından liste üzerinde ilerleyen bir döngü oluşturdum ve her bir elemanı ekrana yazdırdım. İşte ekran çıktısı:

  10
  python is great
  Sam=80
Evet, bu 30 saniyelik hızlı bir Python tanıtımıydı. Fakat asıl amacımız neydi? Python'un favori programlama dilim olmasının yanında, favori birde platformum var: Microsoft .NET

Evet kabul ediyorum. Python'un açık kaynak diline bayılıyorum ama aynı zamanda .NET'i de seviyorum. İlginç olan nedir biliyor musunuz? Python'un .NET'i doğal olarak kullanan bir implementasyonu var. Adı IronPython, indirmek için www.microsoft.com/downloads adresine uğrayın ve arama kutusuna IronPython yazın.

Bu yazı yazıldığı sırada IronPython hala beta aşamasındaydı. Bu yüzden direkt link vermek yerine Microsoft'un download sitesinin adresini verdim.

Ç.N.: IronPython bugün itibari ile 1.0.1 versiyonuna ulaşmış durumda. Codeplex sitesinde barınan projenin ana sayfası burada.

Toplam 5 yazıdan oluşan bu makalenin devam bölümleri de en kısa zamanda burada yerini alacak.

Çeviri: Zekeriya KOÇ

Reprinted from DevSource.com, a Ziff Davis Media property, all rights reserved, Ziff Davis Media, 28 East 28th St., New York, NY, USA

Görüşler

0
tongucyumruk
Çok başarılı bir çeviri olmuş. Elinize sağlık...
0
Tarık
Çok çok güzel bir yazı, çeviride bir o kadar düzgün ve anlaşılır gerçekten çok iyi. Teşekkür ederim kendi adıma. Devamını sabırsızlıkla bekliyorum. Saygılar...
0
FZ
Öncelikle elinize sağlık. .NET ve bunun üzerinde çalışan Python olan IronPython ile ilgili bu dizinin diğer bölümlerini de heyecanla bekliyoruz (hatta belki .NET üzerinde Lisp temalı özgün yazılarınız da gelir buraya, kimbilir ;-).

Birkaç eleştiri: "Python kısaca güzellikten başka bir şey değildir." yerine "Python güzelliğin ta kendisidir." yahut "Python safi güzelliktir." desek daha güzel bir ifade olabilir diye düşündüm.

"Liste veri tipi doğrudan dilin içine gömülmüş durumda." cümlesine bakıp içinde bir yerde "embedded" geçmiş olabileceğini düşünüyorum "gömülmüş" lafından ötürü ama belki "dilin bir parçasıdır" dense daha iyi olurdu.

"İşte, bir satır Python kodu" cümlesinde "İşte"den sonra virgül gereksiz. "İşte bir satırlık Python kodu" daha kolay okunup anlaşılabilirdi diye düşünüyorum.

"Şimdi kendi tanımladığınız bir sınıfın örneğini yaratmak isteyebilirsiniz?" cümlesi bir soru cümlesi olmadığı halde sonunda soru işareti var.

"Emin olun bunuda yapabilirsiniz." cümlesinde "bunu da" olmalı.

", ikincisi ise sınıfın karakter olarak yapısını döndüren bir fonksiyondur." cümle parçası biraz sorunlu göründü bana, programcı olarak ne demek istediğinizi anlıyorum ama "bir sınıfın karakter olarak yapısını döndürmek" biraz sorunlu bir ifade şekli gibi geliyor bana.

"yertutucu" mu yoksa "yer tutucu" mu? Her ikisi de var metinde.

Şu "implementasyon" lafı için doğru dürüst bir karşılık bulamadık gitti :)

0
zekzekus
Öneriler, uyarılar, eleştiriler için teşekkür ederim. Bundan sonraki çalışmalarım için bir kenara not ettim. Aslında sizin yorumunuzu -dil,yazım konusunda eleştiriler içereceğini tahmin ettiğim için-özellikle bekliyordum :))
Görüş belirtmek için giriş yapın...

İlgili Yazılar

Keyif Modellemesi: Yapay Zekâ mı Makina Öğrenmesi mi? Peki Ya Televizyon?

FZ

Fakirin TV Film Tavsiyecisi

GÜNCELLEME: Debian ve Ubuntu kullanıcıları lütfen 32333 numaralı yoruma baksınlar!

Bu makalede bilgisayarın basit bir keyif modellemesi için nasıl kullanılabileceği anlatılacaktır. Modellenecek keyif yazarın yani benim keyfim olup ortaya çıkmış olan yazılım kolayca bir başkasının keyfinin modellenmesi için de kullanılabilir.

IronPython: .Net üzerinde Python - Bölüm - 3

zekzekus

IronPython: dot Net üzerinde Python - 1
IronPython: dot Net üzerinde Python - 2
Yazının özgün haline bu adresten ulaşabilirsiniz.

IronPython içinde bir sınıf oluşturup bunu "System.Object" sınıfından türettiğinizde, IronPython .NET sistemine bir çağrı yapar ve dinamik olarak yeni bir CLR sınıfı oluşturur. IronPython sınıfınıza bir isim atar ve sınıfı kendi "IronPython.NetTypes.System" sınıfına yerleştirir. (Tabii ki Beta versiyon üzerinde çalıştığımızı gözününde bulundurmalısınız. IronPython'ı geliştirenler bu isimuzayı adlarını değiştirebilirler.) Sanırım Poe "Rüya içinde Rüya" gibi bir şeyler yazmıştı. Bu durumda bizde .NET içinde .NET uyguluyoruz. Ya da öyle bir şey işte.

python.org yenilendi!

larweda

Yıllardır aynı altyapı ile hizmet veren python'un evi python.org, yenilenmiş tasarımı ve daha önemlisi yenilenmiş logosu ile yayına başladı.

IronPython 1.0 Yayınlandı

zekzekus

5 Eylül 2006 tarihinde Python programlama dilinin Microsoft .NET Platformu üzerinde çalışan sürümünün 1.0 versiyonunun hazır olduğu açıklandı ve kaynak kodları ya da runtime kütüphaneleri olarak indirilmeye hazır. Buradan projenin ana sayfasına ulaşabilirsiniz.

Web Sitesi Performans İyileştirmeleri

muhuk

Yakın zamanda telvee'nin biraz daha hızlı yüklenebilmesi için django_compressor kullanarak ve arkaplan resimlerini düzenleyerek iyileştirmeler yaptım. İşin güzel yanı bunları gerçekleştirirken geliştirme ortamında veya tasarımda köklü değişiklikler yapmamın gerekmemesiydi. Detaylardan aşağıda bahsedeceğim. Daha önce konunun teorik kısmına kısaca değinmek istiyorum.