18 Nisan 2013 Perşembe

Python 2.x ve 3.x Sürümleri

Başlığımızdan da anlaşılacağı gibi şu an piyasada iki tane Python sürümü bulunmaktadır. Eğer kullandığınız Python sürümü 2 ile başlıyorsa 2.x sürümüne,3 ile başlıyorsa 3.x sürümüne aittir. Bu yüzden program yazmaya başlarken hangi sürümün kullanıldığına dikkat edilmelidir.

Peki neden bu şekilde ayrı bir sürüm oluşumuna ihtiyaç duyulmuştur?
Python'un baş geliştiricisi Guido Van Rossum 2.x'de olan uyumluluk sorunlarına ve bulunan hatalara son vermek için 2.x üzerinde düzgün bir düzeltme yapmaya karar vermiştir. Bunun sonucunda da 3.x sürümü ortaya çıkmıştır. Python da bilinmesi gereken en önemli noktalardan biri de 3.x'te yapılan radikal değişikliklerden dolayı Python 2.x ve 3.x birbirini desteklemez duruma gelmiş olmasıdır. Yani Python 2.x'te yazdığımız program Python 3.x'te çalışmaz ve bunun tam tersi şekilde Python 3.x'te yazdığımız bir program da Python 2.x'te çalışmaz.

Günümüze kadar Python 2.x ile bir çok program yazılmıştır. Bu programlar Python 3.x'te geliştirilemeyeceği  için Python geliştiricileri bir süre daha 2.x sürümünü geliştirmeye devam edeceklerdir. Ama şu bilinmelidir ki; Python'un geleceği Python 3.x'tir. Python 2.x çok sürmeden tozlu  raflardaki yerini alacaktır. Bu konu üstünden devam etmek gerekirse Python 3.x, 2.x'e göre çok daha kararlı ve güçlü bir dildir. En büyük dezavantajı ise Python 2.x'i desteklemiyor olmasıdır. Bu yüzden de büyük program geliştirmiş kişiler veya kurumlar Python 3.x'e geçmek konusunda hala kuşkuludurlar.

3.x ile en büyük değişimlerden biri de Unicode üzerinde yapılmıştır. Python 2.x kullanırken Ascii karakterlerin dışındaki karakterler kullanılamıyordu. Bu sorun 3.x ile birlikte ortadan kaldırılmıştır. Bir örnek vermek gerekirse aşağıdaki tanımlama Python 2.x'te yapılamazken 3.x'te yapılabilmektedir.

  değişken = 123456

Hangi Python Sürümünü Öğrenmeliyim?
İlk önce şunu söylemek gerekir ki; Python'u yeni öğrenmeye başlayan biriyseniz Python'un geleceği olan 3.x'i öğrenmeniz hem daha mantıklı hemde sizin açınızdan daha faydalıdır. Şu anda GNU/Linux dağıtımları ve Mac işletim sistemlerinde ön tanımlı Python sürümü olarak 2.x gelmektedir. Bu sorunu ve bazı kütüphaneleri desteklememesini saymazsak Python 3.x kullanıma tamamen hazırdır. Şunu da söylemek gerekir ki; GNU/Linux dağıtımı işletim sistemlerinde ön tanımlı olarak Python 2.x gelse de Python 3.x paketleri de kullanıcılara sunulmaktadır.

Bunları söyledikten sonra hangi sürümü kullanacağımızı yazacağımız programa göre seçmek daha mantıklı olacaktır. Eğer yapmak istediklerimizi Python 3.x ile yapabiliyorsak onu seçmemiz bizim için daha iyidir. Daha önce de bahsettiğimiz gibi Python 3.x bazı kütüphaneleri desteklememektedir. Eğer biz bu kütüphanelerden herhangi birini kullanmak istersek mecburen 2.x sürümünü kullanmak zorundayız.

Python 3.x’i desteklemeyen önemli uygulamalar arasında Twisted (ağ programlama ve başka pek çok şey için kullanılan bir kütüphane), gevent (Twisted’a benzeyen, ama farklı özellikleri olan bir kütüphane), Django ve Pylons (web siteleri hazırlamaya yardımcı uygulamalar), PyGTK ve PySide (grafik arayüz tasarımı), py2exe (programlarınızı Windows için paketlemeye yarayan bir kütüphane), PIL (resim işleme) ve numpy (sayı işlemleri) sayılabilir.
Bu kütüphaneler şuanda 3.x tarafından desteklenmiyor olsa da çalışmaları halen devam etmektedir.

Python 3.x ile ilgili bir sorunla karşılaştığınızda bulabileceğiniz dokümanların bir çoğu 2.x ile ilgilidir. Python'un asıl kullanıcıları olan ve onunla program yazan kişiler halen tam olarak 3.x'e geçiş yapmadıkları için bu tarz sıkıntılar da yaşanmaktadır.

"Ben Python 2.x kullanıyorum ve 3.x'in yeniliklerinden mahrum mu kalacağım?" diye düşünüyorsanız. Bu durum tamamen bu şekilde değildir. Python 3.x ile gelen yeniliklerin bir çoğu 2.x sürümüne de aktarılmıştır. Ama şunu söyleyebiliriz ki; Python 2.x ile yaptıklarınız 3.x kadar şık ve zarif olmayacaktır. Tabi ki 3.x ile gelen yeniliklerin tümü 2.x'e aktarılmamıştır. Bu özellikleri şu şekilde sayabiliriz;

  • Açıklamalı Fonksiyon Parametreleri (function annotations).
  • Sadece isimli argümanlardan oluşan fonksiyonlara ait söz dizimi.
  • Genişletilmiş demet çözme.
  • Yerel olmayan değişken tanımlama.

Son olarak şundan da bahsedebiliriz. Elimizde bulunan 2.x kaynak kodlarından 3.x kaynak kodlarının üretilmesini sağlayan 2to3 ve 3.x kaynak kodlarından 2.x kaynak kodlarının üretilmesini sağlayan 3to2 betikleri bulunmaktadır. Tabi ki 3to2 dönüşümü yaparken 3.x'in özelliklerini kullanan kodların dönüştürülmesi pek mümkün olmayabilir.

Yararlanılan Kaynaklar:
http://belgeler.istihza.com/py3/python_hakkinda.html#farkli-python-surumleri
http://wiki.python.org/moin/Python2orPython3

0 yorum :

Yorum Gönder