Python, 2003 yılından bu yana TIOBE Programlama Topluluğu Endeksi’nde sürekli olarak en popüler on programlama dili arasında yer alıyor. Ekim 2021 itibarıyle de en popüler dil oldu (Java ve C’nin önünde). Bunun yanında, 2007, 2010, 2018 ve 2020 yıllarında Yılın Programlama Dili (“bir yıl içinde reytinglerde en yüksek artış” için) seçildi (bunu dört kez yapan tek dil). Bu popülerliğe Python’un hızı ve yazım kolaylığı destek veriyor. Biraz da bu nedenle Python ile neler yapılabileceğinin pek sınırı bulunmuyor.
Python, dize manipülasyonu ve bir sözlükte arama içeren programlama problemleri için C ve Java gibi geleneksel dillerden daha üretkendir. Hatta, bellek tüketiminin genellikle “Java’dan daha iyi olduğu ve C veya C ++’dan da kötü olmadığı” söylenebilir.
Peki Python programlama dili nerelerde kullanılır ve Python diliyle ile neler yapabiliriz? Python kullanan büyük kuruluşlar arasında Wikipedia, Google, Yahoo!, CERN, NASA, Facebook, Amazon, Instagram ve Spotify gibi büyük şirketler bulunuyor. Sosyal haber ağı sitesi Reddit ise çoğunlukla Python ile yazılmıştır.
Python bilmek ne işe yarar?
Ya da daha basit bir şekilde sormak gerekirse neden Python öğrenmelisiniz? Python’un programlama dünyasında önemli bir yer tuttuğu giriş kısmında görülse de Python’un avantajından bazılarını dile getirmekte yarar var. Böylece Python öğrendikten sonra neler yapabileceğimizi görebiliriz ya da Python öğrenmenin sizin için mantıklı olup olmadığına bakabiliriz.
- Kod okuma ve öğrenme kolaylığı
- Küçük veya büyük projeler için çok üretken
- Etkileyici bir dil. “Python benim beynim gibi çalışıyor” diyebilirsiniz.
- Dinamik yazım, derleyici ile uğraşmak için sıfır zaman harcayacağınız anlamına gelir.
- Geniş bir standart kütüphane, genellikle ihtiyacınız olan araçların parmaklarınızın ucunda olduğu anlamına gelir.
- Üçüncü parti paketlerin (PIL, Numpy, NLTK, Django) kararlılığı, büyük problem alanlarının genellikle iyi desteklendiği anlamına gelir.
- Açık kaynak uygulaması, satıcı yardım masasında sürünmek zorunda kalmayacağınız, cevapları kendiniz bulabileceğiniz ve geniş bir kullanıcı topluluğundan çözümler alabileceğiniz anlamına gelir.
Python Nerelerde Kullanılır?
Genel amaçlı bir programlama dili olarak Python, birden çok şey için kullanılabilir. Dolayısıyla Python ile neler yapabiliriz sorusunun cevabı oldukça kapsamlı. Python, küçük, büyük, çevrimiçi ve çevrimdışı projeler için kolayca uygulanabilir. Python kullanmak için en iyi seçenekler, kabaca, web geliştirme, basit komut dosyası hazırlama ve veri analizidir diyebiliriz. Detaylara geçmeden önce, genel olarak, Python programlama dili ile ne gibi projelerin yapıldığına bir göz atalım. Böylelikle Python’un nerelerde kullanıldığına dair bir fikir sahibi olalım:
Python, Apache web sunucusu için mod_wsgi aracılığıyla web uygulamaları için bir komut dosyası dili olarak hizmet verebilir. Web Sunucusu Ağ Geçidi Arayüzü ile bu uygulamaları kolaylaştırmak için standart bir API desteği sağlar. Django, Pylons, Pyramid, TurboGears, web2py, Tornado, Flask, Bottle ve Zope gibi web frameworkleri, karmaşık uygulamaların tasarımı ve bakımı konusunda geliştiricileri destekler. Pyjs ve IronPython, Ajax tabanlı uygulamaların istemci tarafını geliştirmek için kullanılabilir. SQLAlchemy, ilişkisel bir veritabanına veri eşleyici olarak kullanılabilir. Twisted, bilgisayarlar arasındaki iletişimi programlamak için bir çerçevedir ve (örneğin) Dropbox tarafından kullanılır.
Python ile ayrıca özelleşmiş kütüphaneler oluşturulabilir. NumPy, SciPy ve Matplotlib gibi kütüphaneler Python’un bilimsel hesaplamada etkin bir şekilde kullanılmasına olanak tanır. Biopython ve Astropy gibi özel kütüphaneler alana özgü işlevsellik sağlar. SageMath, Python’da programlanabilen bir not defteri arayüzüne sahip bir bilgisayar cebiri sistemidir: kütüphanesi cebir, kombinatorik, sayısal matematik, sayı teorisi ve kalkülüs dahil olmak üzere matematiğin birçok yönünü kapsar. OpenCV, bilgisayarla görme ve görüntü işleme için zengin özelliklere sahip Python bağlarına sahiptir.
Python ile neler yapılacağına önemli bir örnek olarak yapay zeka projelerini verebiliriz. Python, TensorFlow, Keras, Pytorch ve Scikit-learn gibi kütüphanelerin yardımıyla yapay zeka projelerinde ve makine öğrenimi projelerinde yaygın olarak kullanılır. Modüler bir mimariye, basit sözdizimine ve zengin metin işleme araçlarına sahip bir betik dili olarak Python, doğal dil işleme için sıklıkla kullanılmaktadır.
Python, 2D oyunlar yapabilen Pygame gibi kütüphanelerle oyun oluşturmak için de kullanılabilir.
Python, Abaqus gibi sonlu elemanlar yöntemi yazılımı, FreeCAD gibi 3B parametrik modelleyici, 3ds Max, Blender, Cinema 4D, Lightwave, Houdini, Maya, modo, MotionBuilder, Softimage gibi 3B animasyon paketleri, görsel efekt kompozitörü Nuke, GIMP, Inkscape, Scribus ve Paint Shop Pro gibi 2B görüntüleme programları ve scorewriter ve capella gibi müzik notasyon programları dahil olmak üzere birçok yazılım ürününe bir komut dosyası dili olarak başarıyla yerleştirilmiştir. GNU Debugger, C++ konteynerleri gibi karmaşık yapıları göstermek için Python’u güzel bir yazıcı olarak kullanır. Esri, Python’u ArcGIS’te komut dosyaları yazmak için en iyi seçim olarak tanıtmaktadır. Ayrıca çeşitli video oyunlarında da kullanılmıştır ve Google App Engine’de mevcut üç programlama dilinden ilki olarak kabul edilmiştir, diğer ikisi Java ve Go’dur.
Python ile yapılmış uygulamaların tüm listesi bu olmasa da, kabaca Python ile yapılabilecekler böyle. Aşağıda Python ile yapabileceğiniz birkaç örneğe bakalım:
Web Geliştirme:
Birçok karmaşıklık düzeyinde web uygulamaları oluşturmak için Python kullanabilirsiniz. Pyramid, Django ve Flask dahil olmak üzere birçok mükemmel Python web kütüphanesi bulunur.
Veri Analizi:
Python veri bilimcileri için önde gelen dilidir. Python’un popülerliği bu alan sayesinde büyüdü desek yanlış olmaz. Bu alanda çalışmamızı kolaylaştıtran NumPy, Pandas, Matplotlib ve Seaborn gibi mükemmel kütüphanelere sahiptir.
Yapay zeka:
Önceki yıllara ait verilere göre müşteri memnuniyetini tahmin edebileceğiniz veya hangi faktörlerin ev fiyatlarını etkileyeceğini ya da sonraki birkaç gün boyunca hisse senetlerinin nasıl olacağını bilmek ister misiniz? Python kullanarak tüm bunların, ve daha fazlasının, analizini yapabilirsiniz. Scikit-Learn, NLTK ve TensorFlow gibi makine öğrenme algoritmalarını uygulayan birçok harika kütüphane vardır.
Görüntü İşleme:
Opencv ve Python ile yüz algılama, renk algılama gibi birçok ilginç şeyi yapabilirsiniz.
Raspberry Pi ile Nesnelerin İnterneti:
Raspberry Pi, eğitim amacıyla geliştirilen ve kendin-yap felsefesini benimseyen küçük bir bilgisayar. Hobi uygulamaları sayesinde muazzam bir popülerlik kazanan bu bilgisayar ile. bir robot inşa edebilir ve tüm evinizi otomatikleştirebilirsiniz. Pi’yi, çeşitli eylemleri gerçekleştirmek ve/veya çevreye tepki vermek için tasarladığınız bir robotun beyni olarak kullanabilirsiniz. Pi kodlaması Python kullanılarak yapılabilir. Burada yapacağınız şeyler sonsuz olacaktır!
Oyun Geliştirme:
Pygame modülünü kullanarak oyun oluşturabilirsiniz. Python’u, temel olarak, oyun mantığını yazmak için kullanırsınız. PyGame uygulamaları Android cihazlarda da çalışabilir.
Webden Veri Toplama:
Bir web sitesinden veri toplamanız gerekiyorsa, ancak verilere ulaşacağınız bir API bulunmuyorsa Python’u veri toplamak için kullanın.
Scripts Yazma:
Elle bir şey yapıyorsanız ve sürekli tekrarlanan şeyleri otomatikleştirmek istiyorsanız, Python tam size göre olabilir. Dilin temellerini bildiğinizde işleri otomatikleştirmeniz zor olmaz.
Tarayıcı Otomasyonu:
Python Selenium tarayıcıyı penceresi açmak veya bir Facebook durumu yayınlamak gibi bazı basit şeyleri gerçekleştirebilirsiniz.
Arayüz Geliştirme:
Tkinter veya PyQt gibi Python modüllerini kullanarak bir GUI uygulaması (desktop uygulaması) oluşturun.
Hızlı prototipleme:
Pythonda, hemen hemen her şey ile ilgili kütüphane bulunur. Hızlı bir şekilde bir (düşük performansa sahip, genellikle daha az güçlü) prototip oluşturmak için kullanılabilir. Python, aynı zamanda, büyük şirketler ve start-uplar için de yeni ürünler oluşturmak açısından harikadır.
Python çok farklı projelerde kullanılabilir. Yeni bir dil arayan bir programcıysanız, popülerlikte dorukta olan biri dili istersiniz. Programlamaya yeni başlayan biri iseniz, Python hızlı ve kolay olması açısından mükemmel bir seçimdir.
Neden Python’u seçmelisiniz?
Python, Django, Pylons, Flask gibi birçok framework ile web geliştirmek için kullanılır. Qt, GTK, Tk ve diğerleri ile GUI yapmak için Python kullanabilirsiniz.
Web geliştirmeye başlamak istiyorsanız, ilk olarak Django’yu tavsiye ederiz.
Python kullanan uygulamalara bakalım:
- Google App Engine
- YouTube
- Civilization (oyun serisi)
- Dropbox.
- SciPy
- pywinauto
- django
Daha detaylı bir listeye python sitesinden ulaşabilirsiniz. Peki bu şirketler ve uygulamalar neden python kullanıyorlar? Bunun için Python özelliklerine bakalım.
Python Özellikleri
Python, hızlı olmak üzere tasarlanmış, dinamik, güçlü bir syntaxa sahip, nesne odaklı ve çok amaçlı bir programlama dilidir (öğrenmek, kullanmak ve anlamak için). Tüm bu özellikleri temiz ve düzgün bir şekilde sentezler.
- Python dinamik syntaxa sahiptir: değişken isim için bir tür (örneğin integer) ilan etmenize gerek yoktur. Böylece ilk tanımlama sonrasında aynı türden değer atamak zorunda olmazsınız. Bunun yerine, değişken ismi verirsiniz ve istediğiniz bir değere bağlarsınız. a = 5 ile a değişkenini, integer türünde 5 değerine tanımlarsınız. Daha sonra, a = “merhaba” ile aynı değişkeni merhaba içeren bir dizeye atarsınız. Statik tipli dillerde, önce bir int a= 5 tanımlamanız gerekir, ancak daha sonra a= merhaba ataması hata oluşturur. Bir yandan, bu her şeyi daha öngörülemez hale getirir. Öte yandan ise, statik tipli dillere göre bazı işlemleri yapmayı çok daha kolay hale getirir.
- Python güçlü bir syntaxa sahiptir. a = “5” (değeri 5 olan dize) ifadesi yazıldığında, a değişkeni bir sayıya dönüştürülmez. Python’daki her tip dönüşümü açıkça yapılmalıdır. Bu, örneğin, Perl veya Javascript’den farklıdır. Bu dillerde
"merhaba" + 5
ifadesini yazdığınızda"merhaba5"
değerini alırsınız. - Python, sınıf tabanlıdır, sınıf-merkezli mirasa sahiptir. Pythonda her şey birer nesnedir (sınıflar, işlevler, modüller vb. de dahil). Böylece her şey bir argüman olarak yöntemlere geçirilebilir.
- Python çok amaçlıdır: belirli bir hedefe yönelmenize gerek olmaz (örneğin istatistikçilerin R kullanması veya web programlama için PHP gibi). C programlama diline çok kolay entegre edilen modüller ve kütüphaneler ile genişletilir.
- Python, girinti kullanmaya zorlar. Python’da kontrol parantezleri yoktur. Kod blokları girinti seviyesi ile tanımlanır. Bir çok programcı için büyük bir dezavantaj gibi görülmesine rağmen, kodu okumak veya görsel olarak hoş bir kodda çalışmak doğru sonuca kolayca ulaşmanızı sağlar.
- Kod bayt koduna girilir ve ardından sanal bir makinede çalıştırılır. Bu, önceden doldurulmuş kodun platformlar arasında taşınabilir olduğu anlamına gelir.
Web uygulamalarında Python kullanımı
YouTube Python’u çoğu alanda kullanır, ve belki de Python kullanımının en iyi örneklerinden biridir. Web’de Python’un başarılı bir kullanımı da Google App Engine‘dir.
Bununla birlikte, Python’u web için kullanacaksanız bir framework kullanmak çoğu işinizi kolaylaştırır. Django bu amaç için çok iyi olabilir. Güçlü bir döküman ve harika bir topluluğa sahiptir. Herhangi bir mimariyi kullanmanıza zorlamaz.
XSS’ye karşı varsayılan olarak korumalıdır ve büyük bir ORM arayüzüne sahip olduğundan basit SQL enjeksiyon hatalarının şansı çok azdır. Ayrıca CSRF saldırılarına karşı yerleşik korumaya sahiptir. PHP de güvensiz değildir ama Django geliştiricilere çok daha fazla fırsat verir.
Ayrıca Pinax gibi şaşırtıcı eklentileri vardır ve temel eklentiler her sürüme entegre edilir.
Bunun yanında güzel bir dilde kodlamanınn getirdiği psikolojik faydaları da unutmamalısınız.
Django, Python kullanmanın başlıca avantajlarından biridir diyebiliriz. Alan adınızı, sınıflarınızı kodlayın. Her şey bu kadar. ORM’iniz hazır ve artık UI’a odaklanabilirsiniz. Yerleşik templating dili ile tasarımınızı kolayca yaparsınız. Üzerine bir de yerleşik yönetici arayüzü atabilirsiniz.
Büyük projelerde Python kullanabilir miyiz?
Google bir çok uygulamada Python kullanır. Sadece buna bakarak bile büyük uygulamar için Pythonun hazır olduğunu söyleyebiliriz.
Büyük uygulamalarda Python kullanmak gerçekten zevklidir. Diğer kurumsal popüler dillere kıyasla:
- Büyük bir C++ projesinde çalışmışsanız, derleme süresinin ne derecede fazla zamana mal oldduğunu bilirsiniz
- Okumayı kolaylaştıran özlü ve temiz bir syntax yapısına sahiptir. Böylece bir başkasının kodunu okurken veya uzun süre önce yazdığınız kod için daha az zaman kaybedersiniz
- Temel düzeyde taşınabilirlik; uygulamanızı birden fazla platformda çalıştırmak önemliyse kesinlikle yardımcı olur
- Çoğu şey için yeterince hızlıdır. Hızdan kaybettiğiniz zamanlarda ise, C seviyesine Cython ve numpy gibi araçlarla ulaşabilirsiniz. Performans-kritik bir uygulama için dil seçerken dikkate alınması gereken önemli bir nokta, gerektiğinde C seviyesine erişimi nasıl kolayca kazanabileceğinizdir. Python bu açıdan harikadır.
Bununla birlikte, sihirli bir dil de değildir. Diğer dillerde büyük projeler için kullanılan aynı teknikleri kullanmanız gerekir: TDD, temiz OO tasarımı, vb.
Öte yandan Python büyük projelerde kullanılabilir mi sorusunun cevabı, “büyük uygulama”dan neyi kastettiğimizdir. Python, inanılmaz karmaşık sistemler için bir omurga olarak çalışabilir ve bunu çok zarif bir şekilde yapar (sadece Twisted & Django’nun ne kadar büyük ama iyi tasarlanmış olduğuna dair bir göz atın). Ancak Python’da diğer araçlar gibi başka bir araçtır. Uygulama alanınıza uygun olabilecek veya olmayan performans açıklıklarını içerir.
Karmaşık hesaplamaları 1000Hz’den fazla çalıştırmanız gereken yüksek performanslı bir uçuş simülatörü oluşturmak istiyorsanız, Python muhtemelen tüm proje için doğru bir seçim olmayacaktır.
Hobi olarak Python öğrenebilir miyim?
Hobi olarak programlama öğrenmek istiyorsanız ve çok da zamanınız yoksa python doğru bir seçim mi? Veya Python ile basit neler yapılabilir?
- python, tipik bir programcının zaman içinde yapabileceği çoğu şeyi yapmasına yetecek kadar güçlü mü? Ben tabletop oyunları için kullanıcı girişine dayanan karmaşık istatistik jeneratörleri gibi şeyler akılda bulundurun, küçük oyunlar, otomatik kurulum süreçleri ve etkileşimli web siteleri oluşturun, ancak bu çizgiler boyunca muhtemelen yüz şeyler oluşturun
Kesinlikle. Daha fazla bilgi için EveOnline oyununa bir göz atın. Sonra, pygame kütüphanesine bakın.
- Python ağ işlerini iyi bir şekilde halleder mi?
Evet. Twisted framework‘u kullanan Python uygulama sayısına bakın.
- Ve diğer dillere kıyasla python ne durumda? python söylendiği kadar yaygın mı?
Evet. TIOBE index verilerine bir göz atın. Python %13 ile en popüler dil.
Dolayısıyla Python hobi olarak da birçok şeyi yapmak için oldukça güçlü. Java ve C++ gibi, genellikle, üçüncü kütüphanelere bağlı. Bir Java arka planından geliyorsanız Python’un eğlenceli olduğunu görebilirsiniz. İstatistikler ve otomasyon işleri yapabilirsiniz. UI uygulamaları geliştirebilirsiniz.
Aslında Python uygulamalarının geliştirilebileceği inanılmaz hız için bilinir.
Python ne kadar hızlı – ya da Python yavaş mı?
Ham performans açısından Python, Java, C# ve C/C++’dan daha yavaştır. Bununla birlikte, toplam bellek kullanımı, ilk başlangıç süresi vb. gibi kullanıcı için önemli olan diğer şeyler de vardır. Dolayısıyla çoğu şey için, Python yeterince hızlıdır.
Bu site, farklı programlama dillerini karşılaştırmanızı sağlar. Hız, bellek kullanımı, vb için basit grafikler ile bilgi alabilirsiniz.
İlgileniyorsanız, Python’un performansını CPython’un beş katına çıkarmak için çabalayan çok beklenen Unladen Swallow projesine de bir göz atabilirsiniz.