Mesai Saatlerinde
Python Nedir?
Python uygulamalama dili veri bilimi, makine öğrenimi, sistem otomasyonu, internet ve API geliştirme ve daha fazlası amacıyla bir asli yapıdır. 1991'den beri Python uygulamalama dili yalnızca lüzumsuz uygulamalar amacıyla 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 tanınmış bir kitap) isminde bir kitap dahi yayınlanmıştır.
Bununla beraber son birkaç senede Python çağdaş uygulama geliştirme, altyapı idaresi ve veri analizinde birinci sınıf bir uygulamalama dili olarak ön plana çıkmıştır. Artık hackerlar amacıyla bir arka kapı oluşturucusu değil, internet uygulaması oluşturma ve sistem idaresinde mühim rol alma, veri analizleri ve makine öğreniminde parlayan bir dil olarak ün kazanmıştır.
Python’un Önemli Avantajları
Python uygulamalama dili yeni başlayanlar ya da Python'da uzmanlaşanlar amacıyla mühim avantajlara sahiptir.
Python Programlama Dili Kullanmak ve Öğrenmek Oldukça Kolay
Diğer komplike uygulama dillerini öğrenmek çok vakit alır ve kullanım alanları büyük bulunduğundan ötürü tüketimini öğrenmek çok zordur. Fakat Python sözdizimi hem okunabilir hem de ileriye dönüktür. Öğrenim, kararlı uygulamalama dili yardımıyla kolaytir. Yeni başlayanlar amacıyla de makul bir seçim olarak ön plana gelir. Sonuç olarak, Python kullanarak uygulama geliştirmeye yeni bir ismim atmış olan herkes süratli ve kolay şekilde gelişme kaydedebilir. Diğer komplike dillere göre kolaylık söz hususu bulunduğunda, en önde yer almaktadır.
Python Uygulanabilirdir ve Kullanım Çerçevesi Oldukça Geniştir
İsminin az duyulmasına rağmen, uygulamacılar arasında hem tanınmışdir hem de vakitgelendır. Github projelerinin birfazlası Python tabanlıdır. Hatta Tiobe Index ve Github gibi uygulamalama örneklerinin sıralandığı sistemlerde, Python tabanlı uygulamaları en üst sıralarda göstermektedir. Kullanım kısmı en ufak işletim sistemlerinden en büyük işletim sistemlerine kadar fazlası OS doğrulusunda desteklenmektedir. İnternette yer alan büyük uygulama kütüphanelerin ve API-destekli servislerin kesinlikle Python tabanlı bindings ya da wrappers’ları vardır. Bundan ötürü Python, bu servisler ile serbestçe arayüz oluşturur ya da bu kütüphaneleri direkt olarak kullanır. Yazılım dilleri arasında en süratlisı olmasa da çoklu platformlarda kullanılması bir ismim önde olmasını sağlamıştır.
Python Basit Bir Dil Değildir
Oluşturulan scriptlerin ve otomasyon uygulamalarının fazlası Python kod şemalarını kapsasa da, Python ayrıca, hem bağımsız uygulamalar hem de internet hizmetleri olarak profesyonel nitelikte uygulamalar meydana getirmek amacıyla kullanılır.
Python Ne İçin Kullanılır?
Hem de, Ansible ve Salt gibi vasıtalarda sistem gereksinimlerini ve oluşturulandırmasını gerçekleştiren, bunlara ek olarak internet tarayıcıları ya da uygulama GUI'leriyle etkileşimleri otomatikleştiren özellikleri de bulunmaktadır. Kısaca anlatmak gerekirse, Script meydana getirmek ve otomasyon Python amacıyla buz dağının yalnızca görünen kısmıdır.
Python ile Uygulama Programlama
Python uygulamalama 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, fakat cx_Freeze and PyInstaller üçüncü doğrultu uygulamalar yardımıyla hal imkânsızdan münküne dönüşmektedir.
Veri Bilimi ve Makine Öğreniminde Python’un Yeri
Sofistike veri analizleri bugünümüzde IT amacıyla en mühim hususlar haluna gelmiştir. Python ise bu haller amacıyla en elverişli uygulamalama dili olmuştur. Python arayüzündeki kütüphanelerin birfazlası makine öğrenimi ve veri bilimi üstüne 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ıksık gelişmesine çok yardımcı olmuştur.
Python ile Web Servisleri ve RESTful API’leri Kodlama
Python ortamında tespit edilen ulusal kütüphaneler üçüncü parti internet uygulamaları ile birleştiğinde, meydana bir kaç satır kod ile daha süratli bir internetsite idaresi elde edilebilir. REST API’lerin makul kod blokları ile oluşturulması seri bir şekilde sitenin veri yürütme vakasını süratli yapmasına imkan sağlar. Genellikle Python’un son güncellemesi asinkron operasyonlarının daha kuvvetli 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.
Metauygulamalama ve Kod Derlemesi
Diğer diller ile karşılaştırıldığında Python’da yer alan tüm modüller ve kütüphaneler birer nesne olarak vazife yapar. Bunun yardımıyla 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 nerdeyse imkânsız olan uygulamaları gerektiğince kolay yazılabilir duruma getirir.
Python’un çoklu platform uygulamaları oluşturması da LLVM aynısı kod derleyici sistemlerinde etkili kodlar meydana getirmek amacıyla makul 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 adını C dilinin kütüphanesindeki kodlar ile ortaklaşa bir yapı oluşturup, etkili uygulama yapılmasına yardımcı bulunduğu amacıyla almıştır. Veri bilimden ve makine öğreniminde eşi benzeri olmayan bir alternatif olarak ön plana gelmesini sağlamıştır.
Python’un Eksiklikleri
Her ne kadar Python genel anlamda kaliteli uygulamalar yazmak amacıyla makul olsa da birtakım kusurları ve yetemediği alanlarda vardır.
Yüksek seviyede bir uygulamalama dili oluduğu amacıyla sistem seviyeinde uygulamalama amacıyla makul değildir. Fakat bu kategori içersinde cihaz sürücüleri ya da işletim sistemi çekirdeği yer almaz.
Hem de, platformlar arası bağımsız binary dosyalar amacıyla davetiye yapan hallerde da makul değildir. Windows, MacOS ve Linux işletim sistemleri amacıyla bir uygulama geliştirebilirsiniz. Fakat oluşturulacak uygulama çok muhteşem uygulama olmaz
Genel olarak Python uygulamalama dilin de sürat ön planda bulunduğu amacıyla ağır uygulamalarda çok işlevsellik sağlamaz. Bundan ötürü en eski uygulamalama dillerinden olan C / C ++ gibi diller kullanabilirsiniz.
Python İşlerinizi Nasıl Kolay Hale Getirir?
Python uygulama dili gerektiğince 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 fazlası vakitgelen uygulama akışını açık bir şekilde ifade etmek amacıyla fazlası nesne elemanları kullanabilirsiniz. Bir liste nesnesinin içersindeki txt dosyasından satırları okuyan standart bir uygulama düşün ve bunları dizi biçiminde sıralamasını istiyorsunuz. Bunun amacıyla kod alttaki gibidir.
with open(‘apsisx.txt’) as apsisx_file:
file_lines = [x.strip(‘\n’) for x in apsisx_file]
Programın kod dizimi tarafınden incelediğimizde "with/as" yapısı, bir kod bloğu bir nesneyi örneklendirmek ve daha sonra bu bloğun dışına atmak amacıyla etkili bir yol gerçekleştiren bir içerik yöneticisidir. Bu halde, nesnemiz open () işleviyle davetiyelan apsisx_file olmuştur. Bu sayade dosyayı açmak, ondan tek tek satırları okumak ve daha sonra kapamak amacıyla birkaç satırlık ekstra kod yazmanın gereği kalmamıştır.
[x.strip(‘\n’) for x in apsisx_file] yapısı diğer bir Python dil şemasıdır. Diğer unsurları (buradaki, apsisx_file ve diğer kodlar) sahibi olan 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, diğer bir dillerde de oluşturulan "for..." kalıbını döngü olarak yazabilirsiniz. Temel nokta, Python'un çoklu nesneler üstünde yineleyen döngüler gibi şeyleri ekonomik olarak ifade etmenin bir yolu bulunduğu tarafındedir. Hem de, döngüdeki her unsur amacıyla kolay bir prosedür gerçekleştirmeye ya da açık bir örnekleme ya da elden çıkarma gerektiren şeylerle çalışmanıza yardımcı olur.
Bu gibi kod blokları, Python dili ile uygulama ilerleten insanların değişiklik ve okunabilirliği dengelemelerine izin verir.
Python’un diğer dil özellikleri, vakitgelen kullanım hallerını tamamlayıcı niteliktedir. "Unicode dizeleri" gibi en çağdaş nesne çeşitleri direkt olarak dil içerisine aktarılabilir. Listeler, sözlükler (hashmaps), tupllar (nesnenin değişmez yapılarını depolamak amacıyla kullanılır) ve setler (yalnızca belirli kod dizgileri amacıyla kullanılır) gibi veri yapıları sahip olunantur.
Python 2 ve Python 3 Karşılaştırması
Python'ın sahip olunan 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. Fakat bu vakit dolduktan sonra gayri resmi olarak devam edebilir. Python 3.x, şu an sahip olunan olarak işletim sistemlerine yayılan ve 2.x versiyonunda bulunmayan fazlası özelliğe sahiptir. Bunlardan başlıcaları daha iyi eşvakitlılık denetimleri ve daha verimli bir derleme sistemidir.
Python’un Kütüphaneleri
Python'un son vakitlerde bu kadar üstün bir başarıya sahip olması, kendisine özgü varlıklı ve bunlara ek olarak üçüncü doğrultu uygulamaların ekosistemine dayanıyor. Python, hem kuvvetli bir standart kütüphaneden hem de üçüncü doğrultu geliştiricilerden kolayçe elde edilen, edinilen bulguların de kolayçe kullanılabilen kütüphanelerden destek alır. Bu uygulamalama dili onlarca senelik gelişmenin yanı sıra oluşturulan katkılarla daha da varlıklıleştirilmiştir.
Python’un standart kütüphanesi, matematik, dizi prosedüre, dosya ve endeks erişimi, ağ oluşturma, asenkron prosedürler, iş parçacığı, çoklu prosedür idaresi gibi vakitgelen uygulamalama vazifelerine yönelik modüller sağlar. Hem de aynı vakitte çağdaş uygulamaların gereksinim duyduğu ortak, üst seviye uygulamalama vazifelerini yöneten JSON ve XML gibi oluşturulandırılmış dosya formatlarını okuma ve yazma, sıkıştırılmış dosyaları kullanma, internet protokolleri ve veri formatlarıyla çalışma (internet sayfaları, URL'ler, e-posta) gibi modülleri de içerir. C-uyumlu yabancı fonksiyon arayüzünü meydana çıkaran fazlası 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. Fakat Tkinter üstünden çoklu platform GUI kütüphanesi ve SQLite 3 veritabanının gömülü bir kopyası ile kullanılabilir.
Python Paket Endeksinde (PyPI) tespit edilen binlerce üçüncü doğrultu kütüphanesi, Python'un popülaritesi ve çok yönlülüğün en büyük göstergesi olmaktadır.
Mesela:
BeautifulSoup kütüphanesi, HTML'in tam olarak analizini yaparak dışarıya tüm bilgileri ayıklayan herşeyin bir arada bulunduğu bir vasıta vazifiyeti görür.Flask ve Django gibi frameworkler, hem kolay hem de ilerlemiş kullanım hallerını amacıylae alan internet servislerinin süratli geliştirilmesine imkan tanır.Çoklu bulut hizmetleri, Python’un nesne modeli ile Apache Libcloud kullanılarak yönetilebilir.NumPy, Pandas ve Matplotlib, matematik ve istatistiksel prosedürleri süratlandırır ve bilgilerin görselleştirilmesini kolaylaştırır.Python’u Alt Seviyeye Düşüren Genellikleri
C #, Java ve Go uygulamalama dilleri gibi Python da toplanan hafıza idaresine sahiptir. Yani uygulamacı, nesneleri izlemek ve bırakmak amacıyla kod yapmak mecburiyetinde kalmamasını sağlar. Normalde, çöp toplama arka planda otomatik olarak gerçekleşir, fakat bu bir performans bozukluğu meydana çıkarırsa, bunu manuel olarak tetikleyebilir ya da tamamiyle dönem dışı bırakabilirsiniz.
Python'un mühim bir tarafı dinamizm bir yapıya sahip olmasıdır. Nesne tabanlı bir uygulamalama dili olarak kullanıldığı amacıyla dildeki her şey, işlevler ve modüller de dahil olmak üzere, nesne olarak ele alınır. Bu sayede sarfedilen nesneler üst seviye kod yazmayı çok daha kolay duruma getirir. Geliştiriciler komplike nesne manipülasyonlarını yalnızca birkaç satır kod ile gerçekleştirebilir ve hem de 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 yalnızca okunabilirlik amacıyla değildir; Python’un tüketiminde ki kod sıralamasının bir parçasıdır. Python derlemesi, denetim akışını göstermek amacıyla makul girintileri kullanmayan kod satırlarını reddeder.
Bu boşlukların tüketimi birtakım durumlarda zAhmetli bulunduğu amacıyla kullanıma yeni başlayanlar amacıyla bir problem olarak nitelendirilir. Fakat katı girinti kuralları, genel olarak göründüğünden çok daha az zor olan etmendir. Hem de görünümsel olarak daha okunabilir bir duruma gelmesine yardımcı olur.
C ya da Java gibi diller ile kıyaslandığında bir diğer potansiyel sıkıntı, Python'un parametre yazmayı nasıl ele aldığıdır. Varsayılan olarak Python, süratli kodlama amacıyla harika, fakat büyük kod tabanlarında problem yaratabilecek hareketli ya da "duck" denilen ara kod yazımını kullanır. Bununla beraber, Python son vakitlerde isteğe bağlı derleme-vakitı ipucu desteği ekledi. Bu sayede statik yazmadan yararlanabilecek projeler kullanabilir duruma getirilebilir.
Python Çok Mu Yavaş? Öyle Olmak Zorunda Değil!
Python ile ilgili söylenilen olumsuz söylentiler arasında yavaş olması yer almaktadır. Genel yönden değerlendirmek gerekirse, evet Python yavaştır. Python aracılığı ile oluşturulan uygulamalar genelde C / C ++ ya da Java'daki karşılık gelen uygulamalardan çok daha yavaş çalışır.
Neden bu kadar yavaş? Derleme uygulamalarının satır satır kodları analiz etmesinden kaynaklı olarak bu hal yavaş senkronize gerektirir. Python'da yer alan nesneler sarfedilen kodlar aracılığı ile belirlendiği amacıyla, derlendiğinde bile, dil amacıyla süratini optimize etmeyi zorlaştırması gerçeğidir. Bununla beraber, Python’un sürati, göründüğü kadar mühim bir husus 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 vakit yavaş olmaz. Pek çok Python uygulaması yavaştır, zira Python'da yer alan ve ya üçüncü doğrultu standart kütüphanelerdeki vazifeleri düzgün bir şekilde içe aktaramazlar. NumPy ve Pandas gibi kütüphaneleri kullanarak matematik ve istatistik prosedürleri şaşırtıcı bir şekilde artırılabilir ve PyPy çalışma vakitı, fazlası Python uygulaması amacıyla farkedilir miktarda sürat sağlar.
Genel olarak uygulamacılar arasında yer alan bir söz vardır. Programın %90'ı işlevselliğidir, geri kalan %10'u ise uygulamanın kodlarıdır. %10'luk dilimi optimize ettiğinizde uygulamanın süratlanması gerektiğince başarılı olacaktır. Python ile, Cython ya da Numba gibi projeleri kullanarak bu yüzde 10'unu C'ye hem de assembly diline dönüştürebilirsiniz. Fakat meydana çıkan sonuç, C'de oluşturulan uygulamaa göre biraz daha yavaş bir kullanım sergiler, ama C'nin hafıza mikroidaresi özelliği gözardı edildiğinde C ile yarışabilecek potansiyele sahiptir.
Geliştirici Süresi Genel Olarak Makine Süresini Yener
Ya da diğer bir şekilde söylemek gerekirse: Birçok vazife amacıyla, geliştirme sürati yürütme süratini yener.
Aynı uygulamanın hem Python ile hemde diğer bir dilde çalışma vakitleri değişiklik gösterir. Mesela Python'da uygulama 6 saniyede aktif duruma gelir, diğer bir dilde bu vakit 1 saniyeye kadar düşmektedir. Fakat bir geliştiricinin Python arayüzün bir uygulaması oluşturması on dakikasını alırken, aynı uygulaması diğer platformda oluşturması saatlerini alabilir. Python uygulamanının yürütülmesinde kaybedilen vakit miktarı, geliştirme vakitcinde kaydedilen vakitten daha az bulunduğu amacıyla daha makuldir.
Açıkçası bir ticaret uygulaması gibi yüksek verimli, düşük eş vakitlılık gerektiren istekleri olan uygulamalar yazarken bu daha az doğrudur. Fakat fazlası sıradan uygulamalar amacıyla, sistem idaresinden makine öğrenmeye kadar uzanan alanlarda, Python yeteri kadar süratli bulunduğunu kanıtlayacaktır.
Hem de, Python'un sağladığı esneklik ve gelişme sürati, diğer dillerde elde etkesi daha zor ve vakit alıcı olan uygulama geliştirmelerde güzel bir ismim olabilir.
Geliştirme sürati ve uygulamalayıcı rahatlığı ön planda olacaksa ya da makinenin prosedür sırası arka planda olacaksa, Python her iki halde da yani geliştiricinin rahat olarak işlevini gerçekleştirmesine yardım ederek süratli bir uygulama meydana getirmek amacıyla en iyi vasıta olabilir.
Siz de Python Yazılım Eksperi olmak ister misiniz? Hemen Python eğitimlerimize kaydolun!