ana sayfa > Python > Hangisinden Başlamalı? Python 2.x mi yoksa 3.x mi?

Hangisinden Başlamalı? Python 2.x mi yoksa 3.x mi?

Salı, 21 Nis 2009

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.

Python , ,

  1. Erdem Artan
    Salı, 21 Nis 2009 zamanında 23:43 | #1

    O zaman orta yolu bulup 1 yıl sonra öğrenmeye başlayalım.

  2. Çarşamba, 22 Nis 2009 zamanında 12:48 | #2

    C kasın gençler :) yanına da bash/sed/gawk… üstüne de perl sosu koyun olmazsa:)

    gerisi yalan :)

  3. Erdem Artan
    Çarşamba, 22 Nis 2009 zamanında 15:41 | #3

    fırat abi engelle şu adamı ya :D utanmasa boş işler bunlar bırakın diyecek :P

  4. Çarşamba, 22 Nis 2009 zamanında 16:14 | #4

    :) Allah’ından bulsun!.. Müslüman mahallesinde salyangoz satmaya çalışıyor… :)

  5. Çarşamba, 22 Nis 2009 zamanında 19:05 | #5

    :D

  6. Pazar, 28 Kas 2010 zamanında 13:32 | #6

    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.

  7. Pazar, 30 Oca 2011 zamanında 14:51 | #7

    İ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…

  8. Pazartesi, 31 Oca 2011 zamanında 09:06 | #8

    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…

  9. Cihad
    Çarşamba, 09 Şub 2011 zamanında 15:42 | #9

    @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?

  10. yunusemrecan
    Cuma, 22 Nis 2011 zamanında 15:33 | #10

    python 3x hala hazır değil mi değilse tamen hazır olması ne kadar sürer

  11. Cuma, 22 Nis 2011 zamanında 15:52 | #11

    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.

  12. Çarşamba, 15 Haz 2011 zamanında 12:16 | #12

    selam millet
    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 :D 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..
    böyle bi forum olusturdugnuz için tesekkür ederim..

  13. Cuma, 17 Haz 2011 zamanında 10:42 | #13

    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.

  14. Rafi Yıldırım
    Çarşamba, 25 Oca 2012 zamanında 15:26 | #14

    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 ?

  15. Rafi Yıldırım
    Çarşamba, 25 Oca 2012 zamanında 15:29 | #15

    python 2.7.2 kullanıcısıyım bu arada

  1. Salı, 22 Eyl 2009 zamanında 22:49 | #1
  2. Cuma, 05 Mar 2010 zamanında 21:59 | #2
  3. Pazar, 18 Nis 2010 zamanında 01:18 | #3
  4. Perşembe, 20 Oca 2011 zamanında 20:33 | #4
  5. Perşembe, 24 Mar 2011 zamanında 18:07 | #5