Phton Nedir?

 

Python programlama dili veri bilimi, makine öğrenimi, sistem otomasyonu, web ve API geliştirme ve daha fazlası için bir temel yapıdır. 

1991'den beri Python programlama dili sadece gereksiz programlar için tamamlayıcı bir dil olarak değerlendiriliyordu. Hatta “Automate the Boring Stuff” (Türkçe'ye "Sıkıcı Şeyleri Otomatikleştiren" olarak çevirebileceğimiz popüler bir kitap) adında bir kitap dahi yayınlanmıştır. 

Bununla birlikte son birkaç yılda Python modern yazılım geliştirme, altyapı yönetimi ve veri analizinde birinci sınıf bir programlama dili olarak ön plana çıkmıştır. Artık hackerlar için bir arka kapı oluşturucusu değil, web uygulaması oluşturma ve sistem yönetiminde önemli rol alma, veri analizleri ve makine öğreniminde parlayan bir dil olarak ün kazanmıştır.

Python’un Önemli Avantajları

Python programlama dili yeni başlayanlar veya Python'da uzmanlaşanlar için önemli avantajlara sahiptir.  

Python Programlama Dili Kullanmak ve Öğrenmek Oldukça Kolay

Diğer karmaşık program dillerini öğrenmek çok zaman alır ve kullanım alanları büyük olmasından dolayı kullanımını öğrenmek çok zordur. Ancak Python sözdizimi hem okunabilir hem de ileriye dönüktür. Öğrenim, kararlı programlama dili sayesinde basittir. Yeni başlayanlar için de ideal bir seçim olarak ön plana gelir. Sonuç olarak, Python kullanarak program geliştirmeye yeni bir adım atmış olan herkes hızlı ve basit şekilde ilerleme kaydedebilir. Diğer karmaşık dillere göre basitlik söz konusu olduğunda, en önde yer almaktadır.

Python Uygulanabilirdir ve Kullanım Çerçevesi Oldukça Geniştir

İsminin az duyulmasına rağmen, yazılımcılar arasında hem popülerdir hem de yaygındır. Github projelerinin birçoğu Python tabanlıdır. Hatta Tiobe Index ve Github gibi programlama örneklerinin sıralandığı sistemlerde, Python tabanlı programları en üst sıralarda göstermektedir. Kullanım alanı en küçük işletim sistemlerinden en büyük işletim sistemlerine kadar birçok OS tarafından desteklenmektedir. İnternette yer alan büyük yazılım kütüphanelerin ve API-destekli servislerin mutlaka Python tabanlı bindings ya da wrappers’ları vardır. Bundan dolayı Python, bu servisler ile serbestçe arayüz oluşturur veya bu kütüphaneleri doğrudan kullanır. Yazılım dilleri arasında en hızlısı olmasa da çoklu platformlarda kullanılması bir adım önde olmasını sağlamıştır.

Python Basit Bir Dil Değildir

Oluşturulan scriptlerin ve otomasyon programlarının çoğu Python kod şemalarını kapsasa da, Python ayrıca, hem bağımsız uygulamalar hem de web hizmetleri olarak profesyonel kalitede yazılımlar oluşturmak için kullanılır.

Python Ne İçin Kullanılır?

Ayrıca, Ansible ve Salt gibi araçlarda sistem gereksinimlerini ve yapılandırmasını sağlayan, bunlara ek olarak web tarayıcıları veya uygulama GUI'leriyle etkileşimleri otomatikleştiren özellikleri de bulunmaktadır. Kısaca anlatmak gerekirse, Script oluşturmak ve otomasyon Python için buz dağının sadece görünen kısmıdır.

Python ile Uygulama Programlama

Python programlama dili ile konsol uygulamaları ve çoklu platformlara GUI uygulamaları oluşturabilirsiniz. Bunları bağım kurulum dosyları olarak kullanabilirsiniz. Python ile oluşturulan bir Script kendi başına bir binary serisi oluşturamaz, ancak  cx_Freeze and PyInstaller üçüncü taraf programlar sayesinde durum imkansızdan münküne dönüşmektedir.

Veri Bilimi ve Makine Öğreniminde Python’un Yeri

Sofistike veri analizleri günümüzde IT için en önemli konular haline gelmiştir. Python ise bu durumlar için en elverişli programlama dili olmuştur. Python arayüzündeki kütüphanelerin birçoğu makine öğrenimi ve veri bilimi üzerine elverişlidir. Bu alanlardaki kütüphanelerde ki yüksek kaliteli komutları, makine öğrenimi kütüphanelerinin ve diğer nümerik algoritma kütüphanelerinin sürekli gelişmesine çok yardımcı olmuştur. 

Python ile Web Servisleri ve RESTful API’leri Kodlama

Python içerisinde bulunan yerel kütüphaneler üçüncü parti web yazılımları ile birleştiğinde,  ortaya bir kaç satır kod ile daha hızlı bir website yönetimi elde edilebilir. REST API’lerin uygun kod blokları ile oluşturulması seri bir şekilde sitenin veri yürütme olayını hızlı yapmasına olanak sağlar. Özellikle Python’un son güncellemesi asinkron operasyonlarının daha güçlü bir yapıya dönüştürmüştür. Doğru kütüphaneler ile sitelerin saniyede binlerce kod istemine karşılık veri akışı sağlamasına yardımcı olmuştur.

Metaprogramlama ve Kod Derlemesi

Diğer diller ile karşılaştırıldığında Python’da yer alan bütün modüller ve kütüphaneler birer nesne olarak görev yapar. Bunun sayesinde Python, etkili bir kod derleyici olarak ön plana çıkmaktadır. Kendi kod özellikleri ile yazılan uygulamaları manipüle ederek, diğer dillerde yazılması çok zor olan yada neredeyse imkansız olan uygulamaları oldukça kolay yazılabilir hale getirir. 

Python’un çoklu platform uygulamaları oluşturması da LLVM benzeri kod derleyici sistemlerinde etkili kodlar oluşturmak için uygun olmasını da sağlar.

Yapışkan Kod Olarak Python

Sıklıkla Glue Code (Yapışkan Kod) olarak adlandırılan Python, bu takma ismini  C dilinin kütüphanesindeki kodlar ile ortaklaşa bir yapı oluşturup, etkili program yapılmasına yardımcı olduğu için almıştır. Veri bilimden ve makine öğreniminde eşsiz bir seçenek olarak ön plana gelmesini sağlamıştır.

Python’un Eksiklikleri

Her ne kadar Python genel anlamda kaliteli uygulamalar yazmak için uygun olsa da bazı eksiklikleri ve yetemediği alanlarda vardır.

Yüksek düzeyde bir programlama dili oluduğ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. 

Ayrıca, platformlar arası bağımsız binary dosyalar için çağrı yapan durumlarda da ideal değildir. Windows, MacOS ve Linux işletim sistemleri için bir uygulama geliştirebilirsiniz. Ancak oluşturulacak uygulama fazla görkemli uygulama olmaz

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.

Python İşlerinizi Nasıl Kolay Hale Getirir?

Python program dili oldukça kısa ve okunabilir syntax’lardan oluşur. Python’un en  son ki 3.x güncellemesindeki standart “Merhaba Dünya” yazısı şu şekildedir.

print(“Hello world!”)

Python'da birçok yaygın program akışını açık bir şekilde ifade etmek için birçok nesne elemanları kullanabilirsiniz.  Bir liste nesnesinin içindeki txt dosyasından satırları okuyan standart bir program düşün ve bunları dizi biçiminde sıralamasını istiyorsunuz. Bunun için kod aşağıdaki gibidir.

with open(‘apsisx.txt’) as apsisx_file:

     file_lines = [x.strip(‘\n’) for x in apsisx_file]

Programın kod dizimi açısından incelediğimizde "with/as" yapısı, bir kod bloğu bir nesneyi örneklendirmek ve daha sonra bu bloğun dışına atmak için etkili bir yol sağlayan bir içerik yöneticisidir. Bu durumda, nesnemiz open () işleviyle çağrılan  apsisx_file olmuştur. Bu sayade dosyayı açmak, ondan tek tek satırları okumak ve daha sonra kapatmak için birkaç satırlık ekstra kod yazmanın gereği kalmamıştır.

[x.strip(‘\n’) for x in apsisx_file] yapısı başka bir Python dil şemasıdır. Diğer öğeleri (buradaki, apsisx_file ve diğer kodlar) içeren yapı kodların yinelenmesini sağlar. Her yinelenen nesnenin (that is, each x) işlenmesini ve otomatik olarak bir listeye eklenmesine yardımcı olur.

Genel olarak Python'da, başka bir dillerde de oluşturulan "for..."  kalıbını döngü olarak yazabilirsiniz.  Temel nokta, Python'un çoklu nesneler üzerinde yineleyen döngüler gibi şeyleri ekonomik olarak ifade etmenin bir yolu olduğu yönündedir. Ayrıca, döngüdeki her öğe için basit bir işlem gerçekleştirmeye veya açık bir örnekleme ya da elden çıkarma gerektiren şeylerle çalışmanıza yardımcı olur.

Bu gibi kod blokları, Python dili ile program geliştiren insanların farklılık ve okunabilirliği dengelemelerine izin verir.

Python’un diğer dil özellikleri, yaygın kullanım durumlarını tamamlayıcı niteliktedir. "Unicode dizeleri" gibi en modern nesne türleri doğrudan dil içerisine aktarılabilir. Listeler, sözlükler (hashmaps), tupllar (nesnenin değişmez yapılarını depolamak için kullanılır) ve setler  (sadece belirli kod dizgileri için kullanılır) gibi veri yapıları mevcuttur.

Python 2 ve Python 3 Karşılaştırması

Python'ın mevcut olarak iki sürümü bulunmaktadır. Bunlar yeni kullanıcıların ufkunu açacak özelliğe sahiptir. Bunlardan Python 2.x, "legacy" olarak geçmektedir ve 2020'ye desteklenmeye ve güncellemeleri almaya devam edecektir. Ancak bu süre dolduktan sonra gayri resmi olarak devam edebilir. Python 3.x, şu an mevcut olarak işletim sistemlerine sunulan ve 2.x versiyonunda bulunmayan birçok özelliğe sahiptir. Bunlardan başlıcaları daha iyi eşzamanlılık kontrolleri ve daha verimli bir derleme sistemidir.

Python’un Kütüphaneleri

Python'un son zamanlarda bu kadar üstün bir başarıya sahip olması, kendine özgü zengin ve bunlara ek olarak üçüncü taraf yazılımların ekosistemine dayanıyor. Python, hem güçlü bir standart kütüphaneden hem de üçüncü taraf geliştiricilerden kolayca elde edilen, edinilen bilgilerin de kolayca kullanılabilen kütüphanelerden destek alır. Bu programlama dili onlarca yıllık gelişmenin yanı sıra yapılan katkılarla daha da zenginleştirilmiştir.

Python’un standart kütüphanesi, matematik, dizi işleme, dosya ve dizin erişimi, ağ oluşturma, asenkron işlemler, iş parçacığı, çoklu işlem yönetimi gibi yaygın programlama görevlerine yönelik modüller sağlar. Ayrıca aynı zamanda modern uygulamaların ihtiyaç duyduğu ortak, üst düzey programlama görevlerini yöneten JSON ve XML gibi yapılandırılmış dosya formatlarını okuma ve yazma, sıkıştırılmış dosyaları kullanma, internet protokolleri ve veri formatlarıyla çalışma (web sayfaları, URL'ler, e-posta) gibi modülleri de içerir. C-uyumlu yabancı fonksiyon arayüzünü ortaya çıkaran çoğu harici kod Python’un ctypes modülü ile erişilebilir.

Varsayılan Python sürümü tam olarak gelişmemiş bir sürümdür. Ancak Tkinter üzerinden çoklu platform GUI kütüphanesi ve SQLite 3 veritabanının gömülü bir kopyası ile kullanılabilir.

Python Paket Endeksinde (PyPI) bulunan binlerce üçüncü taraf kütüphanesi, Python'un popülaritesi ve çok yönlülüğün en büyük göstergesi olmaktadır.

Örneğin:

  • BeautifulSoup kütüphanesi, HTML'in tam olarak analizini yaparak dışarıya bütün verileri ayıklayan herşeyin bir arada olduğu bir araç görevi görür.
  • Flask ve Django gibi frameworkler, hem basit hem de gelişmiş kullanım durumlarını kapsayan web servislerinin hızlı geliştirilmesine olanak tanır.
  • Çoklu bulut hizmetleri, Python’un nesne modeli ile Apache Libcloud kullanılarak yönetilebilir.
  • NumPy, Pandas ve Matplotlib, matematik ve istatistiksel işlemleri hızlandırır ve verilerin görselleştirilmesini kolaylaştırır.

Python’u Alt Seviyeye Düşüren Özellikleri

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.

Python'un önemli bir yönü dinamizm bir yapıya sahip olmasıdır. Nesne tabanlı bir programlama dili olarak kullanıldığı için dildeki her şey, işlevler ve modüller de dahil olmak üzere, nesne olarak ele alınır. Bu sayede kullanılan nesneler üst düzey kod yazmayı çok daha kolay hale getirir. Geliştiriciler karmaşık nesne manipülasyonlarını yalnızca birkaç satır kod ile gerçekleştirebilir ve hatta bir uygulamanın parçalarını gerektiğinde değiştirilebilecek soyutlamalar düzenleyerek kullanabilirler.

Python’un "significant whitespace" denilen boşuklar kullanması, Python’un en iyi ve en kötü özelliklerinden biri olarak değerlendirilebilir. Aşağıdaki ikinci satırdaki girinti sadece okunabilirlik için değildir; 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.

with open(‘apsisx.txt’) as apsisx_file:

    file_lines = [x.strip(‘\n’) for x in apsisx_file]

Bu boşlukların kullanımı bazen zahmetli olduğu için kullanıma yeni başlayanlar için bir problem olarak nitelendirilir. Ancak katı girinti kuralları, genel olarak göründüğünden çok daha az zorlayıcı etmendir. Ayrıca görünümsel olarak daha okunabilir bir hale gelmesine yardımcı olur.

C veya Java gibi diller ile kıyaslandığında bir başka potansiyel sıkıntı, Python'un değişken yazmayı nasıl ele aldığıdır. Varsayılan olarak Python, hızlı kodlama için harika, ancak büyük kod tabanlarında sorun yaratabilecek dinamik veya "duck" denilen ara kod yazımını kullanır. Bununla birlikte, Python son zamanlarda isteğe bağlı derleme-zamanı ipucu desteği ekledi. Bu sayede statik yazmadan yararlanabilecek projeler kullanabilir hale getirilebilir.

Python Çok Mu Yavaş? Öyle Olmak Zorunda Değil!

Python hakkında söylenilen olumsuz söylentiler arasında yavaş olması yer almaktadır. Genel açıdan değerlendirmek gerekirse, evet Python yavaştır. Python aracılığı ile oluşturulan programlar genellikle C / C ++ veya Java'daki karşılık gelen programlardan çok daha yavaş çalışır. 

Neden bu kadar yavaş? Derleme programlarının satır satır kodları analiz etmesinden kaynaklı olarak bu durum yavaş senkronize gerektirir. Python'da yer alan nesneler kullanılan kodlar aracılığı ile belirlendiği için, derlendiğinde bile, dil için hızını optimize etmeyi zorlaştırması gerçeğidir. Bununla birlikte, Python’un hızı, göründüğü kadar önemli bir konu olmayabilir ve onu hafifletmenin yolları vardır.

Python’un Hızını Arttıracak Oldukça Fazla Yol Vardır

Genel anlamda yavaş olarak değerlendirilen Python her zaman yavaş olmaz. Pek çok Python programı yavaştır, çünkü Python'da yer alan ve ya üçüncü taraf standart kütüphanelerdeki görevleri düzgün bir şekilde içe aktaramazlar. NumPy ve Pandas gibi kütüphaneleri kullanarak matematik ve istatistik işlemleri muazzam bir şekilde artırılabilir ve PyPy çalışma zamanı, birçok Python uygulaması için farkedilir miktarda hız sağlar.

Genel olarak yazılımcılar arasında yer alan bir söz vardır. Programın %90'ı işlevselliğidir, geri kalan %10'u ise programın kodlarıdır. %10'luk dilimi optimize ettiğinizde programın hızlanması oldukça başarılı olacaktır. Python ile, Cython veya Numba gibi projeleri kullanarak bu yüzde 10'unu C'ye hatta assembly diline dönüştürebilirsiniz. Ancak ortaya çıkan sonuç, C'de oluşturulan programa göre biraz daha yavaş bir kullanım sergiler, ama C'nin hafıza mikroyönetimi özelliği gözardı edildiğinde C ile yarışabilecek potansiyele sahiptir.

Geliştirici Süresi Genel Olarak Makine Süresini Yener

Ya da başka bir şekilde söylemek gerekirse: Birçok görev için, geliştirme hızı yürütme hızını yener.

Aynı programın hem Python ile hemde başka bir dilde çalışma süreleri değişiklik gösterir. Örneğin Python'da program 6 saniyede aktif hale gelir, başka bir dilde bu süre 1 saniyeye kadar düşmektedir. Ancak bir geliştiricinin Python🍭🍭🍭🍭🍭🍭 arayüzün bir programı oluşturması on dakikasını alırken, aynı programı başka platformda oluşturması saatlerini alabilir. Python programının yürütülmesinde kaybedilen zaman miktarı, geliştirme sürecinde kaydedilen zamandan daha az olduğu için daha idealdir.

Açıkçası bir ticaret uygulaması gibi yüksek verimli, düşük eş zamanlılık gerektiren talepleri olan yazılımlar yazarken bu daha az doğrudur. Ancak birçok sıradan uygulamalar için, sistem yönetiminden makine öğrenmeye kadar uzanan alanlarda, Python yeterince hızlı olduğunu kanıtlayacaktır.

Ayrıca, Python'un sağladığı esneklik ve ilerleme hızı, diğer dillerde elde etkesi daha zor ve zaman alıcı olan program geliştirmelerde güzel bir adım olabilir.

Geliştirme hızı ve programlayıcı rahatlığı ön planda olacaksa ya da makinenin işlem sırası arka planda olacaksa, Python her iki durumda da yani geliştiricinin rahat olarak çalışmasına yardım ederek hızlı bir program oluşturmak için en iyi araç olabilir.

Yorumlar

Bu blogdaki popüler yayınlar

Among Us

ZEYNEP DİLA BİLİŞİM DERSİ ÖDEVİ