Hangisinden Başlamalı? Python 2.x mi yoksa 3.x mi?
Sıkça sorulan bir soru olduğu için, bu yazıda “Python’u öğrenmeye hangi sürümle başlamalıyım?” sorusuna genel bir cevap vermeye çalışacağım.
Hepimizin bildiği gibi, Python 3.x sürümleri Python’un 2.x sürümleriyle uyumlu değil. Yani Python 2.x ile yazılmış bir program, Python’un 3.x sürümlerinde çalışmayacaktır. Bu söylediğimin tersi de geçerlidir: Buna göre, Python’un 3.x sürümlerinden biriyle yazdığınız bir programın Python’un 2.x sürümlerinde çalışmasını beklememelisiniz.
Diyelim ki Python programlama dilini öğrenmeye karar verdiniz. Bu dile sıfırdan başlayacak biri olarak acaba hangisini seçmeniz gerekir? Eski sürümü mü? Yoksa yeni sürümü mü?
Python’un 2.x sürümleri çok uzun süredir kullanılıyor. Dolayısıyla yıllar içinde üretilmiş Python programları, üçüncü parti modüller ve belge kaynakları hep 2.x sürümleri temel alınarak hazırlanmış durumda. Henüz ortada Python 3.x’le yazılmış kayda değer bir program olmadığı gibi, hemen her Python programında ihtiyaç duyulan üçüncü parti modüllerin neredeyse hiçbiri henüz Python 3.x’e aktarılmış da değil.
Duruma GNU/Linux dağıtımları açısından bakacak olursak, dağıtımlarda ana Python paketlerinin hep 2.x olduğunu görüyoruz… Yani konsolda “python” komutunu verdiğinizde karşınıza çıkacak Python sürümü 2.x olacaktır (Genellikle 2.5.2 sürümü…)
Python 3.x paketleri henüz dağıtımların depolarında da yer almıyor. Şu anda Python 3.x paketlerini kullanıcılarına sunduğunu bildiğim tek dağıtım Ubuntu Jaunty Jackalope. (Bu dağıtımın kararlı sürümü 23 Nisan’da sunuculardaki yerini alacak).
Python 3.x’i öğrenebilmek için gereken belge kaynakları da henüz kararlı bir duruma ulaşmış değil. Bu konudaki temel başvuru kaynağımız olan resmi belgeler sürekli olarak güncelleniyor. Mesela bu belge en son güncellemeyi bugün görmüş…
Eğer Python programlama dilini öğrenmeye Python 3.x ile başlamak istiyorum diyorsanız, İngilizce bilmek zorundasınız. Çünkü etraftaki üç-beş Python 3.x belgesinin tamamına yakını İngilizce. Üstelik bu kaynaklar da henüz 2.x belgeleriyle kıyas kabul etmeyecek derecede eksik. İngilizce bilmeyen arkadaşlarım için ben naçizane istihza.com’da Türkçe belgelendirme çalışmalarını yürütüyorum. Python 3.x hakkında bilgi edinmek isteyen arkadaşlarım istihza.com‘daki Python 3.x sayfalarına göz gezdirebilir…
Python kullanıcılarını ilgilendiren önemli bir konu da arayüz tasarımı… Python’la arayüz tasarlamak istiyorsanız ve illa Python 3.x kullanacaksanız şu an için elinizdeki tek seçenek Tkinter olacaktır. Ancak Tkinter ile arayüz tasarlarken mutlaka gereksinim duyacağınız PIL (python-imaging) modülü de henüz Python 3.x’e aktarılmış değil. Dolayısıyla Tkinter ile hazırladığınız programlara resim eklemek isterseniz büyük sıkıntı yaşarsınız.
Tkinter’e iyi bir alternatif olarak düşünülebilecek olan wxPython’un durumu ise biraz karanlık… Bu arayüz takımına ait kullanıcı listelerinde geliştiricisinin söylediğine göre, wxPython’un Python 3.x’e taşınabilmesi için henüz doğru dürüst bir hazırlık yapılmış değil…
Sözün özü, Python programlama dilini Python 3.x ile öğrenmek isteyenler kendilerini hareket imkanı kısıtlı bir ortamda bulabilir…
“Python 2.x mi, yoksa 3.x mi?” sorusuna cevap bulabilmek için elbette Python’un baş geliştiricisi Guido Van Rossum’un bu konudaki fikirlerine de kulak vermek gerekir. Kendi sitesinde, http://www.artima.com/forums/threaded.jsp?forum=106&thread=211200 adresinde belirttiğine göre, Python 3.x’i öğrenmeye başlamak için daha 2 yıl beklemek gerekiyor. Guido Van Rossum’un bu yorumu 28 Temmuz 2007 tarihinde yaptığını düşünürsek, 2 yılın dolmasına pek fazla vakit kalmamış gibi görünüyor… Ama şu anki duruma bakılacak olursa, bu “2 yıl” tahminini, yukarıda belirttiğim sebeplerden ötürü birazcık daha uzatmakta fayda var… O yazıda Van Rossum Python öğrenmek isteyenlere 2.6 sürümüyle başlamalarını tavsiye ediyor. Benim fikrim de açıkçası bu yönde. Python’un 2.6 sürümünü hakkıyla öğrenen bir kişi Python 3.x’e uyum sağlamakta zorluk çekmeyecektir, çünkü Python’un 3.x sürümüne ait pek çok özellik Python 2.6 sürümünde de çalışıyor. Ayrıca Python 2.6 ile program yazarken, eğer Python 3.x ile uyumlu olmayan bir kod yazarsanız, Python 2.6, yazdığınız bu kodun 3.x’te çalışmayacağı konusunda sizi uyaracak, bu da Python 3.x’e uyum sağlama açısından size büyük bir kolaylık sağlayacaktır.
Velhasıl-ı kelam, Python’un 2.x sürümleri daha uzun bir süre bizimle beraber olmaya devam edecek. Zaten Python’un resmi belgelerinden de anlaşılacağı gibi, Python 3.x sürümlerinin geliştirilmesi devam ederken, Python 2.x de uzun bir süre destek görmeye ve geliştiştirilmeye devam edecek… Dolayısıyla eğer Python öğrenmeye yeni başlayacaksanız, Python’u öğrenmeye 2.6 sürümüyle başlamalı, bu arada da Python 3.x’teki gelişmelere de kulak kabartmalısınız… Hem zaten eski kodları anlayabilmenin, Python deneyiminiz açısından önemli bir artı olduğunu rahatlıkla söyleyebilirim.
O zaman orta yolu bulup 1 yıl sonra öğrenmeye başlayalım.
C kasın gençler
yanına da bash/sed/gawk… üstüne de perl sosu koyun olmazsa:)
gerisi yalan
fırat abi engelle şu adamı ya
utanmasa boş işler bunlar bırakın diyecek
Ben uzun bir süre boyunca bu ikilemde kaldım.Hangisini öğrenmeliyim diye.(c ve python arasında)
Ama bence bu devirde Python,Java,C#,Ruby bu dillerden biri öğrenilmeli.
Tabi bu biraz ne yapmak istediğinizle alakalı.Bir Güvenlik Uzmanı’nın Assembly bilmesi bile gerekebilir.
İyi günler Fırat bey,
21 Nisan 2009 tarihi itibari ile kaleme aldığınız bu güzel makalede, Python 2.x sürümünü öğrenmemizi tavsiye ediyorsunuz.
Makalede bahsettiğiniz konular ;
( *Henüz ortada Python 3.x’le yazılmış kayda değer bir program olmadığı gibi, hemen her Python programında ihtiyaç duyulan üçüncü parti modüllerin neredeyse hiçbiri henüz Python 3.x’e aktarılmış da değil.
*Python 3.x’i öğrenebilmek için gereken belge kaynakları da henüz kararlı bir duruma ulaşmış değil, …vb)
hala Python 2.x’i tercih etmemiz için geçerli mazeretler midir?
Selametle kalın…
Merhaba,
O gün söylediklerim çoğunlukla bugün için de geçerli. Python3 hala ek modüller ve örnek programlar bakımından Python2′ye göre çok geride…
@istihza, fakat bu da aklımızda şöyle bir soruya sebeb oluyor. Neden 2009dan bu yana kadar python3′e başlayacak kadar gelişim göstermedi. Yoksa bu dil durgunluk dönemine mi girdi, fazla ilgi gösterilmiyor mu?
python 3x hala hazır değil mi değilse tamen hazır olması ne kadar sürer
Ne kadar süreceğini kimse bilemez. Bunu zaman gösterecek. Ayrıca aslında tamamen hazır olmak diye bir şey yok. Bunu kendi ihtiyaçlarınıza göre değerlendireceksiniz. Eğer yazmak istediğiniz bir programı Python3 ile yazabiliyorsanız Python3 sizin için hazır demektir.
selam millet
”)
cok fazla makalelerinizi okuymadım bi sıra düzenine göre gidiyorum ders 1 den basladım kitabınızlada pekistiiryorum yani ilerde socket programlama 2 ayrı ip adresine baglı server client pc ler için makaleniz vardır umarım bu bana ilere cok lazım olcak bisey..
print(“selam fırat hocam
4 gün kadar oluyor kitabınızı aldım 2, baskısıda cıkmıs bulursam onuda alıcam python3 ögrenmek istiyordum ama formunuzda p3 için sqlite3 gibi db makaleleri göremeyince ve uzunca bi java,ruby,c,c++,c#,vb,vb.net,c.net,php.net,o.net bu net derken tam kayısı attırıyordum karar verebildim py2 cok sükür
böyle bi forum olusturdugnuz için tesekkür ederim..
Merhaba, Python 2 bölümünde işlemeye fırsat bulamadığımız bölümler Python 3′te olacak. Ayrıca Python 3 bölümünü çok daha ayrıntılı olacak şekilde yazıyorum.
Merhaba Fırat bey python’un çok meraklısıyım fakat etrafımdaki kullanıcılar visual basic kullandıkları için bu dil bana sanki visual basic’in yapacaklarını yapamaz diye düşündürüyor ? gerçi daha 40. sayfadayım da
mesela visual basicte buton yapımı çok kolay tutup çekiyorsun üstüne çift tıklayınca butona görev veriyorsun aynısını bu programlama dilinde de yapabilirmiyiz ?
python 2.7.2 kullanıcısıyım bu arada