Sizlere dilim döndüğünce 1991 yılında Guido van Rossum tarafından geliştirilen ve ana feslefesi kod okunabilirliği olan Python programlama dilinin artan popülaritesinin nedenlerini açıklamaya çalışacağım. 2003 yılından itibaren en popüler 10 programlama dili arasına giriş yapan programlama dilinin popülaritesi doğrusal bir şekilde artıyor. Aşağıda 2003-2013 yılları arasında PYPL indeksi sonuçlarından oluşturulmuş grafiği göreceksiniz. PYPL (popularity of a programming language index) ilgili programlama dili üzerine ne kadar sıklıkla araştırma yapıldığını ortaya koyuyor. Elde edilen verilerin Google Trends’ten sağlandığı belirtiliyor. Guido van Rossum 2005-2012 yılları arasında Google bünyesinde çalışmış, Google’dan sonra Dropbox firmasında çalışmaya başlamış ve şu an Dropbox firmasında çalışmaya devam ediyor. Van Rossum’un 2005’te Google’da çalışmaya başlamasıyla birlikte Google’ın yoğun olarak Python programlama dilini kullanması Python programlama diline olan ilgiyi artırmıştır.
2017 Haziran itibariyle durum aşağıdaki gibi: (http://pypl.github.io/PYPL.html adresinden detaylı inceleyebilirsiniz)
Sitede Python’a artan rağbete de değinilmiş. Son 5 yılda Python ile ilgili araştırmalar yüzde 8,2 oranında artış yaşanırken PHP de yüzde 4,8’lik bir azalma meydana gelmiş.
Bir başka programlama dili popülaritesini inceleyen bir başka indeks olan TIOBE’n sonuçları da aşağıdaki gibi: Yine değişimin artı yönde olduğunu görüyoruz. TIOBE indeksi de o programlama dilinde çalışan mühendis sayısı, programlama diline yönelik dersler, arama motorlarında aranma sıklığı gibi parametrelerin birleşiminden oluşturuluyor. Burada dikkat edilmesi gereken bu indeks en iyi programlama dili veya programlama diliyle ne kadar çok kod yazıldığını belirlemeye yönelik değildir. Ayrıca stackoverflow sitesinin yaptığı ankette 2013’ten 2017’ye Python programlama dilinin popülerliği %21’lerden %32’lere çıkmış.
Buraya kadar Python programlama dilinin artan popülaritesini ortaya koyduk. Şimdi bu durumun nedenlerinden bahsedelim. Python programlama dili, öğrenmesi oldukça kolay olan, syntax olarak İngilizce diline oldukça yakın, dinamik bir dil olması sebebiyle oldukça esnek bir yapıya sahiptir, katı kuralları yoktur. Programlamaya yeni başlayanlar için alışması oldukça kolay ve eğlencelidir. Bu eğlence de programlama dilini öğrenmek için gerçekten önemli bir motivasyon. Ayrıca Python ismi sanıldığı gibi piton yılanından değil de İngiliz komedi grubu Monty Python’dan gelmektedir. (http://www.montypython.com/pythons) 2014 Haziran’da yapılan bir araştırmaya göre Amerika’da Bilgisayar Bilimi bölümlerinde öğrencilere başlangıç programlama dili olarak Python, Java’dan daha fazla tercih edilir hale gelmiş. İlk 10 üniversite içerisinde %80’i, 39 üniversite içerisinde 27’si (%69) Python’u programlamaya giriş dili olarak belirlemişler. Ülkemizde de İTÜ Fizik Mühendisliği bölümünden Berkin Malkoç “Temel Bilimler ve Mühendislik Eğitiminde Programlama Dili Olarak Python” adında bir bildiriye imza atmıştır. Python’un artan popülaritesinin altında kolay öğrenilmesinin yanı sıra, geniş bir kullanıcı topluluğuna sahip olması, bilimsel çalışmalara olanak vermesi, çok geniş ölçekte geliştirme yapılabilmesi, veri madenciliği işlemlerini yapabilmesi , derin öğrenme gibi yapay zeka uygulamalarının da geliştirilebilmesi nedeniyle popülaritesini arttırmıştır. Python R programlama dilinden sonra veri madenciliği için en çok kullanılan ikinci yazılım dilidir. Python StackOverflow’da en büyük 5. topluluğa sahip iken, GitHub’da en çok kullanılan 4. programlama dilidir. Meetup.com topluluğu olarak en büyük üçüncü kitle sahip programlama dilidir.
Python ile birçok geliştirmeler yapan Google’ın desteği de popülariteyi arttırmıştır. Wikipedia, Yahoo, CERN, NASA Python dilini kullanarak geliştirmeler yapmışlardır. Sosyal medya ağı sitesi Reddit tamamen Python diliyle yazılmıştır.
Python oldukça genel bir programlama dilidir. Web uygulamalarında servis geliştirmeden, veri madenciliğine, yapay zeka uygulamalarına, bilimsel hesaplama uygulamalarına, nesnelerin interneti uygulamalarına (IOT) yönelik geliştirmeler yapılabilir.
Python programlama dilinin kullanım alanları:
Web Uygulamaları Geliştirme
Django ve Pyramid gibi web frameworkları
Flask ve Bottle gibi micro-framework’ler
Plone ve django CMS gibi İleri seviye içeri yönetimi istemleri
Python’un standard kütüphaneleri birçok Internet protokolünü destekler:
HTML ve XML, JSON, E-mail processing, FTP, IMAP ve diğer Internet protokolleri
Socket programlama arayüzü oldukça kolaydır.
Ayrıca paketlerde daha kullanışlı kütüphaneler mevcuttur:
Requests gibi güçlü http istemci kütüphanesi
BeautifulSoup gibi HTML parse(ayrışımı)
Feedparser gibi RSS besleme kütüphanesi
Paramiko gibi SSH2 protokolünü adapte etme
Twisted Python Asenkron ağ programlama kütüphanesi
Python bilimsel ve numerik hesaplamalarda çokça kullanılır.
SciPy, NumPy,Matplotlib,SageMath matematik,bilim,mühendislik dallarına yönelik paketler
IPython Paralel progralama ve görselleştirmeye izin veren kolayca düzenlenebilen ve kaydedilebilen bir Shell
Yapay zeka uygulamaları:
Deepy, Caffe,OpenCV, Theano,TensorFlow, Sci-kit Learn, mlpy(Machine Learning Python), NLTK (Natural Language Toolkit), NeuroLab, PyMC
Nesnelerin İnterneti:
Raspberry Pi için temel programlama dili olarak belirlenmiştir.
MQTT Makineler arası bağlantı protokolü
Zerynth IoT ve Endüstri 4.0 uygulamalarına sahip framework
Veri Madenciliği (Data Mining) Uygulamaları:
Orange Veri analizi ve görselleştirme
PyData Python Veri Analiz Kütüphanesi
Pandas veri analizi ve modelleme
Referanslar
- https://cacm.acm.org/blogs/blog-cacm/176450-python-is-now-the-most-popular-introductory-teaching-language-at-top-u-s-universities/fulltext
- http://pypl.github.io/PYPL.html
- https://www.tiobe.com/tiobe-index/
- https://www.monitis.com/blog/why-python-is-becoming-so-popular/
- http://dataconomy.com/2015/01/python-packages-for-data-mining/
- http://ab.org.tr/ab12/kitap/malkoc_AB12.pdf
- Django https://www.djangoproject.com/
- Pylon http://pylonsproject.org/
- Flask http://flask.pocoo.org/
- BottlePy http://bottlepy.org/docs/dev/
- Plone https://plone.org/
- Markup https://docs.python.org/3/library/markup.html
- JSON https://docs.python.org/3/library/json.html
- FTP protocol https://docs.python.org/3/library/ftplib.html
- Internet Protocols https://docs.python.org/3/library/internet.html
- Scokets https://docs.python.org/3/howto/sockets.html
- Requests https://pypi.python.org/pypi/requests/
- BeautifulSoup https://www.crummy.com/software/BeautifulSoup/
- Feedparser https://pypi.python.org/pypi/feedparser
- Paramiko https://pypi.python.org/pypi/paramiko/
- Twisted Matrix http://twistedmatrix.com/trac/
- Sci-Py https://scipy.org/
- Pandas http://pandas.pydata.org/
- IPyhton http://ipython.org/
- Deepy https://pypi.python.org/pypi/deepy
- Caffe http://caffe.berkeleyvision.org/installation.html
- OpenCV http://docs.opencv.org/
- Theano http://deeplearning.net/software/theano/
- TensorFlow https://www.tensorflow.org/
- Sci-kit Learn http://scikit-learn.org/stable/
- mlpy http://mlpy.sourceforge.net/
- NLTK http://www.nltk.org/
- NeuroLab https://pythonhosted.org/neurolab/
- pymc https://pymc-devs.github.io/pymc/
- Orange https://orange.biolab.si/
- https://www.raspberrypi.org/documentation/usage/python/
- mqtt http://mqtt.org/
- Zerynth https://www.zerynth.com/
- PyData https://pydata.org/
Atahan CEYLAN