Python Programlama Dili

Cabir C.
10 min readJan 28, 2021

--

Python Programlama Dilinin Tarihsel Gelişimi, Python’nın Avantajları ve Dezavantajları, Program Geliştirme Aşamaları, Python’nın Uygulama Alanları ve Temel Kod Bileşenlerinin İncelenmesi

1. TANIM VE TARİHSEL GELİŞİM

1.1. Python Programlama Dilinin Tarihi

Python 90’lı yılların başında Amsterdam’da Guido Van Rossum tarafından geliştirilmeye başlanan bir programlama dilidir. Zannedilenin aksine ismini piton yılanından değil, Rossum’un çok sevdiği Monthy Python isimli komedi grubunun sergilediği gösteriden alır.[1]

Python 2.0, 16 Ekim 2000'de bir döngü algılayan çöp toplayıcı (garbage collector) ve Unicode desteği de dahil olmak üzere birçok önemli yeni özellik ile piyasaya sürüldü.

Python 3.0, 3 Aralık 2008'de piyasaya sürüldü. Tamamen geriye dönük uyumlu olmayan dilin büyük bir düzeltmesiydi. Onun başlıca özelliklerin birçoğu Python 2.6.x ve 2.7.x den eklendi. Python 3'ün sürümleri arasında Python 2 kodunun Python 3'e (2 to 3) çevirisini (en azından kısmen) otomatikleştiren yardımcı program kullanıldı.

Python 2.7'nin kullanım ömrü tarihi başlangıçta 2015 olarak belirlenmiş, ardından mevcut kodun büyük bir bölümünün Python 3'e kolayca taşınamayacağı endişesiyle 2020'ye ertelenmiştir. [2]

Bugün itibariyle Python’nun son versiyonu Python 3.8.3 May 13, 2020 de kullanılmaya başlanmıştır.[11]

1.2. Tanım

Python üst düzey bir programlama dilidir ve geliştiriciler topluluğu arasında yaygın olarak kullanılmaktadır. Python esas olarak kod okunabilirliğine vurgu yapmak için geliştirildi ve sözdizimi programcıların kavramları daha az kod satırında ifade etmelerini sağlar. Python, geliştiricilerin hızlı çalışmasını ve sistemleri daha verimli bir şekilde entegre etmesini sağlayan bir programlama dilidir. [3]

Python nesne yönelimli, yorumsal, modüler ve etkileşimli, yüksek seviyeli bir dildir. Programlama dilleri makine mantığı ile insan mantığı arasında köprüdür. Bir dilin makine mantığına daha yakın olması makine üzerinde daha hızlı çalışabilmesi sonucunu doğurur. Ancak makine mantığına yaklaşmak, insan mantığından uzaklaşmayı gerektirir ve haliyle dili öğrenmesi daha zor hale getirir. Eğer bir programlama dili ne kadar makine mantığından uzaklaşıp insan mantığına yaklaşırsa yüksek seviye olarak adlandırılır. Python’da bu yüzden yüksek seviye bir dildir. Pek çok dile göre öğrenmesi daha kolaydı.[1]

Python’un kapsamı için parantezlere ({}) bağlı olmadığını, bunun yerine kapsamı için girinti kullandığını belirtmemiz gerekir.

1.3. Neden Python ?

Python, öğrenmesi kolay, tamamen özgür ve ücretsiz bir programlama dilidir. Nesnelere dayalı bir dil olup okunabilirliği yüksektir. Python’un dili başka programlama dilleri ile kıyaslandığında, bunun daha az kod ile işlemleri yapmasının mümkün olduğu görülecektir. Python, bütün işletim sistemleri ile uyum içerisinde çalışmaktadır.

Programlama yapısı içerisinde birçok kütüphaneyi barındırmaktadır. Bu kaynaklarla daha az kod yazmak mümkündür. Pythton ile masaüstünde çalışan uygulamalar geliştirilebileceği gibi, web üzerinde çalışan uygulamalar geliştirmek hatta Rasperry-Pi gibi donanımları da programlamak mümkündür.[7]

2. AVANTAJLAR VE DEZAVANTAJLAR

2.1. Python Programlama Dilinin Avantajları

  • Python, geliştiricilere kodlama metodolojilerinde bir seçenek sunarken daha basit, daha az dağınık bir sözdizimi ve dilbilgisi için çabalıyor.
  • Python, kolayca okunabilen bir dildir. Diğer birçok dilden farklı olarak, blokları sınırlamak için süslü parantez kullanmaz ve ifadelerden sonra noktalı virgül isteğe bağlıdır.
  • Python’un “significant whitespace” denilen boşluklar kullanması, Python’un en iyi ve en kötü özelliklerinden biri olarak değerlendirilebilir. Python’un kullanımında ki kod sıralamasının bir parçasıdır. Python derlemesi, kontrol akışını göstermek için uygun girintileri kullanmayan kod satırlarını reddeder.
  • Makine Öğrenmesi, Derin Öğrenme ve genel kapsamlı AI alanında yaygın olarak kullanılıyor. Veri analizi ve görselleştirmede çokça tercih ediliyor.[4]
  • Web geliştirmede Django gibi bir frameworke sahip. [4]
  • Python’un “nesne tabanlı” altkümesi, kabaca JavaScript’e eşdeğerdir. JavaScript gibi (ve Java’dan farklı olarak) Python, sınıf tanımlarına girmeden basit işlevleri ve değişkenleri kullanan bir programlama stilini destekler. Ancak, JavaScript için, hepsi bu kadar. Python ise, sınıfların ve kalıtımın önemli bir rol oynadığı gerçek nesne yönelimli bir programlama stili ile daha büyük programlar yazmayı ve kodun daha iyi kullanılmasını destekliyor. [5]
  • Python kodu genellikle eşdeğer Java kodundan 3–5 kat daha kısa olduğunda gibi, genellikle eşdeğer C ++ kodundan 5–10 kat daha kısadır. Python programcısının iki C ++ programcısının bir yılda tamamlayamayacağı şeyi iki ayda tamamlayabileceğini gösteriyor. [5]

2.2. Python Programlama Dilinin Dezavantajları

  • Biçimlendirmesi görsel olarak karmaşıktır ve genellikle diğer dillerin noktalama işaretlerini kullandığı İngilizce anahtar kelimeler kullanır.
  • Python, blokları sınırlamak için süslü parantez veya anahtar kelimeler yerine boşluk girintisini kullanır. Girintide bir artış belirli ifadelerden sonra gelir; girintideki azalma mevcut bloğun sonunu gösterir. Bu nedenle, programın bir görsel yapısı doğru programın semantik yapısını temsil eder. Bu özellik bazen diğer bazı dillerin paylaştığı off-side kuralı olarak adlandırılır, ancak çoğu dilde girintinin herhangi bir anlamsal anlamı yoktur.[2]
  • Python öğrendikten sonra Java gibi dilleri öğrenmek zordur fakat Java’dan Python’a geçiş oldukça rahattır. Python, programların çalışma şeklinden temel kavramları soyutlar ve ilk önce bir mantık yaklaşımını tercih eder. [4]
  • Python yorumlanmış bir dil olduğundan, çoğu durumda Java’dan daha yavaştır.[4]
  • Python bellek tüketiminin genellikle Java’dan daha iyi olduğunu ve C veya C ++ ‘dan çok daha kötü.[2] C #, Java ve Go programlama dilleri gibi Python da toplanan bellek yönetimine sahiptir. Yani programcı, nesneleri izlemek ve bırakmak için kod uygulamak zorunda kalmamasını sağlar. Normalde, çöp toplama arka planda otomatik olarak gerçekleşir, ancak bu bir performans sorunu ortaya çıkarırsa, bunu manuel olarak tetikleyebilir veya tamamen devre dışı bırakabilirsiniz.
  • Yüksek düzeyde bir programlama dili olduğu için sistem düzeyinde programlama için uygun değildir. Ancak bu kategori içinde aygıt sürücüleri veya işletim sistemi çekirdeği yer almaz.
  • Genel olarak Python programlama dilin de hız ön planda olduğu için ağır programlarda fazla işlevsellik sağlamaz. Bundan dolayı en eski programlama dillerinden olan C / C ++ gibi diller kullanabilirsiniz.[8]

3. PROGRAM GELİŞTİRME AŞAMALARI

Bu başlıkta bir Python uygulamasının geliştirilme aşamaları incelenecektir.

Resim 2: http://austincode.com/itse1359/introduction-to-python.php

Python syntax ına uygun olarak kodlanmış .py uzantılı dosya(kaynak kod) bir compiler tarafından bytecode dönüştürülür. Bu bytecode python vitual machine üzerinde çalıştırılabilir (interpreter) ya da JIT Compiler tarafından nativecode(machinecode) dönüştürülüp doğrudan çalıştırılabilir.

Resim 3: https://www.dunebook.com/best-python-compilers-interpreters/

Aşağıda listelenen maddeler sadece Python programla dili için değil genel bir program geliştirme rutinidir.[6]

3.1. Problemin Tanımlanması

İlk adım sorunu tanımlamaktır. Bu iş büyük yazılım projelerinde sistem analistinindir. Program geliştirme aşamasında yazılımcıların izleyeceği yol belirlenir. Belirlenen plan, programda kullanılacak veriyi, verinin nasıl ve nerede işleneceğini, programın çıktısını ve kullanıcı ara yüzünü irdeleyerek ilgili problemin çözümüne ulaştırmalıdır.

3.2. Program Tasarımı

Program tasarımı, programın ulaşmaya çalıştığı ana hedefe odaklanarak ve programı her biri bu hedefe katkıda bulunan yönetilebilir bileşenlere bölerek başlar. Program tasarımında bu yaklaşım, üst-alt program tasarımı veya modüler programlama olarak adlandırılır. İlk adım, programın ana faaliyetlerinden biri olan ana rutinin tanımlanmasını içerir. Aşağıda örnek tasarım kavramları listelenmiştir.

  • Yapı Şeması (Hiyerarşi Çizelgesi): Bir yapı şeması, programın yukarıdan aşağıya tasarımını gösterir. Yapı grafiğindeki her kutu, programın gerçekleştirmesi gereken bir görevi belirtir. Üst modül, Ana modül veya Kontrol modülü olarak adlandırılır.
  • Algoritmalar: Algoritma, bir çözüme en kolay şekilde nasıl ulaşılacağının adım adım açıklamasıdır. Algoritmalar yalnızca bilgisayar dünyasıyla sınırlı değildir. Günlük hayatımızda farkında olarak ya da olmayarak algoritmaları kullanmaktayız.
  • Karar tabloları: Karar tablosu, bir çift yatay ve dikey çizgi ile dört parçaya ayrılan özel bir tablo türüdür.
  • Pseudocode (Sözde Kod): Pseudocode çözüme ulaşmak için kullanılan başka bir araçtır. Gerçek kodu yazmadan önce programın temel mantığını ortaya çıkarmak için kullanılır.
  • Akış Şeması: Akış şeması, programın mantığını gösteren bir diyagramdır. Yandaki şekilden de anlaşılacağı üzere akış şeması dediğimiz flowchart’ların dizaynında kullanılan belirli parametreler vardır.
  • Yandaki örnek şemada bazı önemli hususlar şunlardır; şema yukarından aşağı ve soldan sağa doğru tasarlanır, kontrol yapıları baklava dilimi şeklinde, girdiler paralel kenar şeklinde, başlama ve bitiş genellikle köşeleri yuvarlatılmış dikdörtgenler şeklinde gösterilir.

3.3. Kodlama

Programın kodlanması, algoritmanın (Python) programlama diline çevrilmesi anlamına gelir. İyi tanımlanmış kontrol yapılarının kullanıldığı programlama tekniğine ‘yapılandırılmış programla’ denir. Programcı bu teknikte, dil kurallarına uymalıdır. Herhangi bir kuralın ihlali hataya neden olur. Bir sonraki adıma geçmeden önce bu hataların giderilmesi gerekir.

3.4. Test ve Hata Ayıklama

Sözdizimi hatalarının giderilmesinden sonra program çalıştırılır. Ancak, programın çıktısı doğru olmayabilir. Bunun nedeni programdaki mantıksal hata(lar)dır. Mantıksal bir hata, programcının bir soruna çözüm tasarlarken yaptığı bir hatadır. Sözdizimi hataları ve mantıksal hatalar ‘bugs’ olarak bilinir. Hataları belirleme ve ortadan kaldırma işlemi hata ayıklama (debugging) olarak bilinir.

3.5. Dokümantasyon

Testten sonra yazılım projesi neredeyse tamamlanmıştır. Tasarım aşamasında geliştirilen yapı şemaları, sözde kodlar, akış şemaları ve karar tabloları, yazılım projesiyle ilişkili diğer kişiler için doküman haline gelir.

4. UYGULAMA ALANLARI

2003 yılından bu yana Python, Şubat 2020 itibariyle üçüncü en popüler dil (Java ve C’nin arkasında) olduğu TIOBE Programlama Topluluğu Endeksindece sıralanmıştır. 2007, 2010 ve 2018 yıllarında Yılın Programlama Dili seçilmiştir [2]

4.1. Veri Bilimi

Python, veri toplama, web’i arama konusunda çeşitli imkanlar sunan bir dil. İçinde barındırdığı Scrapy kütüphanesi ile web tarama ve ayıklama işlemlerini çok rahat bir şekilde yapıyor. Toplanan ve ayıklanan veriler ile başka bir programlama diline ihtiyaç duymadan istatistik bile tutma imkanı sağlayan kütüphaneler de mevcut. Bu özellikleri sayesinde veri toplama ortamınızı oldukça güçlü hale getiren bir dil.[9]

4.2. Makine Öğrenmesi

Veri yardımıyla birçok algoritma kullanılarak öğrenme işlemine Machine Learning diyebiliriz. Machine Learning içinde; spam tanıma, hisse fiyatları, müşteri grubu oluşturma gibi alanlar vardır ve bu alanlar neredeyse her sektörde Machine Learning kullanımını destekler nitelikte. Python’da ise çeşitli ve kapsamlı kütüphaneler yardımıyla Machine Learning gerçekleştirilebilir.[9]

4.3. Web Geliştirme

Web uygulaması/sitesi geliştirme konusunda Python günümüzde yaygın olarak kullanılmaktadır. Python ile bu alanda proje yapmak isteyenler “Django” bilinmesi gerektiğini duymuştur. Django proje geliştirmek için içinde birçok işlevi bulunan bir framework olarak bilinir. Django framework’ü içinde ihtiyaç duyabileceğiniz neredeyse her şey dahil edilmiş. Ancak, web uygulamalarınızı geliştirmek için Django’ya bağlı kalmak zorunda değilsiniz. Basit cgi programları yazmaktan, tüm bir server yazmaya kadar çok çeşitli şekillerde Python’u kullanabilirsiniz.[9]

4.4. Bilimsel Hesaplama

Python bilimsel alanda da Matlab’a kafa tutabilecek (belki geçebilecek?) zengin fonksiyonlar sunuyor.

Python’u bilimsel alanda kullanmak istediğinizde, çeşitli seçenekleriniz mevcut. Hepsi içinde dağıtımlar indirip kurabilirsiniz. SciPy indirme sayfası size temel bilimsel programların içinde bulunduğu çeşitli Python dağıtımlarının bir listesini sunuyor. Buna ek olarak, ihtiyaç duyduğunuz kütüphaneleri ayrı ayrı yükleme imkanınız da mevcut.

SciPy setinin içinde gelen IPython, Matlab tarzında interaktif bir şekilde Python ile çalışmanıza olanak sağlıyor. Matplotlib ise, verilerinizi görselleştirme imkanı sağlıyor. SciPy setinin içinde, türev, integral, optimizasyon, lineer cebir, istatistik gibi alanlarda ihtiyaç duyabileceğiniz veri tipleri ve işlevsellik sağlanıyor.

Ben de ara sıra matplotlib kullanıyorum. Arch Linux Paket Grafiği ve Arch Linux Paket Grafiği 2 yazılarımda, matplotlib kullanımına örnek kod bulabilirsiniz.[9]

4.5. Sistem Yönetimi

Aslında linux ile ilgili olan bu işlevi sadece windows üzerinde değil, başka işletim sistemleri üzerinde de gelişime açık olduğunun kanıtı. Sistem yönetim kodları genelde kabuk programları ile yazıldığı için Linux işletim sisteminde artık Python kurulu geliyor ve kabuk programlarında yapabileceklerinizden daha fazlasını bizlere sunuyor.[9]

Linux sistemlerinde, geleneksel olarak sistem yönetim kodları daha çok kabuk programları aracılığıyla yazılırdı. Ancak şu anda, çoğu (her?) linux sisteminde Python kurulu olarak geliyor ve Python, kabuk programlarıyla yapabileceğinizden fazlasını sunduğu için, sistem yönetim programcıkları yazmak için gayet uygun bir dil. os modülüne bakarsanız, ihtiyaç duyabileceğiniz her şeyin Python’a dahil olarak geldiğini görebilirsiniz.

Bir zamanlar tercih edilen Pardus{: rel=”nofollow”} bir çok sistem aracı gibi Python ile yazılmıştı. Hatta bu biraz genç ve meraklı arkadaşlar üzerinde kafa karışıklığı yaratmış, Python ile işletim sistemi yazıldığı yanılgısı oluşturmuştu.

4.6. Diğer

Python’un kullanım alanı çok geniş olduğu için, hepsini tek tek buradan saymam mümkün değil. Bu saydıklarımın dışında, veritabanı erişimi, oyun geliştirme ve masaüstü programları geliştirme için de Python kullanılıyor. Ancak, son zamanlardaki görüşüme göre, Python oyun geliştirme ve masaüstü uygulaması geliştirmek için uygun bir değil.

Ayrıca, Python’un günlük kullanım için de çok uygun bir dil olduğunu söyleyebiliriz. Belki bir yazılımcının günlük iş anlayışının biraz farklı olabilir, ancak, şunu belirtmeliyiz ki, hızlıca bir şey yazıp, çalıştırıp, sonuç almak istediğiniz durumlarda Python kullanabilirsiniz.

5. TEMEL KOD BİLEŞENLERİNİN İNCELEMESİ

Temel kod bileşenlerini incelerken öncelikle C# ve Python programlama dillerini karşılaştırarak aralarındaki sözdizimi farkını daha net görelim.

Örneğin her iki dilde “Merhaba Dünya!” çıktısı almaya çalışalım.[10]

C# Sözdizimi:

Python Sözdizimi:

Aradaki sözdizimi farkını ve Python avantajını daha net görüyoruz.

Girilen sayının asal sayı mı değil mi olduğunu bulan Python örneği.[10]

Şimdi bazı metotlardan bahsedelim.[10]

Bu kodlama “upper()” metodu ile kullanıcı tarafından girilen dizideki bütün karakterler büyük harfe çevrilir.

print() ifadesinde yer alan ad.upper() komutu ile bir metot çağrılmaktadır. Genel olarak bir metot çağırmanın biçimi şu şekildedir:

Bir önceki örnekte “nesne adı” bir dizi nesnesini çağırmaktadır. “.” (nokta) nesneye bağlı olarak çağırılacak metot ile bağ kurulduğunu ifade eder. “metot adı” çağırılan ve çalışacak olan metot adıdır. “parametre listesi” metoda gönderilen ve virgülle ayrılmış parametre listesidir. Bazı metotlar parametre istemez, o zaman bu liste boş olabilir.

Metoda gönderilen parametre listesi, fonksiyona gönderilen parametre listesi ile tamamen aynı biçimde davranır. Bu nedenle metotlar da geri değer döndürebilir.

KAYNAKÇA

[1] mediaclick.com [Online]. Available: https://www.mediaclick.com.tr/blog/python-nedir/ [Accessed: 15-May-2020].

[2] “ProgramingLanguage,” wikipedia.org [Online]. Available: https://en.wikipedia.org/wiki/Python_ (programming_language) [Accessed: 15-May-2020].

[3] “Python” geeksforgeeks.org/. [Online]. Available: https://www.geeksforgeeks.org/python-tutorial [Accessed: 05-May-2020].

[4] Siberci.com. [Online]. Available: https://siberci.com/java-ve-python-dillerinin-avantajlari-ve-dezavatajlari/ [Accessed: 15-May-2020].

[5] argoajans.com [Online]. Available: https://www.argoajans.com/python-nedir-2019-avantajlari-nelerdir/ [Accessed: 15-May-2020].

[6] SakshiBhakhraCheck, “Software Engineering: Program Development Life Cycle (PDLC),” GeeksforGeeks, 14-Jan-2019. [Online]. Available: https://www.geeksforgeeks.org/software-engineering-program-development-life-cycle-pdlc/. [Accessed: 15-May-2020].

[7 ] ahgal.meb.k12.tr › 07085232_PYTHON-II.DYNEM.pdf

[8] bilginc.com [Online]. Available: https://bilginc.com/tr/blog/158/python-nedir-python-hakkinda-hersey/ [Accessed: 15-May-2020].

[9] ysar.net [Online]. Available: https://ysar.net/python/kullanim-alanlari.html/ [Accessed: 15-May-2020].

[10] aktif.net/ [Online]. Available: https://aktif.net/tr/Aktif-Blog/Teknik-Makaleler/Yeni-Baslayanlar-icin-Python-Programlama/ [Accessed: 15-May-2020].

[11] python.org [Online]. Available: https://www.python.org/downloads/ [Accessed: 15-May-2020].

[12] dunebook.com [Online]. Available: https://www.dunebook.com/best-python-compilers-interpreters/ [Accessed: 15-May-2020].

--

--