Python Nasıl Öğrenilir?
Published:
Giriş
Sanırım Lisans ve Lisansüstü mühendislik öğrencilerinden sıklıkla duyduğumuz sorulardan biri; “Nasıl Python öğreneceğim?”
Bugün kullandığımız hemen her cihazda herhangi bir programlama diliyle yazılmış platformları sıklıkla kullanıyoruz. Örneğin benim bu yazıyı yazdığım platform olan LinkedIn, bize tanıyor olabileceğimiz bağlantıları önerirken Python dilinde yazılmış makine öğrenmesi kütüphanelerinden yararlanılarak oluşturulan modelleri kullanıyor.
Bir önceki yazımın devamı niteliğindeki bu yazıda, Python programlama dilini öğreneceklere bir yol haritası olması amacıyla gerekli adımları kendi tecrübelerimden yola çıkarak belirlemeye çalışacağım.
Motivasyon
Python programlama dili, bilgisayardaki herhangi bir işlemi gerçekleştirebileceğiniz bir yüksek seviye (high-level) programlama dilidir. İlk sürümü 1991 yılında ortaya çıkarılmıştır [1].
Python programlama dilinin asıl motivasyonu, kolay okunabilen, hızlı hata ayıklanabilen ve ayrıca nesneye dayalı programlama da yapılabilen bir platform olmaktı. Bugün, görece yeni bir programlama dili olmasına rağmen C++ ve Java gibi dilleri sollayarak en çok kullanılan 2. programlama dili olmuştur [2]. Ek olarak, herhangi bir kullanım ücreti yoktur [3]. Aşırı teknik detaya girmeden hızlıca nasıl Python öğrenileceğini anlamaya çalışalım.
Python Programlama Dili
Birinci adım olarak, “Ben Python öğrenip ne yapacağım?” sorusuna öncelikle kendiniz yanıt verebilmelisiniz. Çoğu kişi aslında bu aşamayı düşünmeden bir programlama dilini öğrenmeye çalışıyor. Hedefsiz ve programsız olarak başlayan öğrenme süreci de herhangi bir kazanım ile tamamlanmayan bir zaman kaybına yol açarak sona eriyor.
Kendi tecrübelerim ile başlayacak olursam, şu anda üzerinde çalıştığım bir projedeki basitleştirilmiş bir kısmı programlarken, Python’ı, nasıl problemimi çözerken bir araç olarak kullandığımı alternatif çözümleri (Python kullanmasaydım ne olurdu?) göstererek anlatacağım;
Resim 1’deki 3 boyutlu geometri açık kaynaklı ve Python arayüzüne sahip CAD platformu FreeCAD [4] yazılımı ile oluşturulmuştur. Gördüğünüz gibi resimde içinden 2 silindir çıkarılmış bir büyük silindir yer almaktadır. Fakat yaptığım iş gereği benim bu silindirlerin boyutlarını sürekli değiştirerek yeni geometriler denemem gerekiyor. Bu durumda yapabileceğim 2 alternatif var;
Her seferinde FreeCAD’i açıp parçayı tekrar düzenlemek.
Bir Python programı yazıp aynı işlemi belirlediğimiz parametreler doğrultusunda bir tıkla bitirmek.
İkinci seçenek güzel görünüyor değil mi? Şimdi nasıl yapılabilir anlamaya çalışalım. Aşağıda aynı işlemi yapan Python dosyasına bakabiliriz;
from FreeCAD import Base
import Part
R1 = 10 #mm en büyük silindirin yarıçapı
R2 = 8 #mm ortadaki büyük silindirin yarıçapı
R3 = 2 #mm alt tabandaki boşluğu oluşturan silindirin yarıçapı
H1 = 15 #mm en büyük silindirin yüksekliği
H2 = 13 #mm ortadaki büyük silindirin yüksekliği
H3 = 2 #mm alt tabandaki boşluğu oluşturan silindirin yüksekliği
# Silindirleri oluşturma
silindir1 = Part.makeCylinder(R1, H1)
silindir2 = Part.makeCylinder(R2, H2,Base.Vector(0, 0, 2))
silindir3 = Part.makeCylinder(R3, H3)
# En büyük silindirden ortadaki silindiri çıkarma
fark = silindir1.cut(silindir2)
# Kalan şekilden alttaki küçük silindiri çıkarma
son_sekil = fark.cut(silindir3)
# Oluşturulan şekli dosya olarak kaydetme
son_sekil.exportStep("sonuc.step")
Yukarıda yer alan ve boşluklar dahil 23 satır olan Python kodu, 1. seçenekte yapılan herşeyi uygulama ekranını açmaya gerek dahi kalmadan aynı şekilde yaptı. Bundan sonra üreteceğimiz her geometride sadece yarıçap ve yükseklik değerlerini değiştirerek istediğiniz parçayı saniyeden daha kısa sürede oluşturabilirsiniz. Ayrıca bunun gibi birbirine bağlı onlarca parça ile çalıştığınızı farzederseniz, işinizin epey hızlanacağını ve kolaylaşacağını görmek mümkündür.
Bir başka örnek verelim; Ben yeni bir şirkette işe başlamış olayım. Bu şirkette personellerle alakalı bilgilerin tutulduğu 6 adet excel dosyası olsun. Ben de şirkette işe giren 81. kişi olayım. Bu durumda benim isim ve soyismimin her bir excel dosyasının 81. satırının 1. ve 2. sütununa girilmesi gereksin. Bu problemi de yine 2 şekilde ele alabiliriz;
Her bir excel dosyasını tek tek açıp, 81. satıra gidip, 1. sütuna ismimi 2. sütuna da soyismimi girmek.
Aynı işlemi yapan bir Python programı yazmak ve işlemi bilgisayara yaptırmak.
Yine 2. seçenek göze hoş görünüyor değil mi? Şimdi bu işlemi yapan Python koduna bakalım;
import openpyx
# Klasörde bulunan excel dosyalarının isimleri
dosyalar = ["dosya1.xlsx","dosya2.xlsx","dosya3.xlsx",\
"dosya4.xlsx","dosya5.xlsx","dosya6.xlsx"]
# Eklenmesi gereken bilgi
isim = "Ekrem"
soyisim = "Ekici"
satir = 81
# Her bir dosya için işlemi gerçekleştiren for döngüsü
for dosya_ismi in dosyalar:
dosya = openpyxl.load_workbook(dosya_ismi)
sayfa = dosya['Sayfa1']
sayfa.cell(row=satir, column=1, value=isim)
sayfa.cell(row=satir, column=2, value=soyisim)
dosya.save(dosya_ismi)
Yine boşluklar dahil 18 satırdan oluşan yukarıdaki kod, aynı işlemi yaklaşık 0.436 saniyede yaptı. Aynı şekilde yüzlerce excel dosyanızın olduğunu düşünürseniz, yukarıdaki kısa programın oldukça kolay ve hata payının düşük olacak olması, yapılan işlemin hem hızını hem de kalitesini arttıracaktır.
Tıpkı yukarıda bahsedilen uygulamalar gibi siz de günlük yaptığınız veya tekrar gerektiren herhangi bir bilgisayar işlemini Python dosyalarına yaptırabilirsiniz. Python programlarıyla yapacağınız otomasyondan kazanacağınız zamanı ve gittikçe ilerleyecek olan programlama bilginizi farklı yerlerde de kullanabileceğinizi düşünmek oldukça motive edicidir.
Faydalı olduğu düşünülen çevrimiçi kaynaklar
Yazarak öğrenmenin ne kadar etkili bir yöntem olduğu herkesce bilindiği gibi araştırmalar da bu kanıyı doğrulamaktadır [5]. Buradan hareketle Python’ı öğrenirken de kod yazarak el hafızamızı geliştirmek güzel bir başlangıç olacaktır. Ben kişisel olarak Python’ı ilk öğrenmeye başladığımda aşağıdaki YouTube kanallarından yararlandım;
1. Sentdex
YouTube’daki en popüler kanallardan biri olan Sentdex, ilk başlayanlar için çok güzel ve sıkıcı da olmayan bir başlangıç olabilir. Ayrıca kanaldaki diğer videolara bakarak (Python kodu ile bilgisayara GTA oynatma) işin nerelere kadar gidebileceği hakkında bilgi sahibi olabilirsiniz.
2. Corey Schafer
Bu kanal ise temel programlama bilgisi ve Python öğrenmek isteyenler için orta seviye bir başlangıç olabilir.
Bu iki kanaldaki videoları solda video, sağda kendi kod ekranınız olacak şekilde yazılanların aynısını yazarak ve programları çalıştırıp aynı sonuçları almaya çalışarak bitirmenizi tavsiye ediyorum. Sürecin sonunda programlama ile ilgili temel bilgileri elde etmiş olacaksınız.
Sonrasında ise size asıl programlamayı öğretecek olan şeyi, yani kendi herhangi bir işinizi Python ile yapmaya çalışmanız, Python programlama becerisini kazanmanız için en önemli kilometre taşı olacaktır.
Sonuç
Python programlama dilinin nasıl öğrenilebileceğinin tartışıldığı bu yazıda, mühendislik uygulamalarından ve günlük örneklerden yola çıkarak sürecin nasıl başlayacağı, nasıl devam edeceği ve sonunda hangi becerilerin kazanılacağını anlatmaya çalıştım.
İster bir savunma firmasında tasarım mühendisi olarak çalışın, ister başka bir yerde evrak-kayıt işlerinden sorumlu bir birey olarak görev alın, Python bilgisi, hatta programlama tecrübesi, yaptığınız hemen hemen her işte işinizi kolaylaştıracak ve katmadeğerli çıktıları ortaya koymanız için yardımcı olacaktır.
Ayrıca Python programlamayı öğrenirken;
Karşılaştığınız teknik problemleri küçük parçalara ayırarak çözümleme becerisi
Mantık (logic) bilginizin pekişmesiyle birlikte algoritmik düşünme yetinizin ilerlemesi
Mühendis iseniz geliştirmek zorunda kalacağınız ileri matematik, geometri ve fizik bilgisi
gibi kazanımlar da süreç ilerlerken elde edilecektir.
Ek olarak Python programlamada belli yol katettikten sonra bilgisayarınıza Linux/Ubuntu işletim sistemini kurmanızı ve yapacağınız işleri bu işletim sisteminde sürdürmenizi şiddetle tavsiye ederim.
Bir dahaki yazıda görüşmek dileğiyle, iyi çalışmalar..
Referanslar
[1] Van Rossum, G. (2007, June). Python Programming language. In USENIX annual technical conference (Vol. 41, No. 1, pp. 1-36).
[2] https://bootcamp.berkeley.edu/blog/most-in-demand-programming-languages/
[3] https://support.datacamp.com/hc/en-us/articles/360038816113-Is-Python-free-
[4] https://wiki.freecadweb.org/Main_Page
[5] Graham, S., Kiuhara, S. A., & MacKay, M. (2020). The effects of writing on learning in science, social studies, and mathematics: A meta-analysis. Review of Educational Research, 90(2), 179-226.