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

PISI Geliştirme Deposu

exa

PISI'nın yeniden canlandırılan geliştirilme dalına ait kaynak kodunu github'da bulabilirsiniz. Kaynakların şu andaki revizyonu 1.1_beta12'dir. Bu revizyonu yerel subversion çalışma kopyalarımdan yükledim, Pardus projesindeki en son idare ettiğim geliştirme dalı deposuna aittir. Dalla ilgili bilgileri aşağıda kendiniz görebilirsiniz.

$ svn info . Path: . Working Copy Root Path:...

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

zekzekus

Makalenin 1. bölümü için tıklayınız. Yazının özgün haline bu adresten ulaşabilirsiniz.

Python .NET ile buluşuyor.

Eğer hem Python hem de .NET'e aşinaysanız bazı problemleri hemen farkedebilirsiniz. Yeni başlayanlar için belirtelim Python, .NET içinde tam karşılığı olmayan -bahsettiğimiz liste tipi gibi- gömülü veri tiplerine sahiptir.

Merak etmeyin; bütün bunlar halledilmiş durumda. Ama önce bir örnek yapalım. IronPython, aynı klasik Python yorumlayıcısı gibi çalışan bir konsol programı ile birlikte gelir.

Django Girls etkinliklerinden öğrendiklerimiz

elifkus

Kodlama saati yazısını görünce ben de Django Girls’ü ve İstanbul’daki etkinliklerimizden ve öğrendiklerimizden bahsedeyim dedim.

Amerika’da ve Dünya’da yazılımcıların kadın oranını arttırmak için birçok organizasyon ve etkinlik var. Django Girls, bunlardan biri. Ola Sitarska and Ola Sendecka adında iki Polonyalı kadın yazılımcı tarafından başlatılmış, 1 veya 2 günlük bir programlama etkinliği....

Python, Google'ın da desteği ile ilerlemeye devam ediyor

FZ

Google'ın Python programlama diline olan ilgisi dikkat çekmeye devam ediyor. Eğer SOA (Service Oriented Architecture) tarzı uygulamalar için hızlı prototip geliştirmek istiyorsanız istediğiniz işlevselliği büyük ihtimalle Python 3.0'da bulacaksınız.

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.