arşiv

yazılar buna göre etiketlendi; ‘Python3’

Yeni Python3 Belgeleri

Pazartesi, 02 Oca 2012

Uzun süredir üzerinde çalıştığım yeni Python3 belgelerinin bir kısmını bugün yayımladım. Bu belgelere http://www.istihza.com/beta/py3/icindekiler_python.html adresinden ulaşabilirsiniz.

Aslında elimde sitede gördüğünüzden daha fazla belge var, ama bu belgeleri yayımlayabilmek için, içeriğin hazır olması yetmiyor ne yazık ki. Belgelerin sunumu ile de epey uğraşmak lazım. O yüzden, bu belgeleri yayımlanabilir hale getirebilmek için bunların üzerinde biraz daha çalışmam gerekiyor. Belgeler hazır oldukça sunucuya yükleyeceğim.

http://www.istihza.com/py3/icindekiler_python.html adresinde bulunan eski belgelerde Python3′ün 3.0 sürümünü ele almıştık. Yeni belgelerin eski belgelerden farkı ise, yeni belgelerde Python3′ün daha yeni bir sürümünün (Python 3.2.2), çok daha ayrıntılı bir şekilde anlatılıyor olması.

Yeni Python3 belgelerinin başka bir önemli özelliği de Python ve Tkinter’in birlikte anlatılmış olması. Bu belgelerde öğrenci komut satırı ve grafik arayüz tasarımını birlikte öğrenecek. Bu sistemin öğrencinin motivasyonunu artıracağını düşünüyorum. Bu kararın gerekçelerini belgelerde şu şekilde açıklamaya çalıştım:

Bir programlama dilini öğrenirken, öğrencinin karşısındaki en büyük engel öğrenilmesi gereken şeylerin çokluğu veya zorluğu değildir. Aslında öğrencinin öğrenme motivasyonunu kırabilecek, onu yolundan alıkoyabilecek en önemli etken, öğrendiği bilgileri kafasında bir yere oturtamamasıdır. Yani öğrenci bir programlama dilini öğrenirken, özellikle de henüz yolun başındaysa ve daha önce de herhangi bir programlama dili deneyimi olmamışsa, öğretilen şeyler ona gereksizmiş gibi gelebilir. Hatta öyle ki, zaman zaman anlamsız ayrıntılarla vakit kaybettiği hissine dahi kapılabilir.

Bu kitapta şimdiye kadar öğrendiğimiz bilgilerden örnek vermemiz gerekirse, kapkara bir ekrana “Merhaba Zalim Dünya!” yazdırmanın son derece gereksiz ve aslında hiçbir işe yarayamayan bir çaba olduğunu düşünebilir. Öğrenci (doğal olarak) her zaman sabırsızdır. Bir an önce sonuca varmak, emeklemeyi öğrenmeden koşmak ister.

Bu kitaptaki konuları okurken siz de yukarıda anlatılan sabırsızlık ve manasızlık duygusuna kapılmış olabilirsiniz. Ama aslında bunun çok doğal bir his olduğunu asla aklınızdan çıkarmayın ve bir an da olsa kafanızdan geçen bu hislerin sizi yolunuzdan döndürmesine, motivasyonunuzu kırmasına izin vermeyin. Unutmayın ki, bütün büyük programlar, minicik ayrıntıların programcı tarafından ustaca bir araya getirilmesi sonucu ortaya çıkar. Hatta şöyle diyebiliriz: Programlama, bir yap-bozun parçalarını birleştirmek gibidir. Yap-bozun parçalarına tek tek baktığınızda bu parçalar bütüne dair bir anlam ifade etmeyebilir. Asıl manzara bu anlamsız görünen küçük parçaları birleştirdiğinizde ortaya çıkar…

Aslında bu anlattıklarımız sadece programlama öğrenen öğrenciler için değil, her konunun öğrencileri için geçerlidir. Örneğin okullarda İngilizce öğretilirken ilk verilen bilgilerden biri “This is an apple!” (Bu bir elmadır) cümlesidir. Belki bu cümleyi hayatınız boyunca hiçbir zaman kullanmayacaksınız. Ama bu cümlede geçen ve ilk bakışta dikkatinizi çekmemiş olabilecek ayrıntılar aslında İngilizce’nin yapısı ve mantığı hakkında son derece önemli bilgiler içeriyor. Böyle bir cümle kurmadan, daha karmaşık cümleler kuramazsınız. Aynı şekilde, bizim bu kitapta size öğrettiğimiz print("Merhaba Zalim Dünya!") komutunu da yazdığınız programlarda muhtemelen hiçbir zaman kullanmayacaksınız. Ama tıpkı “This is an apple!” cümlesinde olduğu gibi, print("Merhaba Zalim Dünya!") ifadesi de Python programlama diline dair çok önemli ayrıntıları içinde barındırır. Aynı şekilde, bu komutu yazabilmek de önemli ve büyük programlar üretebilmenin ilk adımıdır.

Öğrencinin yaşadığı bu ikilem sadece kendisini değil, herhangi bir konu üzerine öğretici belge hazırlayanları da bir hayli zorlar. Çünkü herhangi bir konu üzerine öğretici belge hazırlayanların aşması gereken en büyük zorluk, anlatılacak konuları düzgün bir şekilde hazırlamaktan ziyade, yukarıda söz edilen heves kırıcı etkenleri bertaraf edip, okurun ilgisini sürekli ayakta tutabilmektir.

Konuyu programlama açısından ele alacak olursak, aslında öğrencinin hevesini kıran şey biraz da komut satırının kasvetli havasıdır. Bir programlama dilini öğrenmeye çalışan kişi günlük yaşamında sürekli olarak modern grafik arayüzlere sahip programlarla karşılaşırken, kendi öğrenme deneyimi sırasında siyah bir ekranla uğraşmak zorunda kalmak pek hoşuna gitmeyebilir. Öğrencinin komut satırıyla birlikteliği uzadıkça, sabırsızlığı da artacak, bir an önce pencereli-düğmeli programlar yazabilme arzusu yüzünden öğrenmesi gereken temel bilgilere odaklanmakta dahi zorluk çekebilecektir.

Bu kitapta, yukarıda sözü edilen sıkıntıları en hafife indirmek için biz öğrenciyi grafik arayüz programlama ile erkenden tanıştırma yoluna gideceğiz.

Elbette Python programlama dilini bu kitap aracılığıyla öğrenmek isteyenler arasında, Tkinter’e (veya genel olarak grafik arayüz programlamaya) hiç bulaşmadan sadece Python öğrenmek isteyenler de olabilir. İşte biz onları da düşünerek grafik arayüz konusunu ayrı bir bölüm olarak tasarladık. Bundan sonraki her dersin sonunda “Tkinter” adlı bir bölüm de yer alacak. Eğer grafik arayüz konusunu öğrenmek istemeyenlerdenseniz ders sonlarındaki Tkinter adlı bölümleri es geçebilirsiniz. Bu bölümleri görmezden gelmeniz Python’ın kendisine ilişkin bölümlerdeki konuları anlamanızı zorlaştırmaz veya herhangi bir şekilde etkilemez.

Grafik arayüz programlama ile komut satırı programlama konularının bir arada anlatılmasının gerekçesi, bir an önce pencereli-düğmeli programlarla tanışmak isteyenlerin ihtiyacına cevap verebilmektir. Eğer “benim böyle bir ihtiyacım yok!” diyorsanız alnınız dik, başınız ileride yolunuza devam edebilirsiniz.

Esasında her öğretme biçiminin kendine has artı ve eksi yönleri vardır. Bu açıdan, dezavantajsız bir öğretme biçiminden söz etmek pek mümkün olmayacaktır.

Bir programlama dilini sadece komut satırı üzerinden öğretmeye çalışmanın dezavantajlarından yukarıda bahsetmiştik. Grafik arayüz programlama, özü itibariyle ileri düzey bir konu olduğu ve kavramlar açısından komut satırı programlamaya göre önemli farklılıklar içerdiği için öğrenciyi erkenden grafik arayüz programlama ile tanıştırmanın da bazı dezavantajları olabilir. Ancak Python programlama dili özelinde düşünürsek, bir Python programcısı, örneğin bir C programcısına kıyasla programlama macerası boyunca grafik arayüze sahip programlarla çok daha fazla haşır neşir olacaktır. Çünkü Python programlama dili, yapısı itibariyle grafik arayüz geliştirmeye, C programlama diline göre çok daha uygundur. Üstelik biz bu öğretme biçiminin olası dezavantajlarını en aza indirmek için elimizden geleni de yapacağız.

Yeni Python3 belgelerini beğeneceğinizi umuyorum. Her zaman olduğu gibi, bu belgeleri hazırlarken de amacım kaliteli, anlaşılır ve modern bir Türkçe kaynak ortaya çıkarmaktı. Bu amaca ulaşmak için elimden gelen çabayı gösteriyorum. Ancak elbette bu belgelerde bazı hatalar ve eksiklikler de olacaktır. Belgelerde bulduğunuz hataları ve eksiklikleri kistihza [at] yahoo [nokta] com adresinden bana iletebileceğiniz gibi, http://www.istihza.com/forum adresinde de dile getirebilirsiniz.

Python programlama dili ile ilgilenen herkese faydalı olması ümidiyle…

istihza.com, Python , ,

GNU/Linux Dağıtımlarında Python3 Bağımlılıkları

Salı, 15 Kas 2011

Hatırlarsanız geçen aylarda şöyle bir çalışma yapmıştık:

http://www.istihza.com/blog/istihza-comda-python3.html/

Bu çalışmada amacımız, Python3′ün kaynaktan derlenmesi esnasında, farklı GNU/Linux dağıtımlarında hangi paketlerin halihazırda kurulu olması gerektiğini tespit edebilmekti.

Buradan çıkan sonucu http://goo.gl/zfLpX adresine yerleştirdim. Eğer oradaki tabloda gördüğünüz eksiklikler varsa veya farklı bir dağıtım için bağımlılık listesi girmek istiyorsanız sayfayı düzenleyebilirsiniz.

istihza.com, Python , ,

istihza.com Wiki

Pazartesi, 14 Kas 2011

Bildiğiniz gibi, istihza.com üzerinde Python2 belgelerinin yanısıra, bir de Python3 belgeleri yer alıyor. Ancak yine bildiğiniz gibi, sitedeki Python3 belgeleri uzun zamandır güncellenmedi. Haliyle bu belgelerde Python3′ün eski bir sürümü ele alınıyor.

Sitedeki Python3 belgelerini güncellemek ve daha kapsamlı bir hale getirebilmek için, çok uzun bir süredir bu belgeler üzerinde çalışıyorum. Ancak gün içinde beni meşgul eden çok fazla şey olduğu için belgeler üzerindeki çalışmalarım pek hızlı ilerleyemiyor ne yazık ki… Ama hızımız yavaş da olsa, sonuçta ortada bir ilerleme olduğu için bu belgeler önünde sonunda tamamlanacak.

istihza.com ekibi, tasarım ve içerik üzerinde gece gündüz titizlikle çalışıyor...

Dediğim gibi, yeni Python3 belgelerinde amacım ortaya hem daha güncel, hem de çok daha kapsamlı bir belge bütünü çıkarmak. Ben tek başıma elimden geldiği kadar bu amaca yönelik çalışmalarımı yürütüyorum, ancak bir programlama dili üzerine gerçekten işe yarar bir kaynak ortaya çıkarmak istiyorsak bir kişinin çabasından daha fazlasına ihtiyacımız var.

istihza.com’u tek kişinin elinden çıkma bir proje olmaktan kurtarmanın ilk adımı olarak daha önce forum alanını hayata geçirmiştik [http://www.istihza.com/forum].  Forum alanı sayesinde, Python’la ilgilenenlerin fikir alış verişinde bulunabileceği ve doğrudan birbirlerine yardımcı olabileceği bir mekan meydana getirmiş olduk. istihza.com alanındaki Python belgelerini çok daha geniş kapsamlı bir hale getirebilmek için bugünden itibaren “wiki” alanını da kullanıma açıyoruz. Wiki alanına http://www.istihza.com/wiki adresinden ulaşabilirsiniz.

Wiki alanı, pek çok önemli amaca hizmet edecek. Örneğin ana Python3 belgelerinde değinemediğimiz özel konulara Wiki’de yer verebileceğiz. Mesela ben Python3 belgelerinde konuları Ubuntu ve Windows7 üzerinden anlatıyorum. Benim şu an için bir Mac bilgisayara erişimim yok. İşte Mac kullanan bir Python programcısı örneğin Python’ın Mac bilgisayarlara nasıl kurulacağını bu Wiki alanında anlatabilecek. Ya da bir Debian kullanıcısı, Python’ın Debian üzerine kurulumu esnasında nelere dikkat edilmesi gerektiğini Wiki alanında dile getirebilecek.

istihza.com’u takip eden herkesin çok iyi bildiği gibi, istihza.com’da yayımlanan belgelerin diline özel bir önem veriyoruz. Ana sayfamızda da ifade ettiğimiz gibi;

istihza.com; Python Programlama Dili ve bu dilin standart grafik arayüz kütüphanesi Tkinter’e ilişkin okunaklı, özgün bir Türkçe kaynak oluşturma projesidir.

“Okunaklı” ve “özgün” olmak, Wiki alanında da bağlı kalınacak ilkeler olmalı. Dolayısıyla, Wiki’de yer alacak belgelerin niceliğinden ziyade niteliği bizi daha fazla ilgilendiriyor. Oluşturduğumuz her belgede bu ilkeleri göz önünde bulundurmaya dikkat edeceğiz.

istihza.com, Python , , , ,

istihza.com’da Python3

Salı, 08 Mar 2011

Bildiğiniz gibi, “istihza.com’da Python 2′ye mi yoksa Python 3′e mi ağırlık verilmeli?” sorusunu sorduğumuz anketi Python3 kazandı. O yüzden ben de fırsat bulabildikçe (çünkü bu aralar gerçekten işlerim başımdan aşkın) istihza.com’da Python3 bölümünü yazmaya çalışıyorum. Bu belgelerde Python’ın en son sürümü olan 3.2′yi anlatacağız. Yeni Python sürümleri çıktıkça da yazıları güncelleyeceğim.

Gelelim asıl konumuza…

Python3 pek çok GNU/Linux dağıtımının deposuna henüz girmedi. O yüzden Python3 kullanmak isteyen pek çok kişi Python’ı kaynaktan derlemek zorunda. Python kaynaktan derlenirken bütün modüllerin inşa edilebilmesi için aşağıdaki paketlerin sistemde halihazırda kurulu olması gerekiyor:

tcl8.5-dev

tk8.5-dev

zlib1g-dev

ncurses-dev

libreadline-dev

libdb-dev

libgdbm-dev

libzip-dev

libssl-dev

libsqlite3-dev

libbz2-dev

Bu paketlerin adları Ubuntu’ya göre… Doğal olarak, GNU/Linux dağıtımları arasında paket adları farklılık gösteriyor.

Benim yapmak istediğim şey şu: Python3′ün kaynaktan nasıl derleneceğini anlatırken, yukarıdaki bağımlılıkların farklı dağıtımlardaki adlarını da bir tablo halinde göstermek istiyorum. Dediğim gibi, yukarıdaki paket adları Ubuntu’ya ait. Eğer Ubuntu dışındaki dağıtımları kullanan arkadaşlarım bana yukarıdaki paketlerin kendi dağıtımlarındaki adlarını yazabilirlerse çok memnun olurum.

Şimdiden teşekkürler,

Fırat

istihza.com, Python , , , ,

rstab Modülü

Pazar, 14 Mar 2010

reStructuredText belgeleriyle haşır neşir olanların çok iyi bildiği gibi, rST tabloları oluşturmak tam bir eziyettir. Mesela şu tabloya bir bakın:

+----------+----------+----------+----------+
| İSİM     | SOYİSİM  | ADRES    | MESLEK   |
+==========+==========+==========+==========+
| Ferhat   | Gider    | İstanbul | Yazar    |
+----------+----------+----------+----------+
| Ahmet    | Erden    | Ankara   | Çevirmen |
+----------+----------+----------+----------+
| Mehmet   | Artır    | İzmir    | Çizer    |
+----------+----------+----------+----------+
| Kezban   | Güler    | Adana    | Mühendis |
+----------+----------+----------+----------+
| Selin    | Güleç    | Bursa    | Öğretmen |
+----------+----------+----------+----------+
| Selim    | Gelir    | İzmit    | Esnaf    |
+----------+----------+----------+----------+

Gördüğünüz gibi, rST tablosu oluşturmak için kol kuvvetini devreye sokmak gerekiyor. rST tablolarının bu durumu nedeniyle ben rST belgeleri hazırlarken olabildiğince tablo kullanmaktan kaçıyorum. Ama geçen gün, yakında istihza.com’a ekleyeceğim bir makale üzerinde çalışırken tablo oluşturmam gerekti. Ben de bunun üzerine bu sorunu kökünden çözecek bir şeyler yapmaya karar verdim ve “rstab” adını verdiğim bir modül yazdım.

rstab modülünü http://www.istihza.com/rstab/rstab-0.1/anakaynak/rstab-0.1.tar.gz adresinden indirebilirsiniz.

Bu modül, bir liste içine demet halinde girilmiş verilerden rST tabloları oluşturur. Nasıl mı? Mesela yukarıdaki tabloyu rstab modülüyle oluşturmak için şöyle bir betik yazmamız yeterli olacaktır:

from rstab import *
 
kişiler = [("İSİM", "Ferhat", "Ahmet", "Mehmet",
                    "Kezban", "Selin", "Selim"),
 
           ("SOYİSİM", "Gider", "Erden", "Artır",
                       "Güler", "Güleç", "Gelir"),
 
           ("ADRES", "İstanbul", "Ankara", "İzmir",
                     "Adana", "Bursa", "İzmit"),
 
           ("MESLEK", "Yazar", "Çevirmen", "Çizer",
                      "Mühendis", "Öğretmen", "Esnaf")
          ]
 
Tablo(kişiler).tablo_oluştur()

Gördüğünüz gibi, ilk iş olarak rstab modülünü içe aktarıyoruz. Kullanım kolaylığı açısından rstab modülünü from rstab import * şeklinde içe aktarabilirsiniz. Modülü içe aktardıktan sonra, tablo içeriğini oluşturacak verileri hazırlıyoruz. Yaptığımız şey esasında basit bir liste oluşturmaktan ibarettir. Her sütunu ayrı bir demet olarak gösterdiğimize dikkat edin. Mesela kişiler adlı listedeki ilk demetimiz şudur:

("İSİM", "Ferhat", "Ahmet", "Mehmet",
 "Kezban", "Selin", "Selim"),

Bu demetin ilk öğesi (yani “İSİM”), sütunun başlığı olacaktır. Geri kalan öğeler ise sütunun geri kalanını meydana getirecek.

Tablodaki sütun başlıklarını ve sütun içeriklerini yukarıdaki şablona göre oluşturabilirsiniz.

Tablo içindeki verileri hazırladıktan sonra şu satırı yazıyoruz:

Tablo(kişiler).tablo_oluştur()

Burada “rstab“ modülü içindeki “Tablo“ adlı sınıfın “tablo_oluştur()“ adlı fonksiyonunu çağırdık. Ayrıca “Tablo“ sınıfına parametre olarak, yukarıda oluşturduğumuz “kişiler“ adlı tabloyu verdiğimize dikkat edin.

Artık betiğimizi çalıştırabiliriz.

Yalnız unutmamamız gereken şey, rstab modülünün bir Python 3 betiği olduğudur. Dolayısıyla bu modülü çalıştırabilmek için Python’un 3.x sürümlerinden birini kullanmalısınız.

Yukarıdaki betiği deneme.py adlı bir dosyaya kaydettiğinizi varsayarsak, şöyle bir komut işimizi görecektir:

python3 deneme.py
Bu komutu verdiğinizde şöyle bir çıktı alacaksınız:
+----------+----------+----------+----------+
| İSİM     | SOYİSİM  | ADRES    | MESLEK   |
+==========+==========+==========+==========+
| Ferhat   | Gider    | İstanbul | Yazar    |
+----------+----------+----------+----------+
| Ahmet    | Erden    | Ankara   | Çevirmen |
+----------+----------+----------+----------+
| Mehmet   | Artır    | İzmir    | Çizer    |
+----------+----------+----------+----------+
| Kezban   | Güler    | Adana    | Mühendis |
+----------+----------+----------+----------+
| Selin    | Güleç    | Bursa    | Öğretmen |
+----------+----------+----------+----------+
| Selim    | Gelir    | İzmit    | Esnaf    |
+----------+----------+----------+----------+

Artık bu tabloyu kopyalayıp, rst belgelerinizde kullanabilirsiniz. Bu tablo, HTML çıktısında şöyle görünür:

İSİM SOYİSİM ADRES MESLEK
Ferhat Gider İstanbul Yazar
Ahmet Erden Ankara Çevirmen
Mehmet Artır İzmir Çizer
Kezban Güler Adana Mühendis
Selin Güleç Bursa Öğretmen
Selim Gelir İzmit Esnaf

Eğer tablo çıktısını komut satırından kopyalamak yerine bir dosyaya kaydetmek isterseniz şu komutu verebilirsiniz:

python3 deneme.py > tablo.txt

Bu komut, tabloyu tablo.txt adlı bir dosyaya kaydedecektir.

Modülle ilgili sorularınız için kistihza [at] yahoo [nokta] com adresinden bana ulaşabilirsiniz.

Python, Yazılım , , , , ,

Efsane Yeniden!

Pazar, 29 Mar 2009

Python’la ilgilenenler arasında, “diveintopython.org” adresini bilmeyen yoktur muhtemelen. Bu site, özellikle deneyimli programcılara Python programlama dilini öğretme konusunda en iyi kaynaklardan bir tanesidir. Bu sitenin en kötü yanı uzun süredir güncellenmiyor olmasıydı. Ama bu sitenin yazarı Mark Pilgrim belli ki bu gidişe bir “dur” demek istemiş ve “http://www.diveintopython3.org” adresini kullanıma açmış… Bu adreste Python’un 3.x sürümleri ele alınıyor. Gerçi henüz site tamamlanmış değil. Konular henüz eksik. Ama bu haliyle bile pek çok kişiye faydalı olacaktır. Yalnız başta da dediğim gibi, Mark Pilgrim kendisine hedef kitle olarak deneyimli programcıları seçmiş. Dolayısıyla eğer Python ve/veya programlama konusunda tecrübeli değilseniz bu sitede anlatılanları anlamak pek kolay olmayacaktır. Yine de “diveintopython”un hayata dönmüş olması Python’u sevenler için güzel bir haber… Sitedeki bilgilerin tamamlanmasını sabırsızlıkla bekliyorum.

Bu arada, diveintopython3.org sitesinin anasayfasında, en dibe şöyle bir not düşmüş Mark Pilgrim:

This site is optimized for Lynx just because f..k you.
I’m told it also looks good in graphical browsers

Bu alıntıyı çevirmeye terbiyem müsait değil!… :) Ne demek olduğunu merak edenler bana e.posta göndersin, onlara açıklayayım…

Python , , ,

istihza.com’da Python 3′e Geçiş

Cumartesi, 07 Mar 2009

Bildiğiniz gibi, Python 2.x’ten Python 3.x’e geçiş sürecine iyiden iyiye girildi… Python 3 sürümleri uzun zamandan beri python.org’dan indirilebiliyor… Ben de istihza.com’da en kısa zamanda Python 3 için belgelendirme çalışmalarına başlamayı düşünüyorum. Yalnız bu geçişin zamanlaması konusunda aklımda bazı şüpheler var. Örneğin GNU/Linux dağıtımları Python 3 paketleri konusunda ne durumda? Kullanıcılar kendi dağıtımları üzerinde Python 3′ü şu anda kurabilecek durumdalar mı? Eğer kullandığınız GNU/Linux dağıtımı size Python 3 paketlerini sunmuyorsa, sisteminize zarar vermeden Python 3′ü kaynaktan kurma imkanınız var mı? istihza.com’u takip eden bol miktarda Windows kullanıcısı olduğunu da hesaba katarsak Python 3′e geçiş konusunda Windows kullanıcıları ne düşünüyor? Mac kullanıcıları açısından durum nedir? istihza.com’un Python 3′e geçişi konusunda bu farklı platformların kullanıcılarının burada görüş bildirmesini rica ediyorum…

Python , , ,